%PDF- %PDF-
Direktori : /backups/db_backups/old_mysql/xwiki/ |
Current File : //backups/db_backups/old_mysql/xwiki/xwikilargestrings.sql |
-- MariaDB dump 10.19 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: xwiki -- ------------------------------------------------------ -- Server version 10.6.12-MariaDB-0ubuntu0.22.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `xwikilargestrings` -- DROP TABLE IF EXISTS `xwikilargestrings`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `xwikilargestrings` ( `XWL_ID` bigint(20) NOT NULL, `XWL_NAME` varchar(255) NOT NULL, `XWL_VALUE` longtext DEFAULT NULL, PRIMARY KEY (`XWL_ID`,`XWL_NAME`), KEY `XWLS_NAME` (`XWL_NAME`), CONSTRAINT `FK38o52utm62kct6bou41whwk74` FOREIGN KEY (`XWL_ID`, `XWL_NAME`) REFERENCES `xwikiproperties` (`XWP_ID`, `XWP_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `xwikilargestrings` -- LOCK TABLES `xwikilargestrings` WRITE; /*!40000 ALTER TABLE `xwikilargestrings` DISABLE KEYS */; INSERT INTO `xwikilargestrings` VALUES (-9201104758838352722,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\n\nXWiki.UserWikiTab = Class.create({\n initialize : function () {\n this.addListeners();\n },\n\n addListeners : function() {\n var elements = $(\'wikis\') ? $(\'wikis\').childElements() : [];\n for (var i = 0; i < elements.length; ++i) {\n elements[i].down(\'.wikiActivity a\').observe(\'click\', this.onWikiClicked);\n }\n },\n\n onWikiClicked : function (event) {\n event.stop();\n var element = Event.element(event);\n var wikiId = element.up(\'li\').id;\n new Ajax.Request(\"$xwiki.getURL(\'WikiManager.WikiActivityServiceCode\')\", {\n parameters: {\n \'xpage\' : \'plain\',\n \'wikiName\' : wikiId\n },\n\n onCreate : function() {\n $(\'wikiActivityColumn\').innerHTML = \'<span class=\"loading\">Loading...</span>\';\n }.bind(this),\n\n onSuccess : function(response) {\n $(\'wikiActivityColumn\').innerHTML = response.responseText;\n require([\'jquery\', \'XWikiNotificationsMacro\'], function ($, XWikiNotificationsMacro) {\n var macro = new XWikiNotificationsMacro($(\'#wikiActivityColumn .notifications-macro\'));\n macro.load(0);\n });\n }.bind(this),\n\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n $(\'wikiActivityColumn\').innerHTML = \'<span>Failed to load activity stream. Reason:</span><br/><span>\' + failureReason + \'</span>\';\n }.bind(this),\n\n on0: function (response) {\n response.request.options.onFailure(response);\n }.bind(this),\n\n onComplete : function() {\n }\n });\n }\n});\n\nvar init = function() {\n new XWiki.UserWikiTab();\n};\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));'),(-9153078679211246803,'codeToExecute',''),(-9063123582780901428,'code','require([\'jquery\', \'xwiki-events-bridge\'], function($) {\n /**\n * Mark disabled and inactive user profiles.\n */\n var maybeMarkDisabled = function(row, rowData) {\n // We use the abstract comparison (!=) because the property value might come as a string.\n if (rowData && rowData.active_value != 1) {\n row.find(\'td.doc_name\').addClass(\'user disabled\');\n }\n };\n // Update the markers when the live table rows are refreshed.\n $(document).on(\'xwiki:livetable:userdirectory:newrow\', function(event, data) {\n maybeMarkDisabled($(data.row), data.data);\n });\n // Initialize the markers. We need this because the \'newrow\' event might have been already triggered.\n var usersLiveTable = window[\'livetable_userdirectory\'];\n if (usersLiveTable) {\n $(\'table#userdirectory tr[data-index]\').each(function() {\n var row = $(this);\n var rowData = usersLiveTable.fetchedRows[row.data(\'index\')];\n maybeMarkDisabled(row, rowData);\n });\n }\n\n /**\n * Live preview when the User Directory settings are modified.\n */\n $(\'form.user-directory-settings\').change(function(event) {\n // Default on user-level configuration.\n var configDocument = XWiki.currentDocument;\n if (configDocument.page !== \'UserDirectory\' || configDocument.space !== \'Main\') {\n // Global configuration.\n configDocument = new XWiki.Document(\'UserDirectoryConfiguration\', \'XWiki\');\n }\n var url = configDocument.getURL(\'get\', \'customize=true\');\n var data = $(this).serialize();\n var oldLiveTableContainer = $(\'.xwiki-livetable-container\').addClass(\'loading\');\n // We can\'t use load() here because the live table has in-line script tags that have to be evaluated.\n $.get(url, data).done(function(html) {\n var newLiveTableContainer = $(\'<div/>\').html(html).find(\'.xwiki-livetable-container\');\n oldLiveTableContainer.replaceWith(newLiveTableContainer);\n });\n });\n\n /**\n * User scope filtering (for sub-wikis).\n */\n $(\'#userScopeFilter\').change(function(event) {\n var value = $(this).val();\n // The live table is recreated when an user directory setting is changed (live preview) so we can\'t cache the\n // reference to the live table instance.\n var usersLiveTable = window[\'livetable_userdirectory\'];\n var url = usersLiveTable.getUrl;\n if (url.search(\'userScope=\') >= 0) {\n // Replace the old value.\n if (value === \'local\') {\n url = url.replace(\'userScope=global\', \'userScope=local\');\n } else {\n url = url.replace(\'userScope=local\', \'userScope=global\');\n }\n } else {\n url = url + \'&userScope=\' + value;\n }\n usersLiveTable.getUrl = url;\n usersLiveTable.refresh();\n });\n});'),(-9051885897749820073,'async_context',''),(-9051885897749820073,'content','{{velocity}}\n#set ($discard = $xwiki.ssx.use(\'Panels.DocumentInformation\'))\n#set ($pages = $tdoc.includedPages)\n#largepanelheader($services.localization.render(\'panels.documentInformation.title\'))\n#if (\"$tdoc.locale\" == \'\' && $xwiki.isMultiLingual())\n; {{html}}<label for=\"xwikidoclanguageinput2\">$services.localization.render(\'panels.documentInformation.defaultLanguage\')</label>{{/html}}\n: {{html}}<input type=\"text\" id=\"xwikidoclanguageinput2\" name=\"defaultLanguage\" value=\"$!tdoc.defaultLocale\" size=\"30\"/>{{/html}}\n#end\n##----------------------------------\n## Display the wiki syntax combo box\n##----------------------------------\n#set ($discard = $xwiki.jsx.use($paneldoc.fullName))\n#set ($configuredSyntaxes = $services.rendering.getConfiguredSyntaxes())\n; {{html}}<label for=\"xwikidocsyntaxinput2\">$services.localization.render(\'panels.documentInformation.syntax\')</label>{{/html}}\n: {{html}}\n <select name=\"syntaxId\" id=\"xwikidocsyntaxinput2\">\n #set ($docSyntax = $tdoc.getSyntax())\n #foreach ($syntax in $configuredSyntaxes)\n <option value=\"$syntax.toIdString()\"#if($syntax.equals($docSyntax))selected=\"selected\"#end>$syntax.toString()</option>\n #end\n ## If the current document\'s syntax is not in the list of configured syntax, add it to the Select so that the user sees the Document\'s Syntax.\n #if (!$configuredSyntaxes.contains($docSyntax))\n <option value=\"$docSyntax.toIdString()\" selected=\"selected\">$docSyntax.toString()</option>\n #end\n </select>\n{{/html}}\n#if ($hasAdmin && $configuredSyntaxes.size() < 2)\n: [[$services.localization.render(\'panels.documentInformation.configureSyntaxes\')>>path:$xwiki.getURL(\'XWiki.XWikiPreferences\', \'admin\', \'editor=globaladmin§ion=Syntaxes\')]]\n#end\n##--------------------------------------------------------------------------\n; (% class=\"checkbox\" %){{html}}\n<label for=\"xhidden\"><input id=\"xhidden\" type=\"checkbox\" name=\"xhidden\" #if($tdoc.isHidden()) checked=\"checked\"#end value=\"1\"/>$services.localization.render(\'panels.documentInformation.hiddenDocument\')</label>\n<input name=\"xhidden\" type=\"hidden\" value=\"0\" />\n{{/html}}\n: #* Keep empty for HTML validation. *#\n\n##--------------------------------------------------------------------------\n#if($pages.size() != 0)\n ; $services.localization.render(\'panels.documentInformation.includesCount\', [$pages.size()])\n #foreach ($page in $pages)\n : [[$page>>$page]] [[[[image:icon:page_white_edit||alt=\"$services.localization.render(\'panels.documentInformation.editIncluded\', [$page])\"]]>>path:$xwiki.getURL($page, \'edit\')]]\n #end\n#end\n##--------------------------------------------------------------------------\n(% id=\"parserSyntaxes\" class=\"hidden\" %)[#foreach ($syntax in $services.rendering.availableParserSyntaxes)\"$syntax.toIdString()\"#if ($foreach.hasNext), #end#end](%%)\n(% id=\"rendererSyntaxes\" class=\"hidden\" %)[#foreach ($syntax in $services.rendering.availableRendererSyntaxes)\"$syntax.toIdString()\"#if ($foreach.hasNext), #end#end](%%)\n#panelfooter()\n{{/velocity}}'),(-9051885897749820073,'description','Displays and allows editing the document title and syntax, and lists the included documents.'),(-8914936393023623739,'groups','XWiki.XWikiAllGroup'),(-8914936393023623739,'users',''),(-8872313708571153004,'code','/* Show only the generic form while the page is loading. The other forms, which have editor specific configuration\n properties, will be moved into tabs by the JavaScript code. */\n#admin-page-content .codeToExecute > form,\n#admin-page-content > h1.wikigeneratedheader {\n display: none;\n}\n#admin-page-content .codeToExecute > form#wysiwyg {\n display: block;\n}'),(-8822788157530404358,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.pageMenu.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.pageMenu.contentB\', [\" $services.icon.render(\'more-vertical\') \"])\n{{/velocity}}'),(-8803610139128766566,'groups',''),(-8803610139128766566,'users','XWiki.XWikiGuest'),(-8802998659962860204,'code','#template(\'colorThemeInit.vm\')\n\n#admin-page-content h2.wikigeneratedheader,\n#admin-page-content .xform h2 {\n border-bottom: 1px solid $theme.borderColor;\n font-size: 150%;\n line-height: inherit;\n margin-bottom: 1em;\n}\n\n#admin-page-content h2.wikigeneratedheader:first-of-type,\n#admin-page-content .xform h2:first-of-type {\n margin-top: 0;\n}\n\n#admin-page-content label > input[type=\"checkbox\"],\n#admin-page-content label > input[type=\"radio\"] {\n vertical-align: bottom;\n}\n\n/**\n * Category Overview\n */\n\n.admin-category {\n list-style: none outside none;\n margin: 0 !important;\n float: left;\n}\n\n.admin-category li {\n clear: left;\n color: $theme.textSecondaryColor;\n margin: 0 1.5em 2em 0;\n overflow: hidden;\n}\n\n.admin-category strong {\n font-size: 1.44em;\n line-height: 2em;\n}\n\n.admin-category img {\n float: left;\n margin: 0 1em 0 0;\n}\n\n.admin-category .description {\n font-size: .9em;\n display: block;\n}\n\n/**\n * Users & Rights\n */\n\n/* Override general table styles. */\n/* TODO: Move to livetable.css */\n\n#userstable td, #groupstable td, #usersandgroupstable td, #alldocstable td {\n border-color: transparent;\n}\n\n#usersandgroupstable-filters #name {\n width: 65%;\n}\n\n.rights-settings {\n margin-top: 20px;\n margin-left: 5px;\n}\n\n.rights-settings dt {\n /* The labels for the general rights settings are long and thus look bad when displayed with bold text. */\n font-weight: normal;\n}\n\n.rights-settings dt input {\n vertical-align: top;\n}\n\n/**\n * Bootstrap\'s Accordion Menu\n */\n\n.admin-menu {\n /* Align the menu with the page title. */\n padding-left: 0;\n}\n\n.admin-menu .panel-heading.collapsed {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n\n.admin-menu a.panel-heading {\n display: block;\n font-size: 100%;\n}\n.admin-menu a.panel-heading:not(.collapsed) {\n background-color: $theme.menuBackgroundColor;\n color: $theme.menuLinkColor;\n}\n.admin-menu a.panel-heading:active,\n.admin-menu a.panel-heading:focus,\n.admin-menu a.panel-heading:hover {\n text-decoration: none;\n}\n\n.admin-menu .panel-heading > *:first-child {\n margin-right: .8em;\n}\n\n.admin-menu .panel-collapse > .list-group:last-child .list-group-item.last {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n\n.admin-menu .panel.noitems > .panel-heading {\n color: $theme.textSecondaryColor;\n}'),(-8789460963672918823,'async_context',''),(-8789460963672918823,'code','{{velocity}}\n ## TODO: add a parameter to specify the style, list or livetable\n ## Get the number of documents to display\n #set ($limit = $xcontext.macro.params.get(\'count\'))\n #if (\"$!limit\" == \'\')\n ## 100 documents displayed by default if no value is specified\n #set ($limit = \'100\')\n #end\n #set ($limit = $mathtool.toInteger($limit))\n ## Compute the XWQL portion related to sorting, based on the passed \"sort\" parameter\n ## Valid values are \"creationDate\", \"modificationDate\" and \"docName\"\n #set ($sort = $xcontext.macro.params.get(\'sort\'))\n #if (\"$sort\" == \'docName\')\n ## Sorting alphabetically\n #set ($sortQuery = \'doc.name asc\')\n #elseif (\"$sort\" == \'modificationDate\')\n ## Sorting by update date\n #set ($sortQuery = \'doc.contentUpdateDate desc\')\n #else\n ## Sort by creation date by default\n #set ($sortQuery = \'doc.creationDate desc\')\n #end\n ## Get the space to display the documents for\n #set ($spaceParam = $doc.space)\n #set ($spaceMacroParam = $xcontext.macro.params.get(\'space\'))\n #if (\"$!spaceMacroParam\" != \'\')\n #set ($spaceParam = $spaceMacroParam)\n #end\n #set ($docNames = $services.query.hql(\"where doc.space=? order by $sortQuery\").addFilter(\'currentlanguage\').addFilter(\'hidden\').setLimit($limit).bindValues([${spaceParam}]).execute())\n {{html}}\n #displayDocumentList($docNames false []) \n ## Note: we pass an empty blacklistedSpaces list since we are used as a space dashboard, not a global dashboard\n {{/html}}\n\n #if ($docNames.size() == $limit)\n #set ($docCount = $services.query.xwql(\'where doc.space = :space\').bindValue(\'space\', $spaceParam).addFilter(\'unique\').count())\n #set ($remaining = $mathtool.sub($docCount, $limit))\n #if ($remaining > 0)\n (% class=\"documentListMore\" %) (((\n // $services.localization.render(\'xe.dashboard.space.remainingDocumentsInSpace\', [$remaining, $spaceParam])\n [[$services.localization.render(\'xe.dashboard.space.visitSpaceIndex\')>>Main.SpaceIndex?space=${escapetool.url($spaceParam)}]] //\n )))\n #end\n #end\n ##\n ## Document creation.\n ##\n ## Only if the current user has edit rights.\n #if ($hasCreatePage)\n {{html}}\n <ul class=\"xlist\">\n <li class=\"page create\"><a href=\"$doc.getURL(\'create\')\">$services.localization.render(\'platform.index.spaceIndexDocumentListCreate\')</a></li>\n </ul>\n {{/html}}\n #end\n{{/velocity}}\n'),(-8789460963672918823,'contentDescription',''),(-8789460963672918823,'contentJavaType',''),(-8789460963672918823,'description','Lists documents in a space.'),(-8758378388097490028,'description','The optional menu type determines the menu appearance and behaviour. The supported values are: horizontal (default value) and vertical.'),(-8752557532974133411,'description','Default selected visibility when the macro is displayed.\n\nIf not specified, it is determined automatically based on the page where the macro is used.\n\nValid values are: \'everyone\', \'followers\', \'group\' or \'user\'. '),(-8725920912565237621,'async_context',''),(-8725920912565237621,'content','{{velocity}}\n#panelheader($services.localization.render(\'panels.siblings.title\'))\n## Escape special characters in macro parameter values.\n#set ($homeName = $services.model.getEntityReference(\'DOCUMENT\', \'default\').name)\n#set ($spaceHome = $services.model.createEntityReference($homeName, \'DOCUMENT\', $doc.documentReference.parent))\n#set ($openTo = $services.model.serialize($spaceHome, \'default\').replaceAll(\'([~\"])\', \'~$1\'))\n{{documentTree showTranslations=\"false\" showAttachments=\"false\" compact=\"true\" root=\"document:$openTo\" /}}\n#panelfooter()\n{{/velocity}}'),(-8725920912565237621,'description','Displays all Sibling pages of the current page'),(-8713921511534245910,'code','require([\'jquery\'], function($) {\n $(document).on(\'show.bs.modal\', \'.video-modal\', function(event) {\n $(this).find(\'.modal-body > video\').each(function() {\n // Play it from the start.\n this.currentTime = 0;\n this.play();\n });\n });\n});'),(-8693738095701588084,'async_context','icon.theme|locale|request.wiki|user|wiki'),(-8693738095701588084,'content','{{velocity output=\"false\"}}\n#macro (displayAppPanelEntry $params)\n #if ($params.icon.startsWith(\'icon:\'))\n #set ($icon = $services.icon.renderHTML($params.icon.substring(5)))\n #else\n #set ($icon = $services.rendering.render($services.rendering.parse(\"image:${params.icon}\", \'xwiki/2.1\'),\n \'xhtml/1.0\'))\n #end\n <li>\n <a href=\"$xwiki.getURL($params.target, \'view\', \"$!params.targetQueryString\")\" title=\"$escapetool.xml($params.label)\">\n <span class=\"application-img\">$icon</span>\n <span class=\"application-label\">$escapetool.xml($params.label)</span>\n </a>\n </li>\n#end\n\n#macro (maybeDisplayAppPanelEntry $uix $configDoc)\n #set ($params = $uix.getParameters())\n #set ($blackListObj = $configDoc.getObject(\'PanelsCode.ApplicationsPanelBlackListClass\', \'applicationId\', $uix.id))\n #set ($targetReference = $services.model.resolveDocument($params.target))\n #if (!$blackListObj && \"$!params.icon\" != \'\' && \"$!params.label\" != \'\' && \"$!params.target\" != \'\'\n && $services.security.authorization.hasAccess(\'view\', $targetReference))\n #displayAppPanelEntry($params)\n #end\n#end\n\n#macro (displayAppPanelEntries $extensionPointId $configDoc)\n ## Get all UIX and sort them\n #set ($apps = [])\n #foreach ($uix in $services.uix.getExtensions($extensionPointId, {\'sortByParameter\': \'label\'}))\n #set ($app = {\'uix\': $uix})\n #set ($orderObj = $configDoc.getObject(\'PanelsCode.ApplicationsPanelOrderClass\', \'applicationId\', $uix.id))\n #if ($orderObj)\n #set ($discard = $app.put(\'order\', $orderObj.getValue(\'order\')))\n #else\n ## if order is not set, set MAX_INTEGER\n #set ($discard = $app.put(\'order\', 2147483647))\n #end\n #set ($discard = $apps.add($app))\n #end\n ## Sort the apps\n #foreach ($app in $sorttool.sort($apps, \'order\'))\n #maybeDisplayAppPanelEntry($app.uix, $configDoc)\n #end\n#end\n{{/velocity}}\n\n{{velocity}}\n#set ($discard = $xwiki.ssx.use(\'Panels.Applications\'))\n#set ($discard = $xwiki.jsx.use(\'Panels.Applications\'))\n\n#panelheader($services.localization.render(\'panels.applications.title\'))\n\n{{html}}\n<ul class=\"applicationsPanel nav nav-pills nav-stacked\">\n ## Get the blacklist configuration\n #set ($configDoc = $xwiki.getDocument($services.model.createDocumentReference(\'\', \'PanelsCode\',\n \'ApplicationsPanelConfiguration\')))\n #displayAppPanelEntries(\'org.xwiki.platform.panels.Applications\' $configDoc)\n</ul>\n<ul class=\"applicationsPanel applicationsPanelMoreList nav nav-pills nav-stacked\">\n <li>\n <a href=\"$xwiki.getURL($services.model.createDocumentReference(\'\', \'XWiki\', \'XWikiPreferences\'), \'admin\',\n \'editor=globaladmin§ion=XWiki.AddExtensions\')\" class=\"applicationPanelMoreButton\" title=\"$services.localization.render(\'panels.applications.more\')\">\n <span class=\"application-img\">$services.icon.renderHTML(\'add\')</span>\n <span class=\"application-label\">$services.localization.render(\'panels.applications.more\')</span>\n </a>\n <div class=\"applicationPanelMoreContainer hidden\">\n <ul class=\"nav nav-pills nav-stacked\">\n #displayAppPanelEntries(\'org.xwiki.platform.panels.Applications.more\')\n </ul>\n </div>\n </li>\n</ul>\n{{/html}}\n\n#panelfooter()\n{{/velocity}}'),(-8693738095701588084,'description','Lists the available applications and provides shortcuts to install new ones or to create your own.'),(-8672536096752463541,'code','#template(\'colorThemeInit.vm\')\n\n#allattachments .mime {\n color: $theme.textSecondaryColor;\n font-size: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n}\n\n#allattachments .mime img {\n max-height: 32px;\n max-width: 48px;\n}'),(-8639332360768979384,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\n/**\n * Enhances the behaviour of an extension.\n */\nXWiki.WikiCreationStatusBar = Class.create({\n initialize : function () {\n // We run the progress bar only if the <div id=\"ui-progress\"> exists\n if ($(\'ui-progress\')) {\n this._callRefresh.bind(this).delay(1);\n }\n },\n _callRefresh : function () {\n // Document URL\n var document = new XWiki.Document(\'WikiCreationJobStatusService\', \'WikiManager\');\n var url = document.getURL(\'get\', \'outputSyntax=plain\');\n new Ajax.Request(url, {\n method: \'get\',\n parameters : {\'wikiId\': $(\'wikiId\').value},\n onSuccess : function(response) {\n var result = response.responseText.evalJSON(true);\n this._refresh(result);\n }.bind(this)\n });\n },\n _refresh : function (response) {\n if (response.status == \'FINISHED\') {\n $(\'ui-progress\').addClassName(\'hidden\');\n // We need to know if we have error\n if (response.error.length > 0) {\n $(\'errorMessage\').removeClassName(\'hidden\');\n $(\'cleanUp\').removeClassName(\'hidden\');\n } else {\n // Success\n $(\'successMessage\').removeClassName(\'hidden\');\n if (response.hasErrorLog) {\n $(\'errorlogMessage\').removeClassName(\'hidden\');\n }\n $(\'finalize\').removeClassName(\'hidden\');\n }\n }\n else {\n var progress = response.progress;\n if (progress != \'null\') {\n if (progress < 0)\n progress = 0;\n else if (progress > 1)\n progress = 1;\n $(\'wikicreation-progress-bar\').setStyle({width: (progress*100)+\'%\'});\n }\n this._callRefresh.bind(this).delay(1);\n }\n // Display logs\n var creationLogContainer = $(\'creation-log\');\n creationLogContainer.innerHTML = response.logs;\n creationLogContainer.firstDescendant().scrollTop=$$(\'.log-item-loading\')[0].offsetTop;\n }\n});\n\nvar init = function(event) {\n new XWiki.WikiCreationStatusBar();\n return true;\n};\n// When the document is loaded, trigger the Extension Manager form enhancements.\n(XWiki.domIsLoaded && init()) || document.observe(\"xwiki:dom:loaded\", init);\n\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));\n '),(-8606505774454879037,'codeToExecute',''),(-8576515884334838715,'async_context',''),(-8576515884334838715,'content','{{velocity}}{{html clean=\"false\"}}\n ##\n ## Application Index\n ##\n #set($applicationIndexRef = $services.model.createDocumentReference(\'\', \'Applications\', \'WebHome\'))\n #if ($services.security.authorization.hasAccess(\'view\', $applicationIndexRef))\n #template(\'drawer_macros.vm\')\n #drawerItem($xwiki.getURL($applicationIndexRef), \'th\', $escapetool.xml($services.localization.render(\'application.index.drawer\')), \'tmMainApplicationIndex\')\n #end\n{{/html}}{{/velocity}}\n'),(-8576515884334838715,'parameters','order=55000'),(-8506567570627168797,'async_context',''),(-8506567570627168797,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.quicklinks\'))\n#if ($xwiki.hasAdminRights())\n\n[[$services.localization.render(\'xe.panels.edit\')>>path:${xwiki.getURL(\'Panels.QuickLinks\', \'edit\')}]]\n#end\n#panelfooter()\n{{/velocity}}'),(-8506567570627168797,'description','Important Navigation Links'),(-8502917170642906784,'code','// Make sure the XWiki.index.trash.documents \'namespace\' exists.\nif (typeof XWiki == \"undefined\") {\n XWiki = new Object();\n}\nif (typeof XWiki.index == \"undefined\") {\n XWiki.index = new Object();\n}\nif (typeof XWiki.index.trash == \"undefined\") {\n XWiki.index.trash = new Object();\n}\nif (typeof XWiki.index.trash.documents == \"undefined\") {\n XWiki.index.trash.documents = new Object();\n}\n\n/**\n * Callback function used by the DeletedDocuments livetable for generating the HTML code needed to display an entry.\n * \n * @param row the JSON data corresponding to the entry to be displayed\n * @param i the index of the row in the list of entries\n * @param table the LiveTable javascript object\n */\nXWiki.index.trash.documents.displayEntry = function (row, i, table) {\n var tr = new Element(\'tr\'); // The resulting table row\n var pageTd = new Element(\'td\');\n var page = new Element(\'a\', {\'href\' : row.url}).update(row.fullname);\n pageTd.appendChild(page);\n if (row.language && row.language.trim().length != 0) {\n var language = new Element(\'span\').update(\'(\' + row.language.trim() + \')\');\n pageTd.appendChild(document.createTextNode(\' \'));\n pageTd.appendChild(language);\n }\n tr.appendChild(pageTd);\n tr.appendChild(new Element(\'td\').update(row.title));\n tr.appendChild(new Element(\'td\').update(row.date));\n var deleter = new Element(\'a\', {\'href\' : row.deleterurl}).update(row.deletername);\n tr.appendChild(new Element(\'td\').update(deleter));\n var batchId = new Element(\'a\', {\'href\' : row.batchId_url}).update(row.batchId);\n tr.appendChild(new Element(\'td\').update(batchId));\n var actions = new Element(\'td\', {\'class\' : \'itemActions\'});\n if(!row.alreadyExists) {\n if(row.canRestore) {\n if (row.causesOrphanedTranslation) {\n // Can not restore: It would cause the translation to be inaccessible from the UI until the main document is restored/created.\n var restore = new Element(\'a\', {\n \'href\' : row.originalUrl,\n \'class\' : \'tool cannot-restore\',\n \'title\' : \"$services.localization.render(\'platform.index.trashDocumentsActionsCannotRestoreCausesOrphanedTranslationTooltip\')\"\n }).update(\"$services.localization.render(\'platform.index.trashDocumentsActionsCannotRestoreText\')\");\n actions.appendChild(restore);\n } else {\n // Restore the document.\n var restore = new Element(\'a\', {\n \'href\' : row.restoreUrl,\n \'class\' : \'tool restore\',\n \'title\' : \"$services.localization.render(\'platform.index.trashDocumentsActionsRestoreTooltip\')\"\n }).update(\"$services.localization.render(\'platform.index.trashDocumentsActionsRestoreText\')\");\n actions.appendChild(restore);\n }\n }\n } else {\n // Can not restore: A document was already restored at that location.\n // TODO: Add an overwrite dialog here.\n var restore = new Element(\'a\', {\n \'href\' : row.originalUrl,\n \'class\' : \"tool cannot-restore\",\n \'title\' : \"$services.localization.render(\'platform.index.trashDocumentsActionsCannotRestoreTooltip\')\"\n }).update(\"$services.localization.render(\'platform.index.trashDocumentsActionsCannotRestoreText\')\");\n actions.appendChild(restore);\n }\n if(row.canDelete) {\n var delete_ = new Element(\'a\', {\n \'href\' : row.deleteUrl,\n \'class\' : \"tool delete\",\n \'title\' : \"$services.localization.render(\'platform.index.trashDocumentsActionsDeleteTooltip\')\"\n }).update(\"$services.localization.render(\'platform.index.trashDocumentsActionsDeleteText\')\");\n actions.appendChild(document.createTextNode(\' \'));\n actions.appendChild(delete_);\n delete_.observe(\'click\', XWiki.index.trash.documents.confirmDelete.bindAsEventListener(delete_, table, i));\n }\n tr.appendChild(actions);\n return tr;\n}\n\n/**\n * Event listener, called when clicking a delete version link. It displays a confirmation box, speeding up the two-step\n * deletion process.\n * \n * @param event the link activation event\n * @param table the LiveTable javascript object\n * @param rowIdx the index of the row corresponding to the entry to be deleted\n */\nXWiki.index.trash.documents.confirmDelete = function(event, table, rowIdx) {\n event.stop();\n if (this.disabled) {\n // Do nothing if the button was already clicked and it\'s waiting for a response from the server.\n return;\n } else {\n new XWiki.widgets.ConfirmedAjaxRequest(\n /* Ajax request URL */\n this.href + \'&confirm=1\' + (Prototype.Browser.Opera ? \"\" : \"&ajax=1\"),\n /* Ajax request parameters */\n {\n onCreate : function() {\n // Disable the button, to avoid a cascade of clicks from impatient users\n this.disabled = true;\n }.bind(this),\n onSuccess : function(table, rowIdx) {\n // Remove the corresponding HTML element from the UI and update the livetable\n table.deleteRow(rowIdx);\n }.bind(this, table, rowIdx),\n // This is an expected 404, returned when the document has been successfully deleted and is no longer found\n on404 : function(response, table, rowIdx) {\n response.request.options.onSuccess(table, rowIdx);\n }.bindAsEventListener(this, table, rowIdx),\n onComplete : function() {\n // In the end: re-enable the button\n this.disabled = false;\n }.bind(this)\n },\n /* Interaction parameters */\n {\n confirmationText: \"$services.localization.render(\'core.recyclebin.completelyDeleteConfirm\')\",\n progressMessageText : \"$services.localization.render(\'platform.index.trashDocumentsDeleteInProgress\')\",\n successMessageText : \"$services.localization.render(\'platform.index.trashDocumentsDeleteDone\')\",\n failureMessageText : \"$services.localization.render(\'platform.index.trashDocumentsDeleteFailed\')\"\n }\n );\n }\n}\n\nrequire([\'jquery\', \'xwiki-meta\', \'xwiki-events-bridge\'], function($, xm) {\n //\n // Delete All\n //\n var deleteDocumentConfirmModal = $(\'#deleteDocumentConfirmModal\');\n deleteDocumentConfirmModal.find(\'.btn-danger\').on(\'click\', function() {\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'platform.index.trashDocumentsDeleteInProgress\')),\n \'inprogress\'\n );\n $.post(XWiki.currentDocument.getURL(\'delete\'), {\n \'confirm\': 1,\n \'emptybin\': true,\n \'form_token\': xm.form_token,\n \'ajax\': 1\n }).done(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'platform.index.trashDocumentsDeleteDone\')),\n \'done\'\n ));\n trashDocumentsLivetable.refresh();\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'platform.index.trashDocumentsDeleteFailed\')),\n \'error\'\n ));\n });\n });\n var createTrashAllButton = function() {\n if ($(\'#trashAllDeleted\').length == 0) {\n var actionAllContainer = $(\'#documentsTrash td.xwiki-livetable-display-header-filter:last-child\');\n var trashAll = $(\'<a>\').attr({\n \'id\': \'trashAllDeleted\',\n \'class\': \'btn btn-danger\',\n \'href\':\'#\',\n \'data-toggle\': \'modal\',\n \'data-target\': \'#deleteDocumentConfirmModal\'\n }).text(\"$services.localization.render(\'index.deletedDocuments.deleteAll\')\");\n trashAll.appendTo(actionAllContainer);\n }\n $(\'#trashAllDeleted\').toggleClass(\'disabled\', trashDocumentsLivetable.totalRows <= 0);\n };\n\n var displayLivetable = function () {\n $(\'#documentsTrash\').parents(\'.hidden\').removeClass(\'hidden\');\n };\n\n $(document).on(\'xwiki:livetable:documentsTrash:displayComplete\', createTrashAllButton);\n // we call the method in case the livetable has already been loaded and the event triggered.\n createTrashAllButton();\n\n /*\n * The livetable is hidden when javascript is disabled, so that an alternative <noscript> table is displayed.\n * Re-display it when the document loads and Javascript is available.\n */\n displayLivetable();\n});\n '),(-8465264687240425439,'code','var XWiki = (function(XWiki) {\n /** Handles the gallery buttons directly in the current page without reloading the window. */\n XWiki.AttachmentPicker = Class.create({\n /**\n * Constructor.\n *\n * @param property the property being edited, as the containing div with class=\"attachment-picker\"\n * @param dialog the modal dialog where the gallery was loaded\n */\n initialize : function(property, dialog) {\n this.property = property;\n this.dialog = dialog;\n this.gallery = dialog.dialogBox;\n if (!this.property.down(\'input\')) {\n this.directSave = true;\n }\n this.defaultValue = \'\';\n var defaultValueElement = this.gallery.down(\'.gallery_emptyChoice .gallery_attachmenttitle\');\n if (defaultValueElement) {\n this.defaultValue = defaultValueElement.title;\n }\n this.defaultImageSource = \'\';\n var defaultImage = this.gallery.down(\'.gallery_emptyChoice.gallery_image img\');\n if (defaultImage) {\n this.defaultImageSource = defaultImage.src.replace(/\\?.*$/, \'\');\n }\n this.filterFormUpload();\n this.addDeleteListeners();\n this.addSelectListeners();\n this.updateCurrentSelection();\n this.addCloseListener();\n var img = this.property.down(\'img\');\n if (img) {\n img.observe(\'load\', function() {img.up(\'div\').removeClassName(\'hidden\');});\n img.observe(\'error\', function() {img.up(\'div\').addClassName(\'hidden\');});\n }\n },\n /**\n * Catches the upload form submission and stops it if the selected file is not of the accepted types (or not selected at all),\n * and saves the underlying form (if any) so that any unsaved changes won\'t be lost.\n */\n filterFormUpload : function() {\n this.gallery.select(\'.uploadAttachment input[type=\"file\"]\').each(function(fileInput) {\n fileInput.__allowedExtensions = fileInput.title.toLowerCase().replace(/\\s*[,|; ]\\s*/g, \" \").strip();\n if (fileInput.__allowedExtensions != \'\') {\n fileInput.__allowedExtensions = fileInput.__allowedExtensions.split(\" \");\n } else {\n fileInput.__allowedExtensions = false;\n }\n });\n this.gallery.select(\".uploadAttachment\").invoke(\'observe\', \'submit\', function(event) {\n event.stop();\n var uploadForm = event.element();\n var hasErrors = false;\n uploadForm.select(\'input[type=\"file\"]\').each(function(fileInput) {\n if (fileInput.value == \'\') {\n new XWiki.widgets.Notification(\"$services.localization.render(\'xe.attachmentSelector.upload.error.noFile\')\", \'error\');\n hasErrors = true;\n } else if (fileInput.__allowedExtensions && fileInput.__allowedExtensions.indexOf(this.getFileExtension(fileInput.value)) == -1) {\n new XWiki.widgets.Notification(\"$services.localization.render(\'xe.attachmentSelector.upload.error.badExtension\')\", \'error\');\n hasErrors = true;\n }\n }.bind(this));\n // No form submission by AJAX right now, because file uploads can\'t be done this way without HTML5, this is future work\n // Save the document before submitting, since the current form data will be lost otherwise\n if (!hasErrors) {\n if (this.directSave) {\n uploadForm.submit();\n } else {\n // FIXME This fails in HTML5, will deal with it later:\n // this.property.down(\'input\').value = uploadForm.down(\'input[type=\"file\"]\').value;\n // uploadForm.xredirect.value = window.location.pathname;\n document.observe(\'xwiki:document:saved\', function() {\n new XWiki.widgets.Notification(\"$services.localization.render(\'xe.attachmentSelector.upload.inProgress\')\", \'inprogress\');\n uploadForm.submit();\n })\n document.fire(\'xwiki:actions:save\', {\'continue\': true, form: this.property.up(\'form\')});\n }\n }\n }.bindAsEventListener(this));\n },\n getFileExtension : function(filename) {\n var fpath = filename.replace(\'\\\\\', \'/\');\n var pieces = fpath.split(\'/\');\n if (pieces.length == 0) {\n return null;\n }\n var basename = pieces[pieces.length-1];\n pieces = basename.split(\'.\');\n return pieces[pieces.length-1].toLowerCase();\n },\n\n /** Catch attachment delete requests. */\n addDeleteListeners : function() {\n this.gallery.select(\'.gallery_actions .tool.delete\').invoke(\'observe\', \'click\', this.onDelete.bindAsEventListener(this));\n },\n\n /** Catch attachment selection requests. */\n addSelectListeners : function() {\n this.gallery.select(\'.gallery_actions .tool.select\').invoke(\'observe\', \'click\', this.onSelect.bindAsEventListener(this));\n },\n\n /** AJAX deletion of attachments. */\n onDelete : function(event) {\n event.stop();\n deleteTool = event.element();\n if (!deleteTool.disabled) {\n new XWiki.widgets.ConfirmedAjaxRequest(\n deleteTool.readAttribute(\'href\'),\n {\n onCreate : function() { deleteTool.disabled = true },\n onSuccess : function() {\n var attachmentBox = deleteTool.up(\'.gallery_attachmentbox\');\n if (attachmentBox) {\n if (attachmentBox.hasClassName(\'current\')) {\n this.updateAttachment(this.defaultValue, this.defaultImageSource);\n if (this.gallery.down(\'.gallery_emptyChoice\')) {\n this.gallery.down(\'.gallery_emptyChoice\').addClassName(\'current\');\n }\n // Disable the replace feature because there\'s no selection.\n var fileNameInput = this.gallery.down(\'input[type=\"checkbox\"][name=\"filename\"]\');\n fileNameInput.disabled = true;\n // Empty the displayed selected file name.\n fileNameInput.up(\'label\').down(\'strong\').update(\'\');\n if (!this.directSave) {\n this.property.down(\'input\').value = this.defaultValue;\n }\n }\n attachmentBox.remove();\n }\n }.bind(this),\n onComplete : function() {\n deleteTool.disabled = false;\n }\n },\n {\n confirmationText: \"$services.localization.render(\'core.viewers.attachments.delete.confirm\')\",\n progressMessageText : \"$services.localization.render(\'core.viewers.attachments.delete.inProgress\')\",\n successMessageText : \"$services.localization.render(\'core.viewers.attachments.delete.done\')\",\n failureMessageText : \"$services.localization.render(\'core.viewers.attachments.delete.failed\')\"\n }\n );\n }\n },\n\n /** Update the property with the selected value without reloading the page. */\n onSelect : function(event) {\n event.stop();\n var targetElement = event.element();\n var attachmentName = targetElement.up(\'.gallery_attachmentbox\').down(\'.gallery_attachmenttitle\').title;\n var imageSource = targetElement.up(\'.gallery_attachmentbox.gallery_image\');\n if (imageSource) {\n imageSource = imageSource.down(\'.gallery_attachmentframe img\');\n if (imageSource) {\n imageSource = imageSource.src.replace(/\\?.*$/, \'\');\n }\n }\n if (!imageSource) {\n imageSource = \'\';\n }\n if (this.directSave) {\n // save via ajax\n if (!targetElement.disabled) {\n new Ajax.Request(event.element().href, {\n onCreate : function() {\n targetElement.disabled = true;\n targetElement._x_notif = new XWiki.widgets.Notification(\"$services.localization.render(\'core.widgets.confirmationBox.notification.inProgress\')\", \'inprogress\');\n },\n onSuccess : function () {\n targetElement._x_notif.hide();\n // on success, update image\n this.updateAttachment(attachmentName, imageSource);\n this.dialog.closeDialog();\n }.bindAsEventListener(this),\n onFailure : function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n if (targetElement._x_notif) {\n targetElement._x_notif.replace(new XWiki.widgets.Notification(\"$services.localization.render(\'core.widgets.confirmationBox.notification.failed\')\" + failureReason, \"error\"));\n } else {\n new XWiki.widgets.Notification(this.interactionParameters.failureMessageText + failureReason, \"error\");\n }\n },\n on1223 : function(response) {\n response.request.options.onSuccess(response);\n },\n on0 : function(response) {\n response.request.options.onFailure(response);\n },\n onComplete : function() {\n targetElement.disabled = false;\n }\n });\n }\n } else {\n this.updateAttachment(attachmentName, imageSource);\n this.property.down(\'input\').value = attachmentName;\n this.dialog.closeDialog();\n }\n },\n\n /** Update the property display. */\n updateAttachment : function(attachmentName, imageSource) {\n var img = this.property.down(\'img\');\n if (img) {\n img.src = img.src.replace(/^[^\\?]+($|\\?)/, imageSource + \"$1\");\n var link = img.up(\'a\');\n if (link) {\n link.href = link.href.replace(/^[^\\?]+($|\\?)/, imageSource + \"$1\");\n }\n } else {\n var displayed = this.property.down(\'.displayed\');\n if (displayed) {\n displayed.update(attachmentName);\n var link = displayed.up(\'a\');\n if (link) {\n link.href = link.href.replace(/^[^\\?]+($|\\?)/, attachmentName + \"$1\");\n }\n }\n }\n },\n\n /** Update the gallery to reflect the currently selected value. */\n updateCurrentSelection : function() {\n if (!this.directSave) {\n var selectedName = this.property.down(\'input\').value;\n var selectedElement = this.gallery.down(\'.gallery_attachmenttitle[title=\"\' + selectedName.replace(\'\"\', \'\\\\22 \') + \'\"]\');\n if (selectedElement) {\n selectedElement = selectedElement.up(\'.gallery_attachmentbox\');\n } else {\n selectedElement = this.gallery.down(\'.gallery_emptyChoice\');\n }\n if (!selectedElement.hasClassName(\'current\')) {\n this.gallery.select(\'.gallery_attachmentbox.current .tool.select\').invoke(\'removeClassName\', \'hidden\');\n this.gallery.select(\'.gallery_attachmentbox.current\').invoke(\'removeClassName\', \'current\');\n selectedElement.addClassName(\'current\');\n }\n selectedElement.down(\'.tool.select\').addClassName(\'hidden\');\n } else {\n this.gallery.down(\'.current .tool.select\').addClassName(\'hidden\');\n }\n },\n addCloseListener : function () {\n var closeButton = $(\'attachment-picker-close\');\n if (closeButton) {\n closeButton.observe(\'click\', function(event) {\n event.stop();\n this.dialog.closeDialog();\n }.bindAsEventListener(this));\n }\n }\n });\n\n var loading = new Element(\'div\', {\'class\' : \'imgcenter\'}).update(\"<img src=\\\"$xwiki.getSkinFile(\'icons/xwiki/ajax-loader-large.gif\')\\\"/>\");\n var dialog;\n\n /* Hook onto the picker buttons so that the gallery is loaded via AJAX in a modal dialog. */\n document.observe(\'xwiki:dom:loaded\', function() {\n $$(\'.attachment-picker-start\').invoke(\'observe\', \'click\', function(event) {\n event.stop();\n var targetElement = event.element();\n var url = targetElement.href;\n if (url.indexOf(\'?\') < 0) {\n url += \'?\';\n }\n url += \"&xpage=plain\";\n dialog = new XWiki.widgets.ModalPopup(\n loading, {}, {\n \'verticalPosition\' : \'top\',\n \'removeOnClose\' : true,\n \'title\' : \"$services.localization.render(\'xe.attachmentSelector.gallery.title\')\"\n }\n );\n dialog.shortcuts.close.keys = [];\n dialog.showDialog();\n dialog.dialog.down().setStyle({position: \"fixed\"});\n dialog.dialog.setStyle({top: document.viewport.getScrollOffsets().top + \"px\", position: \"absolute\"});\n dialog.dialogBox.setStyle({overflow: \"hidden\", width: \"80%\", margin: \"0 10%\"});\n new Ajax.Updater(loading.up(), url, {\n onComplete : function() {\n // Play nice with the Lightbox widget\n if (window.gallery_lb) {\n window.gallery_lb.updateImageList();\n }\n // Manually convert the special rel values into target attributes for the newly inserted content (rel=\"_something\" => target=\"something\")\n if (typeof (XWiki.fixLinksTargetAttribute) == \'function\') {\n // Trick the function into updating link targets in edit mode; normally the conversion only takes place in view mode\n var __tmp = XWiki.contextaction;\n XWiki.contextaction = \'view\';\n XWiki.fixLinksTargetAttribute(dialog.dialog);\n XWiki.contextaction = __tmp;\n }\n new XWiki.AttachmentPicker(targetElement.up(\'.attachment-picker\'), dialog);\n }\n });\n });\n });\n return XWiki;\n}(XWiki || {}));'),(-8407713411481494396,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.breadcrumbs.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.breadcrumbs.contentB\', [\" $services.icon.render(\'home\') \"])\n{{/velocity}}'),(-8341642618739122112,'lessCode','// Simplex 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: #444;\n@gray: #777;\n@gray-light: #808080;\n@gray-lighter: #ddd;\n\n@brand-primary: #D9230F;\n@brand-success: #469408;\n@brand-info: #029ACF;\n@brand-warning: #9B479F;\n@brand-danger: #D9831F;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #FCFCFC;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 13px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-sans-serif;\n@headings-font-weight: 300;\n@headings-line-height: 1.1;\n@headings-color: @gray-dark;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: #474949;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ddd;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-lighter;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 40px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @gray;\n@navbar-default-bg: #fff;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: @gray;\n@navbar-default-link-hover-color: @brand-primary;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: @navbar-default-link-hover-color;\n@navbar-default-link-active-bg: transparent;\n@navbar-default-link-disabled-color: #444;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #ccc;\n@navbar-default-toggle-border-color: #ddd;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: lighten(@brand-primary, 40%);\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: lighten(@brand-primary, 40%);\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: transparent;\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @headings-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: #fff;\n@pagination-hover-bg: @brand-primary;\n@pagination-hover-border: @brand-primary;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-lighter;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @brand-primary;\n\n@pager-active-bg: @brand-primary;\n@pager-active-color: #fff;\n\n@pager-disabled-color: @gray-lighter;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: darken(@body-bg, 3%);\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #468847;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #3a87ad;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #c09853;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #b94a48;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: @body-bg;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: @panel-footer-bg;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: #fff;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: #fff;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: #fff;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: #fff;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: darken(@body-bg, 3%);\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @link-color;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: transparent;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Simplex 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:400,700\");\n\n.btn-shadow(@color) {\n #gradient > .vertical-three-colors(lighten(@color, 3%), @color, 6%, darken(@color, 3%));\n filter: none;\n border: 1px solid darken(@color, 10%);\n}\n\n// Navbar =====================================================================\n\n.navbar {\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @brand-primary;\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n font-family: @headings-font-family;\n}\n\n.btn-default,\n.btn-default:hover {\n .btn-shadow(@btn-default-bg);\n}\n\n.btn-primary,\n.btn-primary:hover {\n .btn-shadow(@btn-primary-bg);\n}\n\n.btn-success,\n.btn-success:hover {\n .btn-shadow(@btn-success-bg);\n}\n\n.btn-info,\n.btn-info:hover {\n .btn-shadow(@btn-info-bg);\n}\n\n.btn-warning,\n.btn-warning:hover {\n .btn-shadow(@btn-warning-bg);\n}\n\n.btn-danger,\n.btn-danger:hover {\n .btn-shadow(@btn-danger-bg);\n}\n\n// Typography =================================================================\n\nbody {\n font-weight: 200;\n}\n\n// Tables =====================================================================\n\nth {\n color: @headings-color;\n}\n\n// Forms ======================================================================\n\nlegend {\n color: @headings-color;\n}\n\nlabel {\n font-weight: normal;\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-danger;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-primary;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-primary;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-success;\n }\n}\n\n// Navs =======================================================================\n\n.pager {\n a {\n color: @headings-color;\n }\n\n a:hover,\n .active > a, {\n border-color: @brand-primary;\n color: #fff;\n }\n\n .disabled > a {\n border-color: @pager-border;\n }\n}\n\n// Indicators =================================================================\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n// XWiki customization\n// Customization for the drawer\n@xwiki-drawer-menu-item-hover-color: @dropdown-link-hover-color;\n@xwiki-drawer-menu-item-hover-bg: @dropdown-link-hover-bg;\n'),(-8340683372497157102,'code','// Make sure the XWiki.index.trash.attachments \'namespace\' exists.\nif (typeof XWiki == \"undefined\") {\n XWiki = new Object();\n}\nif (typeof XWiki.index == \"undefined\") {\n XWiki.index = new Object();\n}\nif (typeof XWiki.index.trash == \"undefined\") {\n XWiki.index.trash = new Object();\n}\nif (typeof XWiki.index.trash.attachments == \"undefined\") {\n XWiki.index.trash.attachments = new Object();\n}\n\n/**\n * Callback function used by the DeletedAttachments livetable for generating the HTML code needed to display an entry.\n * \n * @param row the JSON data corresponding to the entry to be displayed\n * @param i the index of the row in the list of entries\n * @param table the LiveTable javascript object\n */\nXWiki.index.trash.attachments.displayEntry = function (row, i, table) {\n var tr = new Element(\'tr\'); // The resulting table row\n var file = new Element(\'a\', {\'href\' : row.url}).update(row.filename);\n tr.appendChild(new Element(\'td\').update(file));\n var doc = new Element(\'a\', {\'href\' : row.documentUrl}).update(row.title);\n doc.appendChild(document.createTextNode(\' (\' + row.docName + \')\'));\n tr.appendChild(new Element(\'td\').update(doc));\n tr.appendChild(new Element(\'td\').update(row.date));\n var deleter = new Element(\'a\', {\'href\' : row.deleterurl}).update(row.deletername);\n tr.appendChild(new Element(\'td\').update(deleter));\n var actions = new Element(\'td\', {\'class\' : \'itemActions\'});\n if(row.canDelete) {\n var delete_ = new Element(\'a\', {\n \'href\' : row.deleteUrl,\n \'class\' : \"tool delete\",\n \'title\' : \"$services.localization.render(\'platform.index.trashAttachmentsActionsDeleteTooltip\')\"\n }).update(\"$services.localization.render(\'platform.index.trashAttachmentsActionsDeleteText\')\");\n actions.appendChild(delete_);\n delete_.observe(\'click\', XWiki.index.trash.attachments.confirmDelete.bindAsEventListener(delete_, table, i));\n }\n tr.appendChild(actions);\n return tr;\n}\n\n/**\n * Event listener, called when clicking a delete version link. It displays a confirmation box, speeding up the two-step\n * deletion process.\n * \n * @param event the link activation event\n * @param table the LiveTable javascript object\n * @param rowIdx the index of the row corresponding to the entry to be deleted\n */\nXWiki.index.trash.attachments.confirmDelete = function(event, table, rowIdx) {\n event.stop();\n if (this.disabled) {\n // Do nothing if the button was already clicked and it\'s waiting for a response from the server.\n return;\n } else {\n new XWiki.widgets.ConfirmedAjaxRequest(\n /* Ajax request URL */\n this.href + \'&confirm=1\' + (Prototype.Browser.Opera ? \"\" : \"&ajax=1\"),\n /* Ajax request parameters */\n {\n onCreate : function() {\n // Disable the button, to avoid a cascade of clicks from impatient users\n this.disabled = true;\n }.bind(this),\n onSuccess : function(table, rowIdx) {\n // Remove the corresponding HTML element from the UI and update the livetable\n table.deleteRow(rowIdx);\n }.bind(this, table, rowIdx),\n // This is an expected 404, returned when the document has been successfully deleted and is no longer found\n on404 : function(response, table, rowIdx) {\n response.request.options.onSuccess(table, rowIdx);\n }.bindAsEventListener(this, table, rowIdx),\n onComplete : function() {\n // In the end: re-enable the button\n this.disabled = false;\n }.bind(this)\n },\n /* Interaction parameters */\n {\n confirmationText: \"$services.localization.render(\'core.recyclebin.completelyDeleteConfirm\')\",\n progressMessageText : \"$services.localization.render(\'platform.index.trashAttachmentsDeleteInProgress\')\",\n successMessageText : \"$services.localization.render(\'platform.index.trashAttachmentsDeleteDone\')\",\n failureMessageText : \"$services.localization.render(\'platform.index.trashAttachmentsDeleteFailed\')\"\n }\n );\n }\n}\n/*\n * The livetable is hidden when javascript is disabled, so that an alternative <noscript> table is displayed.\n * Re-display it when the document loads and Javascript is available.\n */\ndocument.observe(\'xwiki:dom:loaded\', function() {\n if ($(\'attachmentTrash\')) {\n $(\'attachmentTrash\').up(\'.hidden\').removeClassName(\'hidden\');\n }\n});'),(-8319153071802839242,'async_context',''),(-8319153071802839242,'content','{{velocity}}{{html clean=\"false\"}}\n ##\n ## Document Index\n ##\n #set($documentIndexRef = $services.model.createDocumentReference(\'\', \'Main\', \'AllDocs\'))\n #if ($xwiki.exists($documentIndexRef) && $services.security.authorization.hasAccess(\'view\', $documentIndexRef))\n #template(\'drawer_macros.vm\')\n #drawerItem($xwiki.getURL($documentIndexRef), \'book\', $escapetool.xml($services.localization.render(\'core.menu.wiki.documentindex\')), \'tmWikiDocumentIndex\')\n #end\n{{/html}}{{/velocity}}\n'),(-8319153071802839242,'parameters','order=40000'),(-8260843651283714852,'code','#template(\'colorThemeInit.vm\')\n/***********************************************\n * Notification Container\n ***********************************************/\n.notifications-macro {\n display: inline-block;\n max-width: 500px;\n min-height: 50px;\n width: 100%;\n}\n\n.notifications-macro-rss-link {\n text-align: right;\n}\n\n/***********************************************\n * Notification Event\n ***********************************************/\n.notification-event {\n border: 1px dashed $theme.borderColor;\n padding: 1em;\n}\n\n.notification-event-unread {\n background-color: $theme.panelBackgroundColor;\n}\n\n/***********************************************\n * Notification Icons\n ***********************************************/\n.notification-icon {\n padding-right: 0;\n position: relative;\n}\n\n.notification-icon .img-thumbnail {\n background-color: $theme.pageContentBackgroundColor;\n font-size: 2em;\n height: 2em;\n text-align: center;\n width: 2em;\n}\n\n.notification-icon .img-thumbnail.small{\n font-size: 1em;\n height: 2em;\n left: 0.5em;\n padding: 0.1em;\n position: absolute;\n bottom: -0.8em;\n width: 2em;\n}\n\n/***********************************************\n * Notification Content\n ***********************************************/\n.notification-content {\n padding: 0 2.6em 0 0.5em;\n}\n\n.notification-content blockquote {\n font-size: 1.0em;\n margin-bottom: 0.5em;\n padding: 0 0.8em;\n}\n\n.notification-event-user > img {\n height: 16px;\n width: 16px;\n /* Don\'t work for Internet Explorer nor Edge 15 */\n object-fit: cover;\n object-position: center;\n}\n\n/***********************************************\n * Notification Buttons\n ***********************************************/\n.notification-event-read-button, .toggle-notification-event-details {\n background-color: $theme.pageContentBackgroundColor;\n border: 1px solid #ddd;\n position: absolute;\n right: 10px;\n width: 2em;\n z-index: 1;\n}\n\n.notification-event-read-button {\n top: -6px;\n}\n\n.toggle-notification-event-details {\n bottom: -6px;\n}\n\n/***********************************************\n * Notification Details\n ***********************************************/\n.notification-event-details {\n font-size: 0.8em;\n margin: 1em 0 0 0;\n}\n\n.notification-event-details td {\n border: 0;\n overflow: hidden;\n padding: 2px;\n text-overflow: ellipsis;\n width: 33%;\n}\n\n.notification-event-details td.description {\n width: 45%;\n}\n\n/***********************************************\n * Notifications Footer\n ***********************************************/\n.notifications-load-more {\n cursor: pointer;\n min-height: 2em;\n}\n\n.notifications-load-more:hover {\n background-color: $theme.highlightColor;\n}\n\n.notifications-load-more p {\n margin: 0;\n padding: 0.7em;\n}'),(-8249724036515617810,'groups','XWiki.XWikiAllGroup'),(-8249724036515617810,'users',''),(-8222245676634688845,'description','The target document name to save/list attachments from'),(-8170685701810359526,'description','States how the property is updated. Accepted values: \"form\" (default) meaning that the selected value is stored in an input that will be saved via an external form; \"direct\" meas that the picker is responsible with updating the property value.'),(-8150685781532502334,'async_context',''),(-8150685781532502334,'content','{{velocity}}\n(% id=\"xwikirightstipspanel\" %)\n(((\n#largepanelheader($services.localization.render(\'xe.panels.rights.tips\'))\n(% id=\"xwikirightstips\" %)\n(((\n (% id=\"xwikitipspublic\" %)\n (((\n (% id=\"xwikitipspublicHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.publicwiki\') =)))\n (% id=\"xwikitipspublicContent\" class=\"accordionTabContentBox\" %)\n ((($services.localization.render(\'xe.panels.rights.openwiki\')\n* $services.localization.render(\'xe.panels.rights.opengroups\')\n* $services.localization.render(\'xe.panels.rights.openusers\')\n* $services.localization.render(\'xe.panels.rights.openaccess\')\n* $services.localization.render(\'xe.panels.rights.openallow\')\n )))\n )))\n (% id=\"xwikitipsregistered\" class=\"accordion\" %)\n (((\n (% id=\"xwikitipsregisteredHeader\" class=\"accordionTabTitleBar\"%)\n (((= $services.localization.render(\'xe.panels.rights.authenticate\') =)))\n (% id=\"xwikitipsregisteredContent\" class=\"accordionTabContentBox\" %)\n ((($services.localization.render(\'xe.panels.rights.protectedwiki\')\n* $services.localization.render(\'xe.panels.rights.protectedgroups\')\n* $services.localization.render(\'xe.panels.rights.protectedusers\')\n* $services.localization.render(\'xe.panels.rights.protectedaccess\')\n* $services.localization.render(\'xe.panels.rights.protectedallow\')\n )))\n )))\n (% id=\"xwikitipsbanned\" %)\n (((\n (% id=\"xwikitipsbannedHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.banned\') =)))\n (% id=\"xwikitipsbannedContent\" class=\"accordionTabContentBox\" %)\n ((($services.localization.render(\'xe.panels.rights.bannedgroup\')\n* $services.localization.render(\'xe.panels.rights.banedgroups\')\n* $services.localization.render(\'xe.panels.rights.bannedusers\')\n* $services.localization.render(\'xe.panels.rights.bannedaccess\')\n* $services.localization.render(\'xe.panels.rights.banneddeny\')\n )))\n )))\n)))## xwikirightstips\n#panelfooter()\n)))## xwikirightstipspanel\n$xwiki.jsfx.use(\'js/xwiki/accordion/accordion.js\')##\n{{html clean=\"false\"}}\n<script type=\"text/javascript\">\ndocument.observe(\'xwiki:dom:loaded\', function() {\n var obj = {div:\'xwikirightstips\', no:0, height:250};\n var acc = createAccordion(obj);\n XWiki.togglePanelVisibility($(\'xwikirightstipspanel\').down(\'div\'));\n});</script>\n{{/html}}\n{{/velocity}}'),(-8150685781532502334,'description','Extended help on Rights Editor Usage.'),(-8140890364037519301,'longText1','[[image:Frank_Capra.png||width=\"64\"]]'),(-8140890364037519301,'staticList1','director|producer|writer'),(-8134827837505894596,'async_context',''),(-8134827837505894596,'code','{{velocity output=\"false\"}}\n#set ($discard = $xwiki.ssx.use(\'Help.Code.ExampleMacro\'))\n#set ($exampleId = $xcontext.macro.content.hashCode() + \"-$mathtool.random(1, 100)\")\n#set ($output = \"\n {{html clean=\'false\'}}\n <div class=\'macroexample\'>\n <ul class=\'nav nav-tabs\' role=\'tablist\'>\n <li role=\'presentation\' class=\'active\'>\n <a href=\'#example$exampleId\' aria-controls=\'example$exampleId\' role=\'tab\' data-toggle=\'tab\'>Example</a>\n </li>\n <li role=\'presentation\'>\n <a href=\'#source$exampleId\' aria-controls=\'source$exampleId\' role=\'tab\' data-toggle=\'tab\'>Source</a>\n </li>\n </ul>\n <div class=\'tab-content\'>\n <div role=\'tabpanel\' class=\'tab-pane active\' id=\'example$exampleId\'>\n {{/html}}\n\n $xcontext.macro.content\n\n {{html clean=\'false\'}}\n </div>\n <div role=\'tabpanel\' class=\'tab-pane\' id=\'source$exampleId\'>\n {{/html}}\n\n {{code language=\'none\'}}\n $xcontext.macro.content\n {{/code}}\n\n {{html clean=\'false\'}}\n </div>\n <div class=\'clearfloats\'></div>\n </div>\n </div>\n {{/html}}\n\")\n#set ($xcontext.macro.result = $services.rendering.parse($output, $xwiki.getCurrentContentSyntaxId()).getChildren())\n{{/velocity}}'),(-8134827837505894596,'contentDescription','The example code.'),(-8134827837505894596,'contentJavaType',''),(-8134827837505894596,'description','Shows an example and its source code.'),(-8127281879537970137,'codeToExecute','{{html clean=\"false\"}}\n<form action=\"$xwiki.getURL(\'PanelsCode.NavigationConfiguration\', \'save\')\" method=\"post\">\n{{/html}}\n\n{{include reference=\"PanelsCode.NavigationConfigurationSheet\" /}}\n\n{{html clean=false}}\n <fieldset>\n <input type=\"hidden\" name=\"form_token\" value=\"$!services.csrf.token\" />\n <input type=\"hidden\" name=\"comment\" value=\"$escapetool.xml($services.localization.render(\n \'platform.panels.navigation.configuration.saveComment\'))\" />\n </fieldset>\n <div class=\"bottombuttons\">\n <p class=\"admin-buttons\">\n <span class=\"buttonwrapper\">\n <input class=\"button\" type=\"submit\" name=\"action_saveandcontinue\"\n value=\"$services.localization.render(\'admin.save\')\" />\n </span>\n </p>\n </div>\n</form>\n{{/html}}'),(-8102651109514025998,'lessCode','// United 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: #333; // #333\n@gray: #777; // #555\n@gray-light: #AEA79F; // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #DD4814;\n@brand-success: #38B44A;\n@brand-info: #772953;\n@brand-warning: #EFB73E;\n@brand-danger: #DF382C;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Ubuntu\", Tahoma, \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-light;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #fff;\n@navbar-default-bg: @brand-primary;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: darken(@navbar-default-bg, 15%);\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: none;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 15%);\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 15%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-info;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 15%);\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: none;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 15%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 15%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: @gray-light;\n@pagination-active-bg: #f5f5f5;\n@pagination-active-border: #ddd;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #468847;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #3a87ad;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #c09853;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #b94a48;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// United 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Ubuntu\");\n\n// Navbar =====================================================================\n\n.navbar {\n\n &-default {\n\n .badge {\n background-color: #fff;\n color: @navbar-default-bg;\n }\n }\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n}\n\n@media (max-width: @grid-float-breakpoint-max) {\n\n .navbar {\n\n .dropdown-menu {\n a {\n color: #fff;\n }\n }\n }\n}\n\n\n// Buttons ====================================================================\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\n// Navs =======================================================================\n\n// Indicators =================================================================\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n'),(-8082552833380398704,'javamail_extra_props',''),(-8082552833380398704,'ldap_fields_mapping',''),(-8082552833380398704,'ldap_group_mapping',''),(-8061508877472075611,'async_context',''),(-8061508877472075611,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'xe.panels.syntax.help\'))\n#set ($syntaxDoc = $xwiki.getDocument(\'XWiki.XWikiSyntax\'))\n#if ($syntaxDoc.isNew())\n #set ($url = \'http://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/?xpage=print\')\n#else\n #set ($url = $xwiki.getURL(\'XWiki.XWikiSyntax\', \'view\', \'xpage=print\'))\n#end\n$services.localization.render(\'helponsyntax\') {{html clean=\"false\"}}<a href=\"$url\" onclick=\"openURL(\'$url\', \'_blank\'); return false;\"><span class=\"nobr\">$services.localization.render(\'xwikisyntax\')</span></a>{{/html}}\n#panelfooter()\n{{/velocity}}'),(-8061508877472075611,'description','Displays information on the XWiki syntax.'),(-7982903231765144892,'codeToExecute','{{include reference=\"Mail.SendMailConfigSheet\" /}}'),(-7950309629787074617,'codeToExecute','{{include reference=\"PanelsCode.ApplicationsPanelConfigurationSheet\" /}}'),(-7914055866253881519,'async_context',''),(-7914055866253881519,'content',''),(-7914055866253881519,'parameters','label=$services.localization.render(\'xe.panels.quicklinks.dashboard\')\ntarget=Dashboard.WebHome\nicon=icon:application_view_tile'),(-7845404352836951079,'async_context',''),(-7845404352836951079,'content','{{velocity}}\n#panelheader($doc.space)\n#if ($hasAdmin)\n {{warning}}Deprecated: Replace with [[Children>>Panels.Children]] or [[Siblings>>Panels.Siblings]] Panels{{/warning}}\n#end\n\n{{documentTree root=\"space:$services.model.serialize($doc.documentReference.lastSpaceReference, \'default\')\" showSpaces=\"true\" compact=\"true\" showDocumentTitle=\"false\" showTranslations=\"false\" /}}\n\n#panelfooter()\n{{/velocity}}'),(-7845404352836951079,'description','Displays the documents in the current space.'),(-7750451393889908950,'description','Whether to display a checkbox in front of each tree node to allow the user to select multiple tree nodes.'),(-7702274887396616752,'code','##----------------------------------\n## Manage translations\n##----------------------------------\n#**\n * Used to display a rendered translation with proper escapes.\n *#\n#macro(tr $key)$escapetool.javascript($escapetool.xml($services.localization.render($key)))#end\n//----------------------------------\n// RequireJS configuration\n//----------------------------------\nrequire.config({\n paths: {\n #if (\"$!request.minify\" == \'false\')\n \'bootstrap-tour\': \"$services.webjars.url(\'bootstrap-tour\', \'js/bootstrap-tour.js\', {\'wiki\':$xcontext.database})\"\n #else\n \'bootstrap-tour\': \"$services.webjars.url(\'bootstrap-tour\', \'js/bootstrap-tour.min.js\', {\'wiki\':$xcontext.database})\"\n #end\n },\n shim: {\n \'bootstrap-tour\': {\n deps: [\'bootstrap\', \'jquery\'],\n exports : \'Tour\'\n }\n }\n});\n//----------------------------------\n// Display a tour if needed\n//----------------------------------\nrequire([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n \'use strict\';\n \n /**\n * Escape strings so they respect the Tour API constraints.\n */\n var escapeTourName = function (tourName) {\n // The Tour API says tour name must contain only alphanumerics, underscores and hyphens.\n // So we replace any forbidden character by its ASCII value, surrounded by an underscore (that we forbid too to \n // avoid collisions).\n return tourName.replace(/[^a-zA-Z0-9\\-]/g, function(character) {\n return \'_\'+character.charCodeAt(0)+\'_\';\n });\n };\n \n /**\n * Add a resume button to start the tour again when it has been closed\n */\n var createResumeButton = function (tour, createPopover) {\n // Create a container when the button will be displayed. This container will also contains the \"popover\", so the \"popover\" stay near the button when the page is resized.\n // (see http://getbootstrap.com/javascript/#popovers-options \'container\')\n var buttonContainer = $(\'<div id=\"tourResumeContainer\" style=\"position: fixed; bottom: 0; right: 0; z-index: 2000; width: 300px; text-align: right;\"></div>\').appendTo($(document.body));\n // Create the button that will start the tour again\n var button = $(\'<button id=\"tourResume\" class=\"btn btn-default btn-xs\">$services.icon.renderHTML(\"info\") #tr(\"tour.popover.show\")</button>\').appendTo(buttonContainer);\n buttonContainer.hide();\n buttonContainer.fadeIn();\n button.click(function () {\n if (createPopover) {\n button.popover(\'destroy\');\n }\n\n if (window.localStorage.getItem(tour._options.name + \'_current_step\') != tour._options.steps.length - 1) {\n tour.start(true);\n } else {\n tour.restart();\n }\n button.remove();\n });\n var popoverContent = \"#tr(\'tour.popover.show.hint\')\";\n if (createPopover) {\n // Add a popover to introduce that button\n button.popover({\n animation: true,\n content: popoverContent,\n placement: \'top\',\n container: \'#tourResumeContainer\'\n });\n // Show it\n button.popover(\'show\');\n // Hide it after 7 seconds\n setTimeout(function() {\n button.popover(\'destroy\');\n }, 7000);\n }\n }\n \n /**\n * The template to display a step.\n */\n var getTemplate = function (index, step) {\n var idPrefix = \'bootstrap_tour\';\n var template = \'<div class=\"popover tour\" style=\"min-width: 300px;\">\\n\'\n + \' <a class=\"btn btn-xs btn-default\" id=\"\'+idPrefix+\'_close\">$escapetool.javascript($services.icon.renderHTML(\"cross\"))</a>\\n\'\n + \' <div class=\"arrow\"></div>\\n\'\n + \' <h3 class=\"popover-title\"></h3>\\n\'\n + \' <div class=\"popover-content\"></div>\\n\'\n + \' <div class=\"popover-navigation row\">\\n\'\n + \' <div class=\"col-xs-6 text-left\">\\n\';\n if (step.prev > -1) {\n template += \' <a class=\"btn btn-default btn-sm\" id=\"\'+idPrefix+\'_prev\">#tr(\"tour.popover.previous\")</a>\\n\';\n }\n template += \' </div>\\n\'\n + \' <div class=\"col-xs-6 text-right\">\\n\';\n if (step.next > -1) {\n template += \' <a class=\"btn btn-primary btn-sm\" id=\"\'+idPrefix+\'_next\">#tr(\"tour.popover.next\")</a>\\n\';\n } else {\n template += \' <a class=\"btn btn-success btn-sm\" id=\"\'+idPrefix+\'_end\">#tr(\"tour.popover.end\")</a>\\n\'\n }\n template += \' </div>\\n\'\n + \' </div>\'\n + \'</div>\';\n return template;\n }\n\n /**\n * Associate the template buttons to their actions on the tour\n */\n var onShown = function (tour) {\n var idPrefix = \'bootstrap_tour\';\n var closeButtonSelector = \'#\' + idPrefix + \'_close\';\n var endButtonSelector = \'#\' + idPrefix + \'_end\';\n var prevButtonSelector = \'#\' + idPrefix + \'_prev\';\n var nextButtonSelector = \'#\' + idPrefix + \'_next\';\n\n $(closeButtonSelector).on(\'click\', function () { tour.end() });\n $(endButtonSelector).on(\'click\', function () { tour.end() });\n $(prevButtonSelector).on(\'click\', function () { tour.prev() });\n $(nextButtonSelector).on(\'click\', function () { tour.next() });\n\n $(closeButtonSelector).css(\'position\',\'absolute\');\n $(closeButtonSelector).css(\'top\',\'3px\');\n $(closeButtonSelector).css(\'right\',\'5px\');\n // Avoid having the close button on top of the title\n $(\'.tour .popover-title\').css(\'padding-right\', $(closeButtonSelector).outerWidth() + 10 + \'px\');\n }\n \n /**\n * Create a tour from a JSON file\n */\n var createTour = function (jsonData) {\n // Add stylesheet only when needed\n var cssURL = \"$services.webjars.url(\'bootstrap-tour\', \'css/bootstrap-tour.min.css\', {\'wiki\':$xcontext.database})\";\n $(\'<link>\').attr(\'rel\', \'stylesheet\').attr(\'type\', \'text/css\').attr(\'href\', cssURL).appendTo($(document.head));\n \n // Require \'bootstrap-tour\' only when needed\n require([\'bootstrap-tour\'], function(Tour) {\n \n // Create the tour\n var tourName = escapeTourName(\'tour_\' + jsonData.name);\n var tour = new Tour({\n name : tourName,\n storage : window.localStorage,\n onEnd : function() { createResumeButton(tour, true) },\n onShown : onShown,\n orphan : false,\n template: getTemplate\n });\n \n // Create the steps\n for (var i = 0; i < jsonData.steps.length; i++) {\n tour.addStep(jsonData.steps[i]);\n }\n \n // Look if the tour should be started regardless of its status on the local storage\n var getQueryStringParameterByName = function (name) {\n var match = RegExp(\'[?&]\' + name + \'=([^&]*)\').exec(window.location.search);\n return match && decodeURIComponent(match[1].replace(/\\+/g, \' \'));\n }\n var forceStart = getQueryStringParameterByName(\'startTour\') == \'true\';\n \n // Launch the tour\n tour.init();\n if (forceStart) {\n tour.restart();\n } else if (window.localStorage.getItem(tourName + \'_end\') == null) {\n tour.start();\n }\n \n // Create a resume button if the tour has already been closed by the user in the past\n if (window.localStorage.getItem(tourName + \'_end\') == \'yes\') {\n createResumeButton(tour, false, tourName);\n }\n });\n };\n \n /**\n * Load asynchronously the list of steps concerning the current page.\n * It\'s done asynchronously so it does not improve the page rendering time. It\'s important since this code is used\n * everywhere.\n */ \n $(document).ready(function () {\n \n /**\n * The tour is not adapted for little screen sizes like mobile phones have.\n * The value 768 is taken from bootstrap in order to be consistent with their media queries.\n */\n if ($(window).innerWidth() <= 768) {\n return;\n }\n \n var ajaxOptions = {\n url : new XWiki.Document(\'TourJson\', \'TourCode\').getURL(\'get\', \'xpage=plain&outputSyntax=plain\'),\n dataType : \'json\',\n data : { tourDoc: xm.document }\n };\n $.ajax(ajaxOptions).success( function(json) {\n for (var i = 0; i < json.tours.length; ++i) {\n var tour = json.tours[i];\n if (tour.steps.length > 0) {\n createTour(tour);\n }\n }\n });\n });\n});'),(-7687805282421262670,'codeToExecute','{{include reference=\'XWiki.GoogleAnalyticsCode\' /}}'),(-7662876146999244429,'description','Whether to show the context menu when the user right-clicks a tree node.'),(-7655721308476192203,'properties','given-name:first_name\nfamily-name:last_name\norg:company\nnote:comment'),(-7655122662871052554,'code','require([\'jquery\', \'xwiki-meta\'], function($, xm) {\n // The livetable is refreshed after each action (add/remove).\n // Refresh the document version to avoid conflicts if we try to save afterwards\n $(document).on(\'xwiki:livetable:displayComplete\', function (event) {\n xm.refreshVersion();\n });\n $(document).on(\'click\', \'#addMembers\', function(event) {\n event.preventDefault();\n var addMembersButton = $(event.target);\n var form = addMembersButton.closest(\'form\');\n var parameters = form.serializeArray();\n // Add the data from the submit button.\n if (addMembersButton.attr(\'name\')) {\n parameters.push({\n name: addMembersButton.attr(\'name\'),\n value: addMembersButton.val()\n });\n }\n var names = parameters.map(function(parameter) {\n return parameter.name === \'name\' ? parameter.value.trim() : \'\';\n }).join(\'\');\n if (addMembersButton.prop(\'disabled\') || names === \'\') {\n // Nothing to add.\n return;\n }\n addMembersButton.prop(\'disabled\', true);\n $.post(form.attr(\'action\'), parameters).done(function() {\n // Clear the list of selected users and groups.\n $(\'#userInput\')[0].selectize.clear(true);\n $(\'#groupInput\')[0].selectize.clear(true);\n // Reload the live table.\n editgrouptable.refresh();\n // Show notification message.\n new XWiki.widgets.Notification(\"$services.localization.render(\'xe.admin.groups.addSuccess\')\", \'done\', {timeout: 5});\n }).fail(function(response) {\n new XWiki.widgets.Notification(\"$services.localization.render(\'xe.admin.groups.addFailure\')\" +\n response.statusText, \'error\', {timeout: 5});\n }).always(function() {\n addMembersButton.prop(\'disabled\', false);\n });\n });\n});'),(-7637459130189909810,'description','What attachment is displayed in view mode if the property is empty. Should either be empty or in the form of a wiki attachment reference (e.g. \"attachment.txt\", \"Another.Document@attachment.txt\").'),(-7598213860901180716,'async_context',''),(-7598213860901180716,'content',''),(-7598213860901180716,'parameters',''),(-7591396602704154736,'codeToExecute','{{display reference=\"XWiki.Captcha.Administration\" /}}'),(-7543057703784922832,'description','The maximum number of documents to display. By default, up to 100 documents will be listed. If all documents should be displayed, pass 0.'),(-7539739757836270938,'description',''),(-7538364353851814068,'properties',''),(-7524852497054340135,'code','.itemActions .tool {\n width: 16px;\n height: 16px;\n margin: 0 2px;\n float: left;\n text-indent: -1000em;\n overflow: hidden;\n background: transparent no-repeat center center;\n}\n.itemActions .delete {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/cross.png\')\") !important;\n}\n.itemActions .restore {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/arrow_refresh.png\')\") !important;\n}\n.itemActions .cannot-restore {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/page_error.png\')\") !important;\n}'),(-7520880152784151647,'async_context',''),(-7520880152784151647,'content','{{velocity}}{{html clean=\"false\"}}\n ##\n ## User Index\n ##\n #set($userIndexRef = $services.model.createDocumentReference(\'\', \'Main\', \'UserDirectory\'))\n #if ($xwiki.exists($userIndexRef) && $services.security.authorization.hasAccess(\'view\', $userIndexRef))\n #template(\'drawer_macros.vm\')\n #drawerItem($xwiki.getURL($userIndexRef), \'user\', $escapetool.xml($services.localization.render(\'xe.panels.quicklinks.userdirectory\')), \'tmMainUserIndex\')\n #end\n{{/html}}{{/velocity}}\n'),(-7520880152784151647,'parameters','order=50000'),(-7502184460240357837,'spaces',''),(-7482741562876860048,'code','// Fix the path to the arrow icon that indicates the presence of a sub-menu in the context menu.\nif (CKEDITOR_BASEPATH.indexOf(\'?\') >= 0) {\n // The WebJar resource path was specified in the query string before 7.1M1 which prevented the browser from resolving\n // relative paths. See XWIKI-10880 (A CSS file inside a webjar cannot use a resource from that webjar).\n require([\'ckeditor\'], function(ckeditor) {\n ckeditor.on(\'instanceReady\', function(event) {\n if (event.editor.contextMenu) {\n event.editor.contextMenu._.panelDefinition.css.push(\n \'.cke_menuarrow {\' +\n \'background-image: url(\"\' + CKEDITOR_BASEPATH + \'skins/moono-lisa/images/arrow.png\") !important;\' +\n \'}\'\n );\n }\n });\n });\n}\n\n// Polyfill for the xwiki:actions:beforeSave and xwiki:actions:beforePreview events (available since 7.4.1)\n// We have to use Prototype.js because it is loaded before jQuery and we need to register our save and preview listeners\n// before the actionButtons.js does it, as otherwise the CKEditor doesn\'t get the chance to update the text area before\n// the form is submitted.\n(function() {\n var submitActions = [\'save\', \'preview\'];\n var beforeSubmitWasTriggered = false;\n var onBeforeSubmit = function(event) {\n beforeSubmitWasTriggered = true;\n if (!(event.memo || {}).polyfill) {\n removeListeners();\n }\n };\n var onSubmit = function(event) {\n if (!beforeSubmitWasTriggered && jQuery) {\n // Our CKEditor plugins use jQuery to listen to events.\n var parts = event.eventName.split(\':\');\n var data = event.memo || {};\n data.polyfill = true;\n jQuery(document).triggerHandler(getBeforeEventName(parts[parts.length - 1]), data);\n }\n beforeSubmitWasTriggered = false;\n };\n var getBeforeEventName = function(action) {\n return \'xwiki:actions:before\' + action.substr(0, 1).toUpperCase() + action.substr(1);\n };\n var removeListeners = function() {\n submitActions.forEach(function(action) {\n document.stopObserving(getBeforeEventName(action), onBeforeSubmit);\n document.stopObserving(\'xwiki:actions:\' + action, onSubmit);\n });\n };\n if (typeof document.observe == \'function\') {\n submitActions.forEach(function(action) {\n document.observe(getBeforeEventName(action), onBeforeSubmit);\n document.observe(\'xwiki:actions:\' + action, onSubmit);\n });\n }\n})();\n\n// Polyfill for xwiki-events-bridge module (available since 6.4).\n(function() {\n if (typeof document.fire === \'function\' && require.toUrl(\'xwiki-events-bridge\') === \'./xwiki-events-bridge\') {\n require([\'jquery\'], function($) {\n // xwiki-events-bridge module is not available.\n [\n \'xwiki:actions:cancel\',\n \'xwiki:actions:preview\',\n \'xwiki:actions:save\',\n \'xwiki:document:saved\'\n ].forEach(function(eventType) {\n // Catch the Prototype.js event.\n var firing = false;\n document.observe(eventType, function(event) {\n // Fire the jQuery event.\n if (firing) {\n console.log(\"Attempted to fire an event inside of an event handler, stahp\");\n } else {\n firing = true;\n try {\n $(document).triggerHandler(eventType, event.memo);\n } finally {\n firing = false;\n }\n }\n });\n });\n });\n }\n})();\n\n// Make sure the \"Back To Edit\" button from the Preview mode works as expected on XWiki versions older than 8.2 (where\n// CKEditor is not the default editor).\nrequire([\'jquery\'], function($) {\n if (/&sheet=CKEditor.EditSheet\\b/.test(window.location.href)) {\n // Make sure the CKEditor.EditSheet is preserved when coming back from Preview mode.\n $(\'form#inline\').find(\'input[name=\"xcontinue\"]\').val(function(index, oldValue) {\n return oldValue + \'&sheet=CKEditor.EditSheet\';\n });\n }\n});\n\n// Polyfill for entityReference.js\nrequire([\'jquery\'], function($) {\n if (typeof XWiki.EntityType.byName !== \'function\') {\n // Before 6.4.1\n var entityTypeByName = {\n wiki: XWiki.EntityType.WIKI,\n space: XWiki.EntityType.SPACE,\n document: XWiki.EntityType.DOCUMENT,\n attachment: XWiki.EntityType.ATTACHMENT\n };\n XWiki.EntityType.byName = function(name) {\n return entityTypeByName[name];\n };\n }\n\n if (typeof XWiki.EntityType.getName !== \'function\') {\n // Before 6.4.1\n var entityTypes = [\'wiki\', \'space\', \'document\', \'attachment\'];\n XWiki.EntityType.getName = function(entityType) {\n return entityTypes[entityType];\n }\n }\n\n if (typeof XWiki.EntityReference.prototype.getReversedReferenceChain !== \'function\') {\n // Before 7.2M2\n XWiki.EntityReference.prototype.getReversedReferenceChain = function() {\n return this._extractComponents().reverse();\n };\n }\n\n if (typeof XWiki.currentDocument.getDocumentReference !== \'function\') {\n // Before 7.2M3\n // Take the current document full name.\n var currentDocumentReference = $(\'meta[name=\"document\"]\').attr(\'content\');\n // Resolve the local reference.\n currentDocumentReference = XWiki.Model.resolve(currentDocumentReference, XWiki.EntityType.DOCUMENT);\n // Add the wiki component.\n currentDocumentReference.getReversedReferenceChain()[0].parent = new XWiki.WikiReference(XWiki.currentWiki);\n XWiki.currentDocument.getDocumentReference = function() {\n return currentDocumentReference;\n };\n }\n\n var reference = XWiki.Model.resolve(\'S\', XWiki.EntityType.SPACE, new XWiki.WikiReference(\'W\'));\n if (!reference.parent) {\n // The resolve method did not support a default value provider before 7.2M1.\n var oldResolve = XWiki.Model.resolve;\n XWiki.Model.resolve = function(representation, entityType, defaultValueProvider) {\n var reference = oldResolve.apply(this, arguments);\n if (reference && defaultValueProvider && typeof defaultValueProvider.extractReference === \'function\') {\n // The given default value provider is an entity reference (normally a document reference).\n var root = reference.getReversedReferenceChain()[0];\n // We cover the document and attachment references mainly,\n var defaultRoot = defaultValueProvider.extractReference(root.type) || {parent: defaultValueProvider};\n // Nested spaces were introduced in 7.2M1 so we can safely assume that the given default value provider has only\n // one space reference component.\n root.parent = defaultRoot.parent;\n }\n return reference;\n };\n }\n});\n\n// Fix the layout to be consistent with the Wiki edit mode (tested with the Flamingo Skin).\nrequire([\'jquery\'], function($) {\n var ckeEditMeta = $(\'.cke-editMeta\');\n if (ckeEditMeta.length != 1) {\n // Fix the layout only when the CKEditor.EditSheet is applied.\n return;\n }\n // Hide the page title because the edit form has an input field to edit the title. This is consistent with the Wiki\n // edit mode. Remove the \'editMeta\' id because the edit sheet adds an element with the same id.\n // NOTE: In order to rely on Chrome\'s Back-Forward cache we must not remove or move form elements. We can only hide.\n $(\'#document-title\').parent(\'#editMeta\').removeAttr(\'id\').parent(\'.row\').hide();\n // Move the content menu before the editMeta element so that they are displayed on the same row.\n ckeEditMeta.attr(\'id\', \'editMeta\').addClass(\'col-md-pull-5\')\n .before($(\'#contentmenu\').parent(\'.col-md-5\').addClass(\'col-md-push-7\'));\n});\n\n// Activate the auto-save feature on XWiki versions older than 8.2RC1 (XE-1562), where CKEditor is not the default\n// WYSIWYG editor and thus it is loaded with a sheet (CKEditor.EditSheet). Note that for XWiki 8.2RC1 and 8.2 (where\n// CKEditor is the default WYSIWYG editor) the auto-save feature is not activated because the WYSIWYG edit mode doesn\'t\n// active it. This has been fixed in 8.2.1 and 8.3M1 (XWIKI-8614).\n// Note that we can\'t enable auto-save by loading autosave.js from the editing sheet (CKEditor.EditSheet) because on\n// older versions of XWiki (XWIKI-8614) autosave.js needs to be loaded after actionbuttons.js, which is loaded after the\n// editing sheet is rendered.\nrequire([\'jquery\'], function($) {\n if ($(\'#xwikieditcontent\').data(\'autosave\')) {\n require([\"$xwiki.getSkinFile(\'js/xwiki/editors/autosave.js\', true)\"]);\n }\n});'),(-7455479294314641019,'code','.well {\n h3:first-child, h6:first-child {\n margin-top: 0;\n },\n h3:last-child, h6:last-child, p:last-child, ul:last-child {\n margin-bottom: 0;\n }\n h6 a {\n color: @text-color;\n }\n a:hover, a:focus {\n text-decoration: none;\n }\n ul.noitems {\n list-style-type: none;\n padding: 0;\n }\n .thumbnail {\n margin-bottom: 0;\n }\n .icon {\n color: @text-muted;\n display: block;\n font-size: 300%;\n margin-bottom: 10px;\n }\n}\n\n.video-modal .modal-body {\n text-align: center;\n}\n\n#xwikicontent video {\n max-width: 100%;\n}'),(-7449079361176131198,'code','#template(\'colorThemeInit.vm\')\n\n/*\n#set ($ckeditorSkinPath = $services.webjars.url(\'org.xwiki.contrib:application-ckeditor-webjar\', \'skins/moono-lisa\'))\n#if (\"$!ckeditorSkinPath\" == \'\')\n ## Before 6.3RC1 (but 5.3M1+)\n #set ($ckeditorWebJarVersion = $services.extension.installed.getInstalledExtension(\n \'org.xwiki.contrib:application-ckeditor-webjar\', \"wiki:$xcontext.database\").id.version)\n #set ($ckeditorSkinPath = $services.webjars.url(\"application-ckeditor-webjar/$ckeditorWebJarVersion/skins/moono-lisa\"))\n#end\n#if ($ckeditorSkinPath.indexOf(\'?\') >= 0)\n ## The WebJar resource path was specified in the query string before 7.1M1 which prevented the browser from resolving\n ## relative paths. See XWIKI-10880 (A CSS file inside a webjar cannot use a resource from that webjar).\n */\n a.cke_button > span.cke_button_icon {\n background-image: url(\"$ckeditorSkinPath/icons.png\") !important;\n }\n .cke_hidpi a.cke_button > span.cke_button_icon {\n background-image: url(\"$ckeditorSkinPath/icons_hidpi.png\") !important;\n }\n .cke_notification_close, a.cke_dialog_close_button {\n background-image: url(\"$ckeditorSkinPath/images/close.png\") !important;\n }\n .cke_hidpi .cke_dialog_close_button {\n background-image: url(\"$ckeditorSkinPath/images/hidpi/close.png\") !important;\n }\n .cke_dialog a.cke_btn_reset {\n background-image: url(\"$ckeditorSkinPath/images/refresh.png\") !important;\n }\n .cke_hidpi .cke_dialog a.cke_btn_reset {\n background-image: url(\"$ckeditorSkinPath/images/hidpi/refresh.png\") !important;\n }\n .cke_dialog a.cke_btn_locked {\n background-image: url(\"$ckeditorSkinPath/images/lock.png\") !important;\n }\n .cke_hidpi .cke_dialog a.cke_btn_locked {\n background-image: url(\"$ckeditorSkinPath/images/hidpi/lock.png\") !important;\n }\n .cke_dialog a.cke_btn_unlocked {\n background-image: url(\"$ckeditorSkinPath/images/lock-open.png\") !important;\n }\n .cke_hidpi .cke_dialog a.cke_btn_unlocked {\n background-image: url(\"$ckeditorSkinPath/images/hidpi/lock-open.png\") !important;\n }\n .cke_menuarrow {\n background-image: url(\"$ckeditorSkinPath/images/arrow.png\") !important;\n }\n /*\n#end\n*/\n\na.cke_button_disabled > span.cke_button_icon.loading {\n background-image: url(\"$xwiki.getSkinFile(\'icons/xwiki/spinner.gif\')\") !important;\n background-position: 0 0 !important;\n}\n\n.ckeditor-textarea.loading {\n border: 0 none;\n box-shadow: none;\n color: transparent;\n cursor: wait;\n overflow: hidden;\n resize: none;\n}\n\n/* Show the modal above the CKEditor dialogs */\nbody > .modal-backdrop {\n z-index: 10040;\n}\n/* The modal can be nested inside the body while the backdrop is always a direct child of body. */\nbody .modal {\n z-index: 10050;\n}\n/* Make sure the selectize dropdown is displayed on top of the Bootstrap modal. */\nbody > .selectize-dropdown {\n z-index: 10051;\n}\n\n/**\n * Full-screen styles.\n */\n\n.fullScreenEditLinkContainer {\n /* See XWIKI-5864 (Possibility to not add the maximize button for some certain textareas). */\n display: none;\n}\n\n.cke_maximized .buttons {\n background-color: $theme.backgroundSecondaryColor;\n padding: .5em;\n}\n\n/* The \'skin-flamingo\' class name is removed from the body element in full-screen mode so we need to fix the auto-save \n styles. */\n.cke_maximized #autosaveControl input.autosave-frequency {\n width: 3em;\n}\n\n/* Make sure the notifications are visible in full-screen mode (e.g. for Save & Continue action) */\nbody[data-maximized] .xnotification-container {\n z-index: 9996;\n}\n\n/**\n * Resource Picker Styles\n * We duplicate a couple of Bootstrap styles because CKEditor resets the styles of all the dialog elements.\n */\n.resourcePicker.input-group {\n border-collapse: separate;\n position: relative;\n}\n\n.resourcePicker input[type=\"text\"] {\n box-sizing: border-box;\n padding: 6px;\n}\n\n.resourcePicker .input-group-btn {\n font-size: 0;\n position: relative;\n vertical-align: middle;\n width: 1%;\n}\n\n.resourcePicker .btn-default {\n color: #333;\n cursor: pointer;\n border: 1px solid #CCC;\n font-size: 14px;\n line-height: 1.428571429;\n padding: 6px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.resourcePicker .btn-default:hover,\n.resourcePicker .btn-default:focus {\n background-color: #E6E6E6;\n background-image: none;\n}\n\n.resourcePicker .btn-default[disabled] {\n cursor: default;\n}\n\n.resourcePicker .glyphicon {\n font-family: \'Glyphicons Halflings\';\n line-height: 1;\n position: relative;\n}\n\n.resourcePicker .caret {\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n border-top: 4px dashed;\n border-top: 4px solid;\n height: 0;\n vertical-align: middle;\n width: 0;\n}\n\n.resourcePicker .dropdown-toggle {\n padding: 6px;\n}\n\n.resourcePicker .dropdown-menu {\n background-clip: padding-box;\n background-color: white;\n border: 1px solid #CCC;\n border: 1px solid rgba(0, 0, 0, 0.15);\n float: left;\n font-size: 14px;\n margin: 2px 0 0;\n padding: 5px 0;\n position: absolute;\n}\n\n/* Overwrite the CKEditor style reset. */\n.resourcePicker .dropdown-menu li * {\n cursor: pointer;\n}\n\n.resourcePicker .resource-hint.breadcrumb a,\n.resourcePicker .resource-hint.breadcrumb li.ellipsis {\n font-size: smaller;\n}\n.resourcePicker .resource-hint.breadcrumb li.ellipsis {\n color: inherit;\n}\n\n.resourcePicker .resourceDisplay {\n box-sizing: border-box;\n}\n.resourcePicker .resourceDisplay.loading {\n background-image: url(\"$xwiki.getSkinFile(\'icons/xwiki/spinner.gif\')\");\n background-repeat: no-repeat;\n}\n\ntd.cke_dialog_contents_body {\n /* Make sure the resource type dropdown overflows outside the dialog body\n (otherwise we get a vertical scroll bar when opening the dropdown). */\n overflow: visible;\n}\n\n/**\n * Link Options Toggle\n */\n\n.linkOptionsToggle > .cke_dialog_ui_labeled_label {\n color: #777;\n cursor: pointer;\n}\n.linkOptionsToggle .arrow {\n display: inline-block;\n height: 0;\n width: 0;\n}\n.linkOptionsToggle .arrow-down {\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 4px solid #777;\n margin-bottom: 1px;\n}\n.linkOptionsToggle .arrow-right {\n border-bottom: 4px solid transparent;\n border-left: 4px solid #777;\n border-top: 4px solid transparent;\n margin-right: 4px;\n}\n\n/**\n * Custom tool bar icons (Glyphicon)\n */\na.cke_button.cke_button__xwiki-macro > span.cke_button_icon.cke_button__xwiki-macro_icon,\na.cke_button.cke_button__xwiki-macro-edit > span.cke_button_icon.cke_button__xwiki-macro-edit_icon,\na.cke_button.cke_button__officeimporter > span.cke_button_icon.cke_button__officeimporter_icon {\n /* This is needed for XWiki versions older than 7.1M1 where we overwrite the icons path (see above). */\n background-image: none !important;\n font-family: \'Glyphicons Halflings\';\n position: relative;\n top: 1px;\n}\n.cke_button_icon.cke_button__xwiki-macro_icon::before,\n.cke_button_icon.cke_button__xwiki-macro-edit_icon::before,\n.cke_button_icon.cke_button__officeimporter_icon::before {\n display: inline-block;\n text-align: center;\n width: 16px;\n}\n.cke_button_icon.cke_button__xwiki-macro_icon::before {\n content: \"\\e019\";\n}\n.cke_button_icon.cke_button__xwiki-macro-edit_icon::before {\n content: \"\\e032\";\n}\n.cke_button_icon.cke_button__officeimporter_icon::before {\n content: \"\\e022\";\n}\n\n/**\n * Autocomplete styles\n */\nul.cke_autocomplete_panel {\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n font: inherit;\n padding: 5px 0;\n width: auto;\n max-width: 100%;\n min-width: 200px;\n}\n.cke_autocomplete_panel > li.ckeditor-autocomplete-item {\n padding: 3px 12px;\n}\n.cke_autocomplete_panel > li.ckeditor-autocomplete-item > div {\n white-space: nowrap;\n}\n.ckeditor-autocomplete-item-icon-wrapper {\n display: inline-block;\n height: 14px;\n line-height: 14px;\n margin-right: .3em;\n text-align: center;\n width: 14px;\n}\n.ckeditor-autocomplete-item-icon-wrapper img {\n border-radius: 3px;\n max-height: 14px;\n max-width: 14px;\n vertical-align: text-top;\n}\n.ckeditor-autocomplete-item-hint {\n color: $theme.textSecondaryColor;\n font-size: smaller;\n}\n.ckeditor-autocomplete-item-hint:empty {\n margin-top: 0;\n}'),(-7424668375942065808,'content','{{velocity}}\n#set ($extraParams = \'\')\n#if ($doc.space != \'Main\')\n #set ($escapedDocumentReference = $services.rendering.escape($services.model.serialize($doc.documentReference,\n \'default\'), \'xwiki/2.1\'))\n #set ($extraParams = \"root=\'document:$escapedDocumentReference\'\")\n#end\n{{documentTree showTranslations=\"false\" showAttachments=\"false\" $extraParams /}}\n{{/velocity}}'),(-7420521090721339280,'description','The maximum number of child nodes to display when expanding a parent node for the first time. The rest of the child nodes are accessible through a \"more ...\" link. This parameter is basically used to paginate the child nodes and thus helps the tree scale when the number of child nodes is large.'),(-7381689786495166727,'codeToExecute','{{include reference=\"WikiManager.AdminWikisTemplatesSheet\" /}}'),(-7295598399470741098,'code','.xform dt.warning {\n margin-top: 0px;\n}'),(-7272254375090897470,'description','Some visibility levels (like \'user\' and \'group\') accept a parameter. In the case of the 2 mentioned levels, the value can be a serialized reference of a user or a group document.'),(-7190539450846751529,'codeToExecute',''),(-7183858144813920928,'description','Whether to show the tree node icons or not. You may want to hide the icons if all the tree nodes are of the same type or if you want to win some horizontal space.'),(-7149058994813736232,'description','The height of the displayed image, only taken into account if displayImage=true'),(-7148961447379926228,'code','define(\'EventTypeWidget\', [\'jquery\', \'xwiki-meta\', \'bootstrap-switch\'], function($, xm) {\n /**\n * Construct an EventTypeWidget.\n */\n return function(domElement, application) {\n var self = this;\n self.domElement = domElement;\n self.application = application;\n self.eventType = domElement.attr(\'data-eventtype\');\n self.cellAlert = domElement.find(\'.notificationTypeCell[data-format=\"alert\"]\');\n self.cellEmail = domElement.find(\'.notificationTypeCell[data-format=\"email\"]\');\n self.switchAlert = self.cellAlert.find(\'.notificationTypeCheckbox\');\n self.switchEmail = self.cellEmail.find(\'.notificationTypeCheckbox\');\n self.alertObjectNumber = self.cellAlert.attr(\'data-objnumber\');\n self.emailObjectNumber = self.cellEmail.attr(\'data-objnumber\');\n\n /**\n * Initialization\n */\n self.init = function () {\n // Replace the \'hidden\' class by a call to jQuery.hide();\n self.domElement.removeClass(\'hidden\').hide();\n // Enable bootstrap switches\n $([self.switchAlert, self.switchEmail]).bootstrapSwitch({\n size: \'mini\',\n labelText: \'$escapetool.javascript($services.icon.renderHTML(\"bell\"))\'\n });\n };\n\n // On change\n $(self.switchAlert).on(\'switchChange.bootstrapSwitch\', function(event, state) {\n self.application.updateSwitches();\n });\n $(self.switchEmail).on(\'switchChange.bootstrapSwitch\', function(event, state) {\n self.application.updateSwitches();\n });\n\n /**\n * Get the state of the alert switch\n */\n self.getAlertState = function() {\n return self.switchAlert.bootstrapSwitch(\'state\');\n };\n\n /**\n * Get the state of the email switch\n */\n self.getEmailState = function() {\n return self.switchEmail.bootstrapSwitch(\'state\');\n };\n\n /**\n * Set the state of the alert switch\n */\n self.setAlertState = function (state) {\n self.switchAlert.bootstrapSwitch(\'state\', state);\n };\n\n /**\n * Set the state of the email switch\n */\n self.setEmailState = function (state) {\n self.switchEmail.bootstrapSwitch(\'state\', state);\n };\n\n /**\n * Hide/Show the event type widget\n */\n self.toggleVisibility = function () {\n self.domElement.toggle();\n };\n\n // Call init\n self.init();\n };\n});\n'),(-7112122468006264168,'description','Whether to show the root node or not. The root node is not shown by default because it is usually implied from the context where the tree is displayed (e.g. a label before the tree). There are some cases though when you may want to display the root node: to be able to create a new node under the root.'),(-7029750735844180463,'code','XWiki.widgets.ModalPopup.prototype.showDialog = function(event) {\n if (event) {\n Event.stop(event);\n }\n // Only do this if the dialog is not already active.\n if (!this.active) {\n this.active = true;\n if (!this.dialog) {\n // The dialog wasn\'t loaded, create it.\n this.createDialog();\n }\n // Start listening to keyboard events\n this.attachKeyListeners();\n // Display the dialog\n this.dialog.show();\n }\n};\nXWiki.widgets.ModalPopup.prototype.closeDialog = function(event) {\n if (event) {\n Event.stop(event);\n }\n // Call optional callback\n this.options.onClose.call(this);\n // Hide the dialog, without removing it from the DOM.\n this.dialog.hide();\n if (this.options.removeOnClose) {\n this.dialog.remove();\n }\n // Stop the UI shortcuts (except the initial Show Dialog one).\n this.detachKeyListeners();\n // Re-enable the \'show\' behavior.\n this.active = false;\n}\n'),(-6955354629511272529,'async_context',''),(-6955354629511272529,'content','{{display reference=\"XWiki.Captcha.JCaptcha.Administration\" /}}'),(-6955354629511272529,'parameters',''),(-6950051007663280108,'code','.floatinginfobox iframe {\n border: 0;\n height: 169px;\n width: 100%;\n}'),(-6940411360578519214,'async_context',''),(-6940411360578519214,'content',''),(-6940411360578519214,'parameters','tip=$services.localization.render(\'help.tipsPanel.improveXWikiTip\')'),(-6917522471913086776,'async_context',''),(-6917522471913086776,'content','{{velocity}}{{html clean=\"false\"}} ## we need clean=\"false\" because we want to display the raw content\n #template(\'menus_macros.vm\')\n ##\n ## Display the items in the $menuContent variable to test it afterwards\n ##\n #define($menuContent)\n #set ($canHaveMenuSeparator = false)\n #foreach($uix in $services.uix.getExtensions(\'org.xwiki.platform.notifications\', {\'sortByParameter\' : \'order\'}))\n #if ($services.security.authorization.hasAccess(\'admin\', $uix.authorReference, $services.wiki.currentWikiDescriptor.reference))\n #if (\"$!uix.getParameters().separator\" == \'true\' && $canHaveMenuSeparator)\n #submenuseparator()\n #set ($canHaveMenuSeparator = false)\n #end\n #set ($content = $services.rendering.render($uix.execute(), \'html/5.0\'))\n $content\n #if (!$canHaveMenuSeparator && $stringtool.isNotBlank($content))\n #set ($canHaveMenuSeparator = true)\n #end\n #end\n #end\n #end\n ##\n ## Display the menu only if the content is not blank\n ##\n #set ($cachedMenuContent = $menuContent.toString())\n #if ($stringtool.isNotBlank($cachedMenuContent))\n <li class=\"dropdown\" id=\"tmNotifications\">\n <a class=\"icon-navbar dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n title=\"$services.localization.render(\'watchlist.notification.tooltip\')\">\n <span class=\"sr-only\">\n $services.localization.render(\'core.menu.toggleNavigation\')\n </span>\n $services.icon.renderHTML(\'bell\')\n </a>\n <ul class=\"dropdown-menu\">\n $cachedMenuContent\n </ul>\n </li>\n #end\n{{/html}}{{/velocity}}\n'),(-6917522471913086776,'parameters','order=20000'),(-6875884635062591148,'code','#includeMacros(\'Macros\')\n\n## CodeMirror base style required for basic usage + default Theme\n@import \"${codeMirrorBaseURL}lib/codemirror.css\";\n\n## Used by the search dialog CSS\n@import \"${codeMirrorBaseURL}addon/dialog/dialog.css\";\n\n## Used by search to display matches on the scrollbar\n@import \"${codeMirrorBaseURL}addon/search/matchesonscrollbar.css\";\n\n##\n## Custom CSS\n##\n\n#template(\'colorThemeInit.vm\')\n\n.CodeMirror {\n border: 1px solid $theme.borderColor;\n}\n\n## Match highlighter\n\n#set ($highlightColor = \"$!{request.highlightColor}\")\n.CodeMirror-focused .cm-matchhighlight {\n background-color: $highlightColor;\n}\n\n## Trailing empty whitespaces\n.cm-trailingspace {\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);\n background-position: bottom left;\n background-repeat: repeat-x;\n}'),(-6862683590652212044,'query','fq=type:DOCUMENT\nqf=doccontent^2 doccontentraw'),(-6843430447159297898,'description',''),(-6829381292663443490,'async_context',''),(-6829381292663443490,'content',''),(-6829381292663443490,'parameters','tip=$services.localization.render(\'help.tipsPanel.breadcrumbsTip\')'),(-6817336672546274907,'async_context',''),(-6817336672546274907,'code','{{wikis/}}'),(-6817336672546274907,'contentDescription',''),(-6817336672546274907,'contentJavaType',''),(-6817336672546274907,'description','Deprecated macro that should not be used, here for compatibility reason. Please use the \"wikis\" macro instead.'),(-6650760248951855894,'code','#template(\"colorThemeInit.vm\")\n.invitation, .invitation input[type=\'text\'], .invitation textarea, .invitation table {\n float: left;\n width: 450px;\n}\n\n/* Keep the table from overflowing */\n.invitation .message-table table, .invitation .history-table table {\n table-layout: fixed;\n word-wrap: break-word;\n}\n.invitation table th.checkboxcol {\n width: 5%\n}\n.invitation table th.sentDate {\n width: 15%\n}\n.invitation table th.recipient {\n width: 28%\n}\n.invitation table th.history {\n width: 18%\n}\n/* For message history table */\n.invitation table th.status-set-to {\n width: 10%\n}\n.invitation table th.log-entry {\n width: 60%\n}\n\n.invitation-preview {\n background-color: #FCFCFC;\n border: 1px solid $theme.get(\'menuSelectedEntryBackgroundColor\');\n padding: 3px;\n}\n\n.invitation-preview, .right-side {\n margin-left: 30px;\n}\n\n.invitation-preview .field {\n background-color: $theme.get(\'pageContentBackgroundColor\');\n margin-left: 20px;\n margin-bottom: 10px;\n padding: 10px;\n overflow: hidden;\n\n /* Makes the field fit with padding and margins. */\n width: 390px;\n}\n\n.clearboth {\n clear:both;\n}\n\n.invitation input[type=\'text\'], .invitation textarea {\n margin-bottom: 10px;\n}\n\n/* Labels */\n.invitation strong, .invitation label {\n font-size: .85em;\n text-transform: uppercase;\n}\n\n/* \"Preview:\" label */\n.invitation strong {\n padding-left: 30px;\n}\n\n.invitation-preview strong {\n padding-left: 20px;\n}'),(-6635353469385424653,'code','#template(\'colorThemeInit.vm\')\n\n.applicationsPanelMoreList {\n margin-top: 1em;\n}\n\n.applicationsPanel li img {\n float: left;\n width: 16px;\n height: 16px;\n}\n\n.panel-width-Medium .applicationsPanel li .application-img, \n.panel-width-Large .applicationsPanel li .application-img {\n display: block;\n float: left;\n}\n\n.applicationsPanel li .application-label {\n margin-left: 0.5em;\n}\n\n.applicationPanelMoreContainer ul {\n margin-left: 5px;\n}\n\n.applicationPanelMoreContainer li a {\n font-size: 90%;\n line-height: 16px;\n}\n\n.panel-width-Small .panel.Applications {\n background-color: transparent;\n border: 0;\n box-shadow: none;\n}\n\n.panel-width-Small .applicationsPanel li {\n list-style-type: none;\n padding: 0;\n text-align: center;\n}\n\n.panel-width-Small .applicationsPanel li a {\n padding: 0.7em 0;\n}\n\n.panel-width-Small .applicationsPanel .application-label {\n display: inline-block; /* Needed by IE for ellipsis */\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%; /* Needed by IE for ellipsis */\n}\n\n.panel-width-Small .applicationsPanel li img {\n float: none;\n}\n\n.panel-width-Small .applicationsPanel li .application-img {\n display: block;\n}\n\n.panel-width-Small .applicationsPanel li .application-label {\n margin-left: 0;\n}\n\n.panel-width-Small .panel.Applications .xwikipaneltitle {\n display: none;\n}\n\n.panel-width-Small .panel.Applications .xwikipanelcontents {\n border: 0;\n background-color: transparent;\n padding: 0;\n}\n\n.panel-width-Small .applicationPanelMoreContainer ul {\n padding: 0;\n margin: 0;\n background-color: $theme.pageContentBackgroundColor;\n}\n\n.panel-width-Small .applicationPanelMoreContainer ul li:hover {\n background-color: $theme.highlightColor;\n}\n\n.panel-width-Small .applicationPanelMoreContainer ul li:hover a {\n color: $theme.textPrimaryColor;\n}\n\n.panel-width-Small .application-img {\n font-size: 24px;\n}\n\n.panel-width-Small .application-img img {\n width: 24px;\n height: 24px;\n}\n\n.panel-width-Medium .applicationsPanel > li > a,\n.panel-width-Medium .applicationsPanelMoreList > li > a,\n.panel-width-Medium .applicationPanelMoreContainer ul> li > a,\n.panel-width-Large .applicationsPanel > li > a,\n.panel-width-Large .applicationsPanelMoreList > li > a,\n.panel-width-Large .applicationPanelMoreContainer ul > li > a {\n padding: 0;\n}\n\n.panel-width-Medium .applicationsPanel > li > a:hover,\n.panel-width-Medium .applicationsPanel > li > a:focus,\n.panel-width-Medium .applicationsPanelMoreList > li > a:hover,\n.panel-width-Medium .applicationsPanelMoreList > li > a:focus,\n.panel-width-Medium .applicationPanelMoreContainer ul> li > a:hover,\n.panel-width-Medium .applicationPanelMoreContainer ul> li > a:focus,\n.panel-width-Large .applicationsPanel > li > a:hover,\n.panel-width-Large .applicationsPanel > li > a:focus,\n.panel-width-Large .applicationsPanelMoreList > li > a:hover,\n.panel-width-Large .applicationsPanelMoreList > li > a:focus,\n.panel-width-Large .applicationPanelMoreContainer ul > li > a:hover \n.panel-width-Large .applicationPanelMoreContainer ul > li > a:focus {\n background-color: transparent;\n text-decoration: underline;\n}\n\n/* Phone case */\n@media (max-width: 768px) {\n .panel-width-Small .applicationsPanel li {\n float: left;\n width: 33%;\n }\n\n /* no responsive design for colibri */\n .skin-colibri .panel-width-Small .applicationsPanel li {\n float: none;\n width: inherit;\n }\n}\n\n@media (min-width: 768px) and (max-width: 992px) {\n .panel-width-Small .applicationsPanel li{\n float: left;\n width: 20%;\n }\n\n /* no responsive design for colibri */\n .skin-colibri .panel-width-Small .applicationsPanel li {\n float: none;\n width: inherit;\n }\n}\n\n/* for colibri */\n\n.skin-colibri .applicationPanelMoreContainer ul {\n margin-left: 0;\n}\n\n.skin-colibri .panel-width-Medium .applicationPanelMoreContainer ul,\n.skin-colibri .panel-width-Large .applicationPanelMoreContainer ul {\n margin-left: 20px;\n}\n\n.skin-colibri .panel-width-Small .applicationsPanel {\n margin: 0;\n}\n\n.skin-colibri .panel-width-Small .applicationsPanel li {\n padding: 15px 0;\n -moz-border-radius: 4px;\n -webkit-border-radius: 4px;\n border-radius: 4px;\n margin: 1px 0;\n}\n\n.skin-colibri .panel-width-Small .applicationsPanel li.active {\n background-color: $theme.buttonPrimaryBackgroundColor; \n}\n\n.skin-colibri .panel-width-Small .applicationsPanel li.active a {\n color: $theme.buttonPrimaryTextColor\n}\n\n.skin-colibri .panel-width-Small .applicationsPanel li:hover {\n background-color: $theme.highlightColor;\n}\n\n.skin-colibri .panel-width-Small .applicationsPanel li:hover a {\n color: $theme.textPrimaryColor; \n}\n'),(-6589299303513899624,'groups','XWiki.XWikiAllGroup'),(-6589299303513899624,'users',''),(-6546422371185832569,'lessCode','// Spacelab 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: #2d2d2d; // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: #666; // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #446E9B;\n@brand-success: #3CB521;\n@brand-info: #3399F3;\n@brand-warning: #D47500;\n@brand-danger: #CD0200;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-info;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/** XWiki already overrides these variables\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: @gray-darker;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: #474949;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: #eee;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: @brand-info;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: @navbar-default-link-hover-color;\n@navbar-default-link-active-bg: transparent;\n@navbar-default-link-disabled-color: #444;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-toggle-icon-bar-bg: #ccc;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 6.5%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #ddd;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #ddd;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: transparent;\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: @gray-light;\n@pagination-active-bg: #f5f5f5;\n@pagination-active-border: #ddd;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #468847;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #3a87ad;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #c09853;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #b94a48;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @link-color;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Spacelab 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700\");\n\n.btn-shadow(@color) {\n #gradient > .vertical-three-colors(lighten(@color, 15%), @color, 50%, darken(@color, 4%));\n filter: none;\n border: 1px solid darken(@color, 10%);\n}\n\n// Navbar =====================================================================\n\n.navbar {\n\n .btn-shadow(@navbar-default-bg);\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);\n\n &-inverse {\n .btn-shadow(@navbar-inverse-bg);\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n\n .badge {\n text-shadow: none;\n }\n\n &-nav > li > a,\n &-nav > li > a:hover {\n padding-top: (@navbar-padding-vertical + 2px);\n padding-bottom: (@navbar-padding-vertical - 2px);\n .transition(color ease-in-out .2s);\n }\n \n &-brand,\n &-brand:hover {\n .transition(color ease-in-out .2s);\n }\n\n .caret,\n .caret:hover {\n .transition(border-color ease-in-out .2s);\n }\n\n .dropdown-menu {\n text-shadow: none;\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n\n &-default {\n .btn-shadow(@btn-default-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-default-bg, 4%));\n }\n }\n\n &-primary {\n .btn-shadow(@btn-primary-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-primary-bg, 4%));\n }\n }\n\n &-success {\n .btn-shadow(@btn-success-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-success-bg, 4%));\n }\n }\n\n &-info {\n .btn-shadow(@btn-info-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-info-bg, 4%));\n }\n }\n\n &-warning {\n .btn-shadow(@btn-warning-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-warning-bg, 4%));\n }\n }\n\n &-danger {\n .btn-shadow(@btn-danger-bg);\n\n &:hover {\n .btn-shadow(darken(@btn-danger-bg, 4%));\n }\n }\n\n &-link {\n text-shadow: none;\n }\n\n &:active,\n &.active {\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\n// Navs =======================================================================\n\n// Indicators =================================================================\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.panel {\n\n &-primary {\n .panel-title {\n color: #fff;\n }\n }\n}\n\n// XWiki Customization ========================================================\n// Customization for the drawer\n@xwiki-drawer-menu-item-hover-color: @dropdown-link-hover-color;\n@xwiki-drawer-menu-item-hover-bg: @dropdown-link-hover-bg;\n\n'),(-6498630665715157959,'description','Comma separated list of visibility options that the macro should allow the user to choose from.\n\nThis list should be a sublist of the defualt ones: \'everyone\', \'followers\', \'group\', \'user\'.'),(-6431193923066791803,'lessCode','// Readable 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: lighten(@gray-base, 70%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #4582EC;\n@brand-success: #3FAD46;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 20%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Raleway\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-serif;\n\n@font-size-base: 16px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-sans-serif;\n@headings-font-weight: bold;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: @text-color;\n@btn-default-bg: #fff;\n@btn-default-border: #ddd;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ddd;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 65px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @text-color;\n@navbar-default-bg: @body-bg;\n@navbar-default-border: #ddd;\n\n// Navbar links\n@navbar-default-link-color: @link-color;\n@navbar-default-link-hover-color: @link-color;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: @navbar-default-link-color;\n@navbar-default-link-active-bg: transparent;\n@navbar-default-link-disabled-color: #333;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #ccc;\n@navbar-default-toggle-border-color: #ddd;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @text-color;\n@navbar-inverse-bg: @body-bg;\n@navbar-inverse-border: #ddd;\n\n// Inverted navbar links\n@navbar-inverse-link-color: @text-color;\n@navbar-inverse-link-hover-color: @text-color;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @text-color;\n@navbar-inverse-link-active-bg: transparent;\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #ddd;\n@navbar-inverse-toggle-icon-bar-bg: #ccc;\n@navbar-inverse-toggle-border-color: #ddd;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @text-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: #fff;\n@pagination-hover-bg: @brand-primary;\n@pagination-hover-border: @brand-primary;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: darken(@body-bg, 3%);\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: @brand-success;\n@state-success-bg: #dff0d8;\n@state-success-border: @brand-success;\n\n@state-info-text: @brand-info;\n@state-info-bg: #d9edf7;\n@state-info-border: @brand-info;\n\n@state-warning-text: @brand-warning;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: @brand-warning;\n\n@state-danger-text: @brand-danger;\n@state-danger-bg: #f2dede;\n@state-danger-border: @brand-danger;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-border;\n@alert-success-text: #fff;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-border;\n@alert-info-text: #fff;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-border;\n@alert-warning-text: #fff;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-border;\n@alert-danger-text: #fff;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #fff;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: #fff;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-border;\n\n@panel-info-text: #fff;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-border;\n\n@panel-warning-text: #fff;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-border;\n\n@panel-danger-text: #fff;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-border;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: darken(@body-bg, 3%);\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #fff;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @text-color;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @brand-primary;\n//** Page header border color\n@page-header-border-color: #ddd;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Readable 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Raleway:400,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n font-family: @headings-font-family;\n\n &-nav,\n &-form {\n margin-left: 0;\n margin-right: 0;\n }\n\n &-nav > li > a {\n @margin-vertical: ((@navbar-height - 2*@padding-base-vertical - @line-height-computed - 2px) / 2);\n margin: @margin-vertical 6px;\n padding: @padding-base-vertical @padding-base-horizontal;\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n &:hover {\n border: 1px solid #ddd;\n }\n }\n\n &-nav > .active > a,\n &-nav > .active > a:hover {\n border: 1px solid #ddd;\n }\n\n &-default .navbar-nav > .active > a:hover {\n color: @navbar-default-link-hover-color;\n }\n\n &-inverse .navbar-nav > .active > a:hover {\n color: @navbar-inverse-link-hover-color;\n }\n\n &-brand {\n padding-top: ((@navbar-height - 2*@font-size-large) / 2);\n padding-bottom: ((@navbar-height - 2*@font-size-large) / 2);\n line-height: 1.9;\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar {\n .navbar-nav > li > a {\n padding: @padding-base-vertical @padding-base-horizontal;\n }\n }\n}\n\n@media (max-width: (@grid-float-breakpoint - 1)) {\n .navbar {\n .navbar-nav > li > a {\n margin: 0;\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n font-family: @headings-font-family;\n}\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\nlegend {\n font-family: @headings-font-family;\n}\n\n.input-group-addon {\n font-family: @font-family-sans-serif;\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border: 1px solid #ddd;\n }\n}\n\n.pagination {\n\n font-family: @headings-font-family;\n\n &-lg > li > a,\n &-lg > li > span {\n padding: 14px 24px;\n }\n}\n\n.pager {\n\n font-family: @headings-font-family;\n\n a {\n color: @text-color;\n }\n\n a:hover {\n border-color: transparent;\n color: #fff;\n }\n\n .disabled a {\n border-color: @pager-border;\n }\n}\n\n// Indicators =================================================================\n\n.close {\n color: #fff;\n text-decoration: none;\n text-shadow: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n color: #fff;\n opacity: 1;\n }\n}\n\n.alert {\n .alert-link {\n color: @alert-success-text;\n text-decoration: underline;\n }\n}\n\n.label {\n font-family: @headings-font-family;\n font-weight: normal;\n\n &-default {\n border: 1px solid #ddd;\n color: @text-color;\n }\n\n}\n\n.badge {\n padding: 1px 7px 5px;\n vertical-align: 2px;\n font-family: @headings-font-family;\n font-weight: normal;\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.panel {\n .box-shadow(none);\n\n &-default {\n .close {\n color: @text-color;\n }\n }\n}\n\n.modal {\n .close {\n color: @text-color;\n }\n}\n\n// XWiki customization\n@font-size-h1: floor((@font-size-base * 1.7));\n@font-size-h2: floor((@font-size-base * 1.25));\n@font-size-h3: ceil((@font-size-base * 1.15));\n@font-size-h4: ceil((@font-size-base * 1.1));\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85));\n\n// Disable the XWiki separator in the navbar because this color theme already show its own\n.navbar-nav > .dropdown-split > .dropdown-split-left:after {\n display: none;\n}\n\n// Customization for the drawer\n@xwiki-drawer-menu-item-hover-color: @dropdown-link-hover-color;\n@xwiki-drawer-menu-item-hover-bg: @dropdown-link-hover-bg;'),(-6399138763333162170,'codeToExecute','{{include reference=\"XWiki.UserDirectoryConfigurationSheet\"}}'),(-6354117405756303102,'description','Specifies whether the node labels should look and behave as links (anchors).'),(-6337099933912888241,'query','fq=type:ATTACHMENT\nqf=attcontent'),(-6329321070309318772,'code','define(\'ApplicationWidget\', [\'jquery\', \'EventTypeWidget\', \'bootstrap-switch\'], function($, EventTypeWidget) {\n /**\n * Construct an application widget.\n */\n return function(domElement) {\n\n var self = this;\n self.domElement = domElement;\n self.applicationId = domElement.attr(\'data-applicationid\');\n self.cellAlert = domElement.find(\'.notificationAppCell[data-format=\"alert\"]\');\n self.cellEmail = domElement.find(\'.notificationAppCell[data-format=\"email\"]\');\n self.switchAlert = self.cellAlert.find(\'.notificationAppCheckbox\');\n self.switchEmail = self.cellEmail.find(\'.notificationAppCheckbox\');\n self.collapseButton = domElement.find(\'.collapseButton\');\n self.eventTypes = [];\n\n /**\n * Initialization\n */\n self.init = function () {\n // Creates event type widgets for this application\n self.domElement.find(\'.rowEventType\').each(function() {\n self.eventTypes.push(new EventTypeWidget($(this), self));\n });\n // Enable bootstrap switch.\n $([self.switchAlert, self.switchEmail]).bootstrapSwitch({\n size: \'small\',\n labelText: \'$escapetool.javascript($services.icon.renderHTML(\"bell\"))\'\n });\n // Set initial state for the switches\n self.updateSwitches();\n self.updateTypesOnChange = true;\n // Handle collapsing\n self.collapseButton.click(function() {\n for (var i = 0; i < self.eventTypes.length; ++i) {\n self.eventTypes[i].toggleVisibility();\n }\n });\n // Handle switch change\n self.switchAlert.on(\'switchChange.bootstrapSwitch\', function(event, state) {\n for (var i = 0; i < self.eventTypes.length; ++i) {\n self.eventTypes[i].setAlertState(state);\n }\n });\n self.switchEmail.on(\'switchChange.bootstrapSwitch\', function(event, state) {\n for (var i = 0; i < self.eventTypes.length; ++i) {\n self.eventTypes[i].setEmailState(state);\n }\n });\n };\n\n /**\n * Set the switch states according to their event type\n */\n self.updateSwitches = function() {\n var allAlertsOn = true;\n var allAlertsOff = true;\n var allEmailsOn = true;\n var allEmailsOff = true;\n for (var i = 0; i < self.eventTypes.length; ++i) {\n var eventType = self.eventTypes[i];\n allAlertsOn &= eventType.getAlertState();\n allAlertsOff &= !eventType.getAlertState();\n allEmailsOn &= eventType.getEmailState();\n allEmailsOff &= !eventType.getEmailState();\n }\n if (allAlertsOn) {\n self.switchAlert.bootstrapSwitch(\'state\', true);\n } else if (allAlertsOff) {\n self.switchAlert.bootstrapSwitch(\'state\', false);\n } else {\n self.switchAlert.bootstrapSwitch(\'indeterminate\', true);\n }\n if (allEmailsOn) {\n self.switchEmail.bootstrapSwitch(\'state\', true);\n } else if (allEmailsOff) {\n self.switchEmail.bootstrapSwitch(\'state\', false);\n } else {\n self.switchEmail.bootstrapSwitch(\'indeterminate\', true);\n }\n };\n\n // Call to init()\n self.init();\n };\n});\n'),(-6307811620380113862,'async_context',''),(-6307811620380113862,'code','{{velocity}}\n#if ($services.notification.watch.isEnabled() && $xcontext.userReference && ($xcontext.macro.params.target == \'user\' || $hasAdmin))\n#set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.NotificationsAutoWatchPreferencesMacro\'))\n{{html clean=\"false\"}}\n <div class=\"xform\">\n <dl>\n <dt><label>$escapetool.xml($services.localization.render(\'notifications.settings.watch.autowatchmode\'))</label>\n <p class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.settings.watch.autowatchmode.hint\'))</p>\n </dt>\n <dd>\n #if ($xcontext.macro.params.target == \'user\')\n #set ($mode = $services.notification.watch.automaticWatchMode)\n #else\n #set ($mode = $services.notification.watch.defaultAutomaticWatchMode)\n #end\n <select class=\"notificationAutoWatchMode\" data-target=\"$escapetool.xml($xcontext.macro.params.target)\">\n <option value=\"NONE\" #if($mode == \'NONE\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.AutomaticWatchModeClass_automaticWatchMode_NONE\'))</option>\n <option value=\"ALL\" #if($mode == \'ALL\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.AutomaticWatchModeClass_automaticWatchMode_ALL\'))</option>\n <option value=\"MAJOR\" #if($mode == \'MAJOR\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.AutomaticWatchModeClass_automaticWatchMode_MAJOR\'))</option>\n <option value=\"NEW\" #if($mode == \'NEW\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.AutomaticWatchModeClass_automaticWatchMode_NEW\'))</option>\n </select>\n </dd>\n </dl>\n </div>\n{{/html}}\n#elseif($xcontext.macro.params.target == \'wiki\' && !$hasAdmin)\n {{error}}\n {{translation key=\"notifications.settings.error.notAdmin\" /}}\n {{/error}}\n#elseif($xcontext.userReference)\n {{warning}}\n {{localization key=\"notifications.settings.watch.disabled\" /}}\n {{warning}}\n#else\n {{info}}\n {{translation key=\"notifications.settings.watch.forGuest\" /}}\n {{/info}}\n#end\n{{/velocity}}'),(-6307811620380113862,'contentDescription',''),(-6307811620380113862,'contentJavaType',''),(-6307811620380113862,'description',''),(-6274205128352087333,'description','Comma separated list of file extensions accepted by the property (to become a comma separated list of mimetypes when XWiki will use HTML5). All files are accepted if this parameter is empty.'),(-6271777559423118899,'code','#template(\'colorThemeInit.vm\')\n\n.search-facet-body .selectedLocation .breadcrumb {\n margin: .5em 0;\n}\n.search-facet-body .selectedLocation .breadcrumb li {\n padding: 0;\n}\n.search-facet-body .selectedLocation .breadcrumb li:hover {\n background-color: transparent;\n}\n.search-facet-body .selectedLocation .breadcrumb a {\n color: $theme.textSecondaryColor;\n}'),(-6264541891282285009,'lessCode','.navbar{\n #gradient > .vertical-three-colors(lighten(@navbar-default-bg, 10%), @navbar-default-bg, 50%, darken(@navbar-default-bg, 5%));\n}\n\nbody{\n #gradient > .vertical-three-colors(lighten(@body-bg, 10%), @body-bg, 50%, darken(@body-bg, 5%));\n}\n\n\n\n\n\n\n\n'),(-6245483878953798583,'html','<h2>Hello $xwiki.getUserName($userName, false),</h2>\n#set ($wikiurl = $xwiki.getURL($services.model.resolveDocument(\'\', \'default\', $doc.documentReference.extractReference(\'WIKI\'))))\n#set ($escapedURL = $escapetool.xml($passwordResetURL))\n#set ($wikiname = $request.serverName)\n<p>A password reset was requested for your account ($userName) on <a href=\"$wikiurl\">$wikiname</a>.\nIf you did not make the request, please ignore this message.</p>\n<p>In order to reset your password, please follow this link:<br/>\n<a href=\"$escapedURL\">$escapedURL</a></p>\n## Prevent leaking the value of the token\n#set ($escapedURL = \'\')\n'),(-6245483878953798583,'text','Hello $xwiki.getUserName($userName, false),\n\nA password reset was requested for your account ($userName) on ${request.getServerName()}.\nIf you did not make the request, please ignore this message.\n\nIn order to reset your password, please follow this link:\n\n$passwordResetURL\n'),(-6227098350361684668,'content','{{velocity}}\n#set($tagSpace = $NULL)\n#if ($doc.space != \"Main\")\n #set($tagSpace = $services.rendering.escape($doc.space, \'xwiki/2.1\'))\n#end\n\n{{tagcloud space=\"$!tagSpace\" /}}\n{{/velocity}}'),(-6193927094233192217,'code','document.observe(\'xwiki:livetable:newrow\', function(event) {\n // Add the xredirect parameter to the query string of the delete action to\n // redirect the user back to the live table after an application is deleted.\n var deleteLink = event.memo.row.down(\'td.actions\').down(\'a.actiondelete\');\n deleteLink.href = deleteLink.href + \'&xredirect=\' + encodeURIComponent(window.location.href);\n});'),(-6155983371713175213,'async_context',''),(-6155983371713175213,'content','{{velocity}}{{html clean=\"false\"}}\n ##\n ## Administer wiki\n ##\n #if ($hasGlobalAdmin && $isAdminAppInstalled)\n #template(\'drawer_macros.vm\')\n #set ($adminwikiaction = $!xwiki.getURL(\'XWiki.XWikiPreferences\', \'admin\'))\n #drawerItem($adminwikiaction, \'wrench\', $escapetool.xml($services.localization.render(\'core.menu.admin.wiki\')), \'tmAdminWiki\', \'rel=\"nofollow\"\')\n #end\n{{/html}}{{/velocity}}\n'),(-6155983371713175213,'parameters','order=20000\nseparator=true'),(-6144978731450242023,'longText1',''),(-6144978731450242023,'staticList1',''),(-6115730204412556138,'codeToExecute',''),(-6086101789605810646,'code','/************************************\n * Configure RequireJS to use jQuery-UI\n ************************************/\nrequire.config({\n paths: {\n \'jquery-ui\' : \"$services.webjars.url(\'jquery-ui\', \'jquery-ui.min\')\",\n ## The WebJar version doesn\'t match the version of the packaged jquery-ui-touch-punch library so we are forced to\n ## specify the library version when computing the WebJar resource URL.\n \'jquery-ui-touch-punch\' : \"$services.webjars.url(\'jquery-ui-touch-punch/0.2.3/jquery.ui.touch-punch.min\')\"\n },\n shim: {\n \'jquery-ui\' : [\'jquery\'],\n \'jquery-ui-touch-punch\': [\'jquery\', \'jquery-ui\']\n }\n});\n/************************************\n * Script that enable the drag & drop of applications\n ************************************/\nrequire([\'jquery\', \'xwiki-meta\', \'jquery-ui\', \'jquery-ui-touch-punch\'], function($, xm) {\n\n /**\n * Save the black list and the order configuration\n */\n var save = function() {\n // Generate the array that contains all the applications to have in the blacklist\n var blacklistElems = $(\'#blacklistedPanels li.draggableApp\');\n var blacklist = [];\n for (var i = 0; i < blacklistElems.length; ++i) {\n blacklist.push(blacklistElems[i].id);\n }\n // Generate the JSON array that contains the order of the displayed applications\n var displaylistElems = $(\'#displayedPanels li.draggableApp\');\n var displaylistOrder = [];\n for (var i = 0; i <displaylistElems.length; ++i) {\n displaylistOrder.push(displaylistElems[i].id);\n }\n $.ajax({\n url: \'$xwiki.getURL(\'PanelsCode.ApplicationsPanelConfigurationAjax\', \'get\', \'outputSyntax=plain\')\',\n data: {\n \'form_token\': xm[\'form_token\'],\n \'blacklist\': JSON.stringify(blacklist),\n \'orderlist\': JSON.stringify(displaylistOrder)\n },\n success: function(data, status) {\n if (data == \'SUCCESS\') {\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'platform.panels.applications.ajax.success\'))\', \'done\');\n } else if (data == \'BAD CSRF\') {\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'platform.panels.applications.ajax.csrf\'))\', \'error\');\n } else if (data == \'NO RIGHT\') {\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'platform.panels.applications.ajax.noright\'))\', \'error\');\n } else {\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'platform.panels.applications.ajax.error\'))\', \'error\');\n }\n },\n error: function() {\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'platform.panels.applications.ajax.error\'))\', \'error\');\n }\n });\n };\n\n /**\n * Initialization\n */\n $(document).ready(function() {\n // Define the selector for the elements on which we will use the jquery-ui sortable plugin, which allows to sort \n // inner elements with drag & drop.\n var sortableSelector = \'.appsPanel > div > ul\';\n \n // Enable the sortable plugin.\n // The \'connectWith\' option allows the drag & drop from a sortable list (e.g. the displayed panels) to an other\n // sortable list (e.g. the blacklisted panels).\n // Here we create 2 sortable lists, because the selector match those 2.\n $(sortableSelector).sortable({connectWith: sortableSelector});\n \n // Allow reverting the changes\n $(\'#bt-revert\').click(function(){\n // Refresh the page\n window.location.reload();\n });\n \n // Redefine the save action\n $(\'#bt-save\').click(save);\n });\n});\n'),(-6078261122503370161,'groups','XWiki.XWikiAllGroup'),(-6078261122503370161,'users','XWiki.XWikiGuest'),(-6042391712303784118,'async_context',''),(-6042391712303784118,'content','{{velocity}}{{html clean=\"false\"}} ## we need clean=\"false\" because we want to display the raw content of #submenuitem()\n ##\n ## The annotation feature can only work on the default view page. So display the button only if no viewer is used.\n ## Also display the button only when the page has content.\n ##\n #if ($xcontext.action == \'view\' && (\"$!request.viewer\" == \'\' || \"$!request.viewer\" == \'content\') && !$doc.isNew())\n ##\n ## Get the annotation configuration\n ##\n #set($config = \'AnnotationCode.AnnotationConfig\')\n #set($configObj = $xwiki.getDocument($config).getObject($config))\n #set($annotationsActivated = \"$!configObj.getValue(\'activated\')\" == \'1\')\n #set($exceptionSpaces = $configObj.getValue(\'exceptionSpaces\'))\n ##\n ## The annotations UIX is displayed if:\n ## * the annotations are activated, and the current space is not an exception of this rule\n ## OR\n ## * the annotations are displayed globally, but the current space is an exception of this rule\n #if (($annotationsActivated && !$exceptionSpaces.contains($doc.space)) || (!$annotationsActivated && $exceptionSpaces.contains($doc.space)))\n #template(\'menus_macros.vm\')\n ##\n ## Display the annotations activator link\n ##\n #set ($linkURL = \'#Annotations\')\n #if (\"$!configObj.getValue(\'annotationClass\')\" == \'XWiki.XWikiComments\')\n #set ($linkURL = \'#Comments\')\n #end\n #submenuitem($linkURL, $services.localization.render(\'annotations.title\'), \'tmAnnotationsTrigger\', \'tme\', \'edit\')\n #end\n #end\n{{/html}}{{/velocity}}\n'),(-6042391712303784118,'parameters','order=85000'),(-6024107242670355211,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\nObject.extend(XWiki, {\n userprofile : {\n init : function(container) {\n this.crtCategory = \'\';\n this.tabsContainer = (container || $(\'body\')).down(\'#user-vertical-menu\');\n if (!this.tabsContainer) {\n return;\n }\n this.tabsContainer.select(\'.category-tab\').each(function (tabElement) {\n tabElement.observe(\'click\', function(event) {\n Event.stop(event);\n this.switchTab(tabElement.id, true);\n }.bindAsEventListener(this));\n }.bind(this));\n this.tabsContainer.select(\'.category-tab.current\').each(function (activeTab) {\n this.updateCategoryFields(activeTab.id);\n document.fire(\'xwiki:profile:switchedCategory\', {\'category\' : activeTab.id});\n document.fire(\'xwiki:dom:refresh\');\n }.bind(this));\n this.handleCancelAction();\n\n // History navigation through our pushed states.\n window.addEventListener(\'popstate\', function(event) {\n if (event.state && event.state.category) {\n this.switchTab(\'vertical-menu-\' + event.state.category);\n }\n }.bindAsEventListener(this));\n // Store the initial history state so we can go back.\n history.replaceState({\n category: window.location.search.toQueryParams().category || \'profile\'\n }, document.title, document.location.href);\n },\n\n switchTab : function(tab, pushHistory) {\n var tabName = tab.substring(14); // 14 = len(\'vertical-menu-\')\n $(\"user-page-content\").select(\"div.user-page-pane\").each(function(pane){\n pane.addClassName(\'hidden\');\n });\n $(tabName + \'Pane\').removeClassName(\'hidden\');\n $(\"user-vertical-menu\").select(\"span.category-tab\").each(function(tab){\n tab.removeClassName(\'current\');\n });\n $(tab).addClassName(\'current\');\n this.updateCategoryFields(tab);\n if (pushHistory) {\n this.updateURL(tabName);\n }\n document.fire(\'xwiki:profile:switchedCategory\', {\'category\' : tab});\n document.fire(\'xwiki:dom:refresh\');\n },\n\n updateCategoryFields : function (category) {\n category = category.substring(14); // 14 = len(\'vertical-menu-\')\n this.crtCategory = category;\n this.updateField(\'xredirect\', XWiki.currentDocument.getURL(\'view\', \'category=\' + category));\n this.updateField(\'xcontinue\', XWiki.currentDocument.getURL(\'edit\', \'editor=inline&category=\' + category));\n this.updateField(\'category\', category);\n },\n\n updateURL : function (category) {\n if (history.pushState) {\n var params = window.location.search.toQueryParams();\n params.category = category;\n newQueryString = Object.toQueryString(params);\n\n var newURL = window.location.protocol + \'//\' + window.location.host + window.location.pathname + \'?\' + newQueryString;\n window.history.pushState({category : category}, \'\', newURL);\n }\n },\n\n updateField : function (fieldName, value) {\n var element = $$(\'input[name=\' + fieldName + \']\');\n if (element && element.size() > 0) {\n element[0].value = value;\n }\n },\n\n handleCancelAction : function() {\n var elements = $$(\'form .buttons input[type=submit][name=action_cancel]\');\n if (elements && elements.size() > 0) {\n var button = elements[0];\n Event.stopObserving(button, \'click\');\n button.observe(\'click\', function(event){\n event.stop();\n window.location = XWiki.currentDocument.getURL(\'view\', \'category=\' + this.crtCategory)\n }.bindAsEventListener(this));\n }\n }\n }\n});\n\nvar init = function(event) {\n ((event && event.memo.elements) || [$(\'body\')]).each(function(element) {\n XWiki.userprofile.init(element);\n });\n return true;\n};\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\ndocument.observe(\'xwiki:dom:updated\', init);\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));'),(-5988059480303893268,'groups','XWiki.XWikiAdminGroup'),(-5988059480303893268,'users',''),(-5945087430723582721,'javamail_extra_props',''),(-5945087430723582721,'ldap_fields_mapping',''),(-5945087430723582721,'ldap_group_mapping',''),(-5874525041824998410,'javamail_extra_props',''),(-5874525041824998410,'messageBodyTemplate','{{velocity}}\n#set($discard = \"#template(\'colorThemeInit.vm\')\")\n#if(\"$!theme\" == \"\")\n #set($theme = {\"linkColor\":\"#4791BC\"})\n#end\n#set($userName = $xwiki.getUserName($xcontext.getUser(), false))\n#set($wikiName = $xwiki.getRequestURL().replaceAll(\"http://([^/:]*).*$\", \"$1\"))\n#set($guestActionsURL = $xwiki.getDocumentAsAuthor($config.get(\"guestsActionsPage\")).getExternalURL())\n#set($linkStyle = \"color:$theme.get(\'linkColor\');text-decoration:none;\")\n#set($bigText = \"font-size:130%;\")\n#set($joinLink = \"float:left;\")\n#set($declineLink = \"color:#f88;float:right;text-decoration:none;\")\n\n$services.localization.render(\'xe.invitation.emailContent.userHasInvitedYouToJoinWiki\', [$userName, $wikiName])\n\n{{html clean=false}}\n#if(\"$!messageBody\" != \"\")\n <p style=\"$bigText\">\n $!escapetool.xml($!messageBody)\n </p>\n#end\n<p style=\"margin-top:30px\">\n<a href=\"${guestActionsURL}?doAction_accept=y&messageID=$messageID\" style=\"$bigText$joinLink$linkStyle\">\n$services.localization.render(\'xe.invitation.emailContent.joinLink\')\n</a>\n<a href=\"${guestActionsURL}?doAction_decline=y&messageID=$messageID\" style=\"$bigText$declineLink\">\n $services.localization.render(\'xe.invitation.emailContent.declineLink\')\n</a></p>\n<hr style=\"clear:both\" />\n$services.localization.render(\'xe.invitation.emailContent.reportMessage\', [\"<a href=$escapetool.getQ()${guestActionsURL}?doAction_report=y&messageID=$messageID$escapetool.getQ() style=$escapetool.getQ()$linkStyle$escapetool.getQ()>\", \"</a>\"])\n{{/html}}\n{{/velocity}}'),(-5874525041824998410,'messageBodyTemplatePlain','{{velocity}}\n#set($userName = $xwiki.getUserName($xcontext.getUser(), false))#set($wikiName = $xwiki.getRequestURL().replaceAll(\"https?://([^/:]*).*$\", \"$1\"))#set($guestActionsURL = $xwiki.getDocumentAsAuthor($config.get(\'guestsActionsPage\')).getExternalURL())$services.localization.render(\'xe.invitation.emailContent.userHasInvitedYouToJoinWiki\', [$userName, $wikiName])#if(\"$!messageBody\" != \'\') $messageBody#end$services.localization.render(\'xe.invitation.emailContent.joinLink\')${guestActionsURL}?doAction_accept=y&messageID=$messageID$services.localization.render(\'xe.invitation.emailContent.declineLink\')${guestActionsURL}?doAction_decline=y&messageID=$messageID$services.localization.render(\'xe.invitation.emailContent.reportMessage\', [\'\', \"$util.getNewline()${guestActionsURL}?doAction_decline=y&messageID=$messageID\"]){{/velocity}}'),(-5858829132933293510,'jobDescription',' '),(-5858829132933293510,'script',''),(-5815924236311488463,'code','require([\'jquery\', \'bootstrap\'], function($) {\n $(document).ready(function() {\n\n // Some variables used in the next 2 functions\n var globalSearch = $(\'#globalsearch\');\n var globalSearchInput = globalSearch.find(\'input\');\n var globalSearchButton = globalSearch.find(\'button\');\n\n // Open the global search when the user click on the global search button\n globalSearchButton.click(function(event) {\n if (!globalSearch.hasClass(\'globalsearch-close\') && globalSearchInput.val().length > 0) {\n return true;\n }\n globalSearch.removeClass(\'globalsearch-close\');\n globalSearchInput.focus();\n return false;\n });\n\n // Close the global search when the focus is lost\n globalSearchInput.focusout(function() {\n // In order to let the main thread setting the focus to the new element, we execute the following code\n // in a callback.\n setTimeout( function () {\n // We close the global search only if the focus is not on the search input or the search button.\n // Without this, the global search would be close each time the user click on the button (even when it\'s for\n // actually performing the search).\n if (document.activeElement !== globalSearchButton[0] && document.activeElement !== globalSearchInput[0]) {\n globalSearch.addClass(\'globalsearch-close\');\n }\n }, 1);\n });\n \n // Close dropdown menus when the search button is clicked\n globalSearchButton.click(function(event) {\n $(\'[data-toggle=\"dropdown\"][aria-expanded=\"true\"]\').dropdown(\'toggle\');\n });\n\n });\n});'),(-5791593190161431644,'javamail_extra_props',''),(-5791593190161431644,'ldap_fields_mapping',''),(-5791593190161431644,'ldap_group_mapping',''),(-5766403768966414239,'groups',''),(-5766403768966414239,'users','XWiki.XWikiGuest'),(-5754761107389641598,'groups',''),(-5754761107389641598,'users',''),(-5678940810139989801,'code','#body[contenteditable=\"true\"] {\n /* We use padding (instead of margin) in order to support Bootstrap grid layouts and accomodate for the use of\n negative margins used by the .row class. */\n /* We need more space at the bottom in order to be sure that the magic line is visible all the time (see CKEDITOR-283:\n Cannot add content after a DIV located at the end of the document) */\n padding: 15px 15px 30px;\n}\n\n/* Fix the link styles. The HTML structure is a bit different in edit mode. */\na[data-linktype=\"external\"] {\n background: url(\"$xwiki.getSkinFile(\'icons/xwiki/external-link.png\')\") no-repeat scroll right center transparent;\n padding-right: 12px;\n}\na[data-linktype=\"create\"] {\n text-decoration: underline;\n}\na[data-linktype=\"create\"]::after {\n background-color: #08C;\n border-radius: 8px;\n color: white;\n content: \"?\";\n display: inline-block;\n font-size: 80%;\n margin-left: 4px;\n padding: 0 4px;\n text-decoration: none;\n}\n\n.macro-placeholder {\n /* Hide the placeholder by default and show it only if the macro is editable. */\n display: none;\n font-family: monospace;\n font-size: smaller;\n}\n.macro[data-widget=\"xwiki-macro\"] > span.macro-placeholder {\n display: inline;\n}\n.macro[data-widget=\"xwiki-macro\"] > div.macro-placeholder {\n display: block;\n}\n\n/* Prevent the horizontal scroll bar on IE11. We already limit the image width from the skin (in order to have\n responsive images) but this is not enough for IE11 because the image element has a wrapper.\n See CKEDITOR-143: Horizontal scroll bar displayed when inserting a large image on IE11 */\n.cke_widget_image {\n max-width: 100%;\n}'),(-5527868429789664141,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\nXWiki.AnnotationSettings = Class.create({\n initialize : function() {\n this.addCheckboxListeners();\n this.addClearListeners();\n this.addToggleFilterVisibility(\'.criterion-label\', \'.criterion\', \'collapsed\');\n this.addToggleFilterVisibility(\'.annotation-filters-toggler a\', \'.annotation-filters\', \'collapsed\');\n // send a filter change event to notify annotations of the initial state of the loaded filter\n document.fire(\"xwiki:annotations:filter:changed\", this.getCurrentFilter());\n },\n\n addCheckboxListeners : function() {\n $$(\'.criteria input[type=checkbox]\').each(function(item) {\n item.observe(\'click\', function(event) {\n // 1/ Update annotations\n var filter = this.getCurrentFilter();\n document.fire(\"xwiki:annotations:filter:changed\", filter);\n // 2/ Some visual changes:\n var input = event.element();\n input.up().toggleClassName(\'selected\');\n var criterion = input.up(\'.criterion\');\n if (criterion.select(\'label.selected\').size() > 0) {\n criterion.addClassName(\'active\');\n } else {\n criterion.removeClassName(\'active\');\n }\n }.bindAsEventListener(this));\n }, this);\n },\n\n addClearListeners : function () {\n $$(\'.criterion .clear\').each(function(item) {\n item.observe(\'click\', function(event) {\n event.stop();\n // 1/ Unckeck all options + some visual changes:\n var criterion = event.element().up(\'.criterion\');\n criterion.select(\'label.selected\').each(function(item) {\n item.removeClassName(\'selected\');\n item.down(\'input\').checked = false;\n });\n criterion.removeClassName(\'active\');\n // 2/ Update annotations\n var filter = this.getCurrentFilter();\n document.fire(\"xwiki:annotations:filter:changed\", filter);\n }.bindAsEventListener(this));\n }, this);\n },\n\n /**\n * Reads the current filter from the filtering checkboxes.\n */\n getCurrentFilter : function() {\n var filter = [];\n // for each criterion\n $$(\'.criteria .criterion\').each(function(criterion) {\n // get its name\n var criterionName = criterion.down(\'input[type=hidden]\');\n if (!criterionName) {\n return;\n }\n criterionName = criterionName.name;\n // now go down and gel all values checkboxes which are checked\n var values = [];\n criterion.select(\'input[type=checkbox]\').each(function(checkbox) {\n if(checkbox.checked) {\n values.push(checkbox.value);\n }\n });\n // and stack them in the filter\n for (var i = 0; i < values.length; i++) {\n filter.push({\'name\' : criterionName, \'value\' : values[i]});\n }\n });\n return filter;\n },\n\n /**\n * Expand/Collapse elements of the filter widget\n */\n addToggleFilterVisibility : function(triggerSelector, parentSelector, toggledClassName) {\n $$(triggerSelector).each(function(item) {\n item.observe(\'click\', function(event) {\n event.stop();\n var parent = event.element().up(parentSelector);\n if (parent) {\n parent.toggleClassName(toggledClassName);\n }\n });\n });\n }\n});\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));\n\ndocument.observe(\'xwiki:annotations:settings:loaded\', function() {\n new XWiki.AnnotationSettings();\n});'),(-5517713055023142395,'codeToExecute','{{html clean=\"false\"}}\n<form id=\"$formId\" method=\"post\" action=\"$formAction\" class=\"xform\">\n{{/html}}\n\n{{include reference=\"XWiki.SearchSuggestConfig\" context=\"new\" /}}\n\n{{html clean=false}}\n ## We add in a redirect field to prevent the user from being carried away when they save if they don\'t have JavaScript.\n #set ($thisURL = $request.getRequestURL())\n #if ($request.getQueryString() && $request.getQueryString().length() > 0)\n #set ($thisURL = \"${thisURL}?$request.getQueryString()\")\n #end\n <fieldset>\n <input type=\"hidden\" id=\"${escapedAppName}_redirect\" name=\"$redirectParameter\" value=\"$escapetool.xml($thisURL)\" />\n <input type=\"hidden\" name=\"form_token\" value=\"$!services.csrf.token\" />\n <input type=\"hidden\" name=\"comment\" value=\"$escapetool.xml($services.localization.render(\'platform.search.suggestConfigSaveComment\'))\" />\n </fieldset>\n <div class=\"bottombuttons\">\n <p class=\"admin-buttons\">\n <span class=\"buttonwrapper\">\n <input class=\"button\" type=\"submit\" name=\"action_saveandcontinue\" value=\"$services.localization.render(\'admin.save\')\" />\n </span>\n </p>\n </div>\n</form>\n{{/html}}'),(-5497449673514193259,'content','{{velocity}}\n#if ($services.messageStream.isActive())\n #if (!$isGuest)\n {{messageSender/}}\n #else\n #set ($queryString = \"xredirect=$escapetool.url($xwiki.requestURL)\")\n (%class=\'noitems\'%)$services.localization.render(\'xe.activity.messages.error.loginToSendMessage\', [\"path:$doc.getURL(\'login\', $queryString)\"])\n #end\n#elseif ($xcontext.action == \'edit\')\n #set ($url = $xwiki.getURL(\'XWiki.XWikiPreferences\', \'admin\', \'editor=globaladmin§ion=MessageStream\'))\n $services.localization.render(\'xe.activity.messages.inactive\', [\"path:$url\"])\n#end\n{{/velocity}}'),(-5459804266243055652,'longText1','[[image:poster.png||width=\"64\"]]'),(-5459804266243055652,'staticList1','comedy|romance'),(-5454451173182605720,'description','Comma separated list of tags to display activity for.'),(-5396471212877958515,'description','Main wiki'),(-5396471212877958515,'owner','xwiki:XWiki.waritko'),(-5386731612909452646,'async_context',''),(-5386731612909452646,'code','{{template name=\"tree_macros.vm\" /}}\n\n{{velocity output=\"false\"}}\n#set ($options = {})\n#foreach ($parameterName in $xcontext.macro.params.parameterNames)\n #set ($discard = $options.put($parameterName, $xcontext.macro.params.get($parameterName)))\n#end\n#prepareTreeOptions($options)\n#set ($content = $xcontext.macro.content)\n#if (\"$!content\" == \'\' && $xcontext.action == \'edit\' && $editor == \'wysiwyg\')\n #set ($content = \"$services.icon.render(\'chart_organisation\') $services.localization.render(\'tree.macro.editModeWarning\')\")\n#end\n#set ($output = \"(% #treeAttributes($options true) %)((($!content)))\")\n## Parse the output and return the resulting XDOM blocks.\n#set ($xcontext.macro.result = $services.rendering.parse($output, $xwiki.currentContentSyntaxId).children)\n{{/velocity}}'),(-5386731612909452646,'contentDescription','You can use nested HTML unordered lists to describe the tree structure. See http://www.jstree.com/docs/html/ for more information.'),(-5386731612909452646,'contentJavaType',''),(-5386731612909452646,'description','Displays a tree hierarchy defined by the macro content or the source parameter.'),(-5326398706328161527,'groups',''),(-5326398706328161527,'users','xwiki:XWiki.Admin'),(-5187367765274218632,'description','Comma separated list of authors whose modifications to show.'),(-4982868404618279774,'async_context',''),(-4982868404618279774,'content','{{velocity}}\n#set ($pages = $tdoc.includedPages)\n#if ($pages.size() > 0 || $showEmptyPanels)\n#largepanelheader($services.localization.render(\'xe.panels.includedDocs.title\'))\n$services.localization.render(\'xe.panels.includedDocs.count\', [$pages.size()])\n#foreach ($page in $pages)\n * [[$page>>$page]] [[[[image:icon:page_white_edit||alt=\"$services.localization.render(\'panels.documentInformation.editIncluded\', [$page])\"]]>>path:$xwiki.getURL($page, \'edit\')]]\n#end\n#panelfooter()\n#end\n{{/velocity}}'),(-4982868404618279774,'description','Displays the documents included in the curent document.'),(-4917184847721938138,'code','\n.macroexample {\n margin-top: 1em;\n}\n.macroexample > .tab-content {\n border: 1px solid #DDD;\n border-top: 0 none;\n border-radius: 0 0 4px 4px;\n padding: 1em;\n}'),(-4904968710103385838,'async_context',''),(-4904968710103385838,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'addproperty\'))\n{{html}}\n<form id=\"propadd\" method=\"post\" action=\"$doc.getURL(\'propadd\')\" onsubmit=\"cancelCancelEdit()\">\n<div class=\"padded\">\n<input type=\"hidden\" name=\"form_token\" value=\"$!{services.csrf.getToken()}\" />\n<input type=\"hidden\" name=\"xredirect\" value=\"$doc.getURL(\'edit\', \'editor=class\')\"/>\n<label for=\"propname\">$services.localization.render(\'propname\'):</label><br />\n<input type=\"text\" id=\"propname\" name=\"propname\" value=\"\" size=\"20\" /><br />\n<label for=\"proptype\">$services.localization.render(\'proptype\'):</label><br />\n<select id=\"proptype\" name=\"proptype\" size=\"1\">\n<option value=\"---\">$services.localization.render(\'selectproptype\')</option>\n#foreach($prop in $xwiki.metaclass.properties)\n<option value=\"$prop.name\">$prop.prettyName</option>\n#end\n</select>\n<span class=\"buttonwrapper\">\n<input type=\"submit\" class=\"button\" value=\"$services.localization.render(\'addproperty\')\"/></span>\n</div>\n</form>\n{{/html}}\n#panelfooter()\n{{/velocity}}'),(-4904968710103385838,'description','Form which allows adding a class property.'),(-4886940583401620716,'async_context',''),(-4886940583401620716,'content',''),(-4886940583401620716,'parameters','label=$services.localization.render(\'search.extension.title.database\')\nadmin=\nsearch=Main.DatabaseSearch'),(-4885307809194298191,'longText1','[[image:Charlie_Chaplin_portrait.png||width=\"64\"]]'),(-4885307809194298191,'staticList1','actor|director|producer'),(-4871704152454236313,'code','#template(\'colorThemeInit.vm\')\n.panelcontainer {\n background-color: $theme.pageBackgroundColor;\n border: 1px solid $theme.borderColor;\n height: 200px;\n overflow: hidden;\n padding: 4px;\n}\n\n.panelcontainer .panel:hover {\n cursor: move;\n}\n\n.panelitemc {\n float: left;\n height: 276px;\n margin: 0 4px;\n width: 200px;\n}\n\n.panelitemc .xwikibuttonlink {\n border: 1px solid $theme.borderColor;\n border-top: 0;\n text-align: center;\n}\n.panelitemc .xwikibuttonlink p {\n margin: 0;\n}\n\n.panelitemc .xwikibuttonlink a {\n padding: 0 5px;\n}\n\n.panelitemc .label {\n color: $theme.textPrimaryColor;\n font-weight: 700;\n padding: 2px 0;\n text-align: center;\n}\n\n.placeholder {\n background-color: $theme.backgroundSecondaryColor;\n}\n\n#dhtmltooltip {\n background-color: $theme.highlightColor;\n border: 1px solid $theme.borderColor;\n padding: 2px 4px;\n position: absolute;\n text-align: justify;\n z-index: 500;\n}\n\n#panelwizardbuttons {\n margin: 15px 0 10px;\n}\n\n#PanelListSection, #PageLayoutSection {\n margin: 15px 0 0;\n}\n\n/* ----------------Page Layout Selection-----------------*/\n.pagelayoutoption {\n cursor: pointer;\n}\n\n.pagelayoutoption label {\n color: $theme.textSecondaryColor;\n}\n\ndiv.layoutmaquette {\n height: 100px;\n padding: 5px;\n width: 100px;\n}\n\ndiv.lmcontentcolumn {\n background-color: #eee;\n border: 1px solid #aaa;\n height: 90px;\n}\n\ndiv.lmleftcolumn, div.lmrightcolumn {\n background-color: #ddd;\n border: 1px solid #aaa;\n float: left;\n height: 60px;\n width: 20px;\n}\n\ndiv.lmrightcolumn {\n float: right;\n}\n\n#leftcolumn div.lmcontentcolumn {\n margin-left: 24px;\n}\n\n#rightcolumn div.lmcontentcolumn {\n margin-right: 24px;\n}\n\n#bothcolumns div.lmcontentcolumn {\n margin-left: 24px;\n margin-right: 24px;\n}\n\ndiv.pagelayoutoption:hover .lmcontentcolumn {\n background-color: #ddd;\n}\n\ndiv.pagelayoutoption:hover .lmleftcolumn,\n div.pagelayoutoption:hover .lmrightcolumn {\n background-color: #acf;\n}\n\n#selectedoption .lmcontentcolumn {\n background-color: #acf;\n}\n\n#selectedoption .lmleftcolumn,\n #selectedoption .lmrightcolumn {\n background-color: #369;\n}\n\n#selectedoption label, .pagelayoutoption:hover label {\n color: $theme.titleColor;\n}'),(-4847594449416545105,'code','require([\'jquery\', \'bootstrap\'], function($) {\n var adminPageContent = $(\'#admin-page-content\');\n var generalForm = adminPageContent.find(\'form#wysiwyg\');\n var editorTabs = generalForm.nextAll(\'.nav-tabs\').first();\n var tabTemplate = editorTabs.children().first();\n var tabContentTemplate = editorTabs.next(\'.tab-content\').children().first();\n var editorForms = adminPageContent.find(\'form\').not(generalForm);\n editorForms.each(function() {\n var form = $(this);\n var id = form.attr(\'id\') + \'Tab\';\n // Add the tab.\n var tab = tabTemplate.clone().removeClass(\'hidden\').insertBefore(tabTemplate);\n tab.find(\'a\').attr({\n \'href\': \'#\' + id,\n \'aria-controls\': id,\n \'data-editorId\': form.attr(\'data-editorId\')\n }).text(form.attr(\'data-label\') || id);\n // Add the tab content.\n var tabContent = tabContentTemplate.clone().removeClass(\'hidden\').insertBefore(tabContentTemplate);\n tabContent.attr(\'id\', id).append(form);\n });\n // Show the configuration for the active editor, or the first one if none is active.\n var activeTab = editorTabs.find(\'a[data-editorId=\"\' + editorTabs.attr(\'data-defaultEditorId\') + \'\"]\');\n if (activeTab.size() === 0) {\n activeTab = editorTabs.find(\'a[data-editorId]\').first();\n }\n activeTab.tab(\'show\');\n});'),(-4690084853668006597,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\nXWiki.Selection = Class.create({\n container : false,\n selectionText : false,\n selectionContext : false,\n selectionOffset : false,\n // the selection range\n range : false,\n // the list of elements that wrap the selection to make it colored, in FF\n highlightWrappers : false,\n // the parent of the selection and the selection inner HTML to make it colored in IE and to be able to rollback this change\n selectionParent : false,\n selectionParentInnerHTML : false,\n // position of the last mouse up, to know where to display the dialog\n offsetX : false,\n offsetY : false,\n // how many characters to expand left & right in standard impl\n step : 5,\n // how may words to expand left & right on IE\n wordStep : 1,\n\n initialize : function (container) {\n if (!container) {\n return;\n }\n this.container = container;\n // on IE we listen to the mousedown and remember the position of the mousedown of the selection to know where to display the dialog for annotation creation\n if (!window.getSelection) {\n this.container.observe(\'mousedown\', function(event) {\n // very ugly hack to get these values on body since the first positioned ancestor for the panel to be displayed is the body and we need this offsets\n this.offsetX = event.pointerX();\n this.offsetY = event.pointerY();\n }.bindAsEventListener(this));\n }\n },\n\n computeSelection : function () {\n // reset the selection state\n this.selectionText = false;\n this.range = false;\n this.selectionContext = false;\n this.selectionOffset = false;\n this.highlightWrappers = false;\n this.selectionParent = false;\n this.selectionParentInnerHTML = false;\n // if there is no container to get selection in, selection is always false\n if (!this.container) {\n return;\n }\n if (window.getSelection) {\n // FF selection & hopefully other browsers\n if (window.getSelection().rangeCount == 0) {\n return;\n }\n this.range = window.getSelection().getRangeAt(0);\n // ignore if the selection is in the passed container\n if (!this.isDescendantOrSelf(this.container, this.range.commonAncestorContainer)) {\n return;\n }\n this.selectionText = this.range.toString();\n } else {\n // IE selection\n if (document.selection.type == \'Text\') {\n this.range = document.selection.createRange();\n // ignore if the selection is in the passed container\n if (!this.isDescendantOrSelf(this.container, this.range.parentElement())) {\n return;\n }\n this.selectionText = this.range.text;\n }\n }\n if (this.selectionText.strip() == \'\') {\n this.selectionText = false;\n }\n },\n\n isDescendantOrSelf : function(ancestor, descendant) {\n return ancestor == descendant || Element.descendantOf(descendant, ancestor);\n },\n\n computeContext : function() {\n if (window.getSelection) {\n this.computeContextFF();\n } else {\n this.computeContextIE();\n }\n },\n\n // these functions are here because they depend on selection\n\n highlightSelection : function(color) {\n if (!this.range) {\n // there should be some selection at this point\n return;\n }\n if (window.getSelection) {\n // standard\n // create an annotation highlight span around this content\n var highlightWrapperTemplate = new Element(\'span\', {\'style\': \'background-color: \' + color, \'class\' : \'selection-highlight\'});\n // get all the text nodes of this range\n var rangeTextNodes = this.getRangeTextNodes();\n // and remove all the ranges in this selection, otherwise so messed up things will happen\n window.getSelection().removeAllRanges();\n this.highlightWrappers = new Array();\n rangeTextNodes.each(function(text) {\n // clone a highlightWrapper from the template\n var highlightWrapper = highlightWrapperTemplate.clone();\n highlightWrapper.update(text.textContent.escapeHTML());\n text.parentNode.replaceChild(highlightWrapper, text);\n this.highlightWrappers.push(highlightWrapper);\n }.bind(this));\n } else {\n // IE\n // get the selection parent and its inner HTML to be able to restore it after\n this.selectionParent = this.range.parentElement();\n this.selectionParentInnerHTML = this.selectionParent.innerHTML;\n // and finally color it\n this.range.execCommand(\"BackColor\", false, color);\n }\n },\n\n /**\n * Returns all the text nodes in the range, in depth first preorder, and also splitting the startContainer & endContainer in text nodes by the start & end offset, if needed\n */\n getRangeTextNodes : function() {\n var startContainer = this.range.startContainer;\n var endContainer = this.range.endContainer;\n var startOffset = this.range.startOffset;\n var endOffset = this.range.endOffset;\n\n var firstLeaf = this.getFirstLeafInRange(this.range);\n var lastLeaf = this.getLastLeafInRange(this.range);\n\n var leafs = this.getLeafsBetween(firstLeaf, lastLeaf);\n // filter out the text leafs\n var textLeafs = leafs.findAll(function(item) {\n return item.nodeType == 3;\n });\n\n // and now split the ends, if necessary\n if (startContainer == textLeafs[0] && startOffset != 0) {\n // split the start\n textLeafs[0] = startContainer.splitText(startOffset);\n // if the start container was the same as the end container, the end container must move to the split part of the start container and its offset must be updated\n if (startContainer == endContainer) {\n endOffset = endOffset - startOffset;\n endContainer = textLeafs[0];\n }\n }\n if (endContainer == textLeafs[textLeafs.length - 1] && endOffset != endContainer.length) {\n // and hope that this will stay in the container\n endContainer = endContainer.splitText(endOffset);\n }\n\n return textLeafs;\n },\n\n getLeafsBetween : function(startLeaf, endLeaf) {\n var leafsArray = new Array();\n var currentLeaf = startLeaf;\n leafsArray.push(startLeaf);\n while (currentLeaf != endLeaf) {\n currentLeaf = this.getNextLeaf(currentLeaf);\n leafsArray.push(currentLeaf);\n }\n return leafsArray;\n },\n\n // and here we go, helper functions to help iterate through the nodes & leaves & all\n\n getFirstLeafInRange : function(range) {\n if (range.startContainer.hasChildNodes()) {\n if (range.collapsed) {\n return null;\n } else if (range.startOffset >= range.startContainer.childNodes.length) {\n return this.getNextLeaf(range.startContainer);\n } else {\n return this.getFirstLeaf(range.startContainer.childNodes[range.startOffset]);\n }\n } else {\n return range.startContainer;\n }\n },\n\n getLastLeafInRange : function(range) {\n if (range.endContainer.hasChildNodes()) {\n if (range.collapsed) {\n return null;\n } else if (range.endOffset == 0) {\n return this.getPreviousLeaf(range.endContainer);\n } else {\n return this.getLastLeaf(range.endContainer.childNodes[range.endOffset - 1]);\n }\n } else {\n return range.endContainer;\n }\n },\n\n getNextLeaf : function(node) {\n var ancestor = node;\n while (ancestor != null && ancestor.nextSibling == null) {\n ancestor = ancestor.parentNode;\n }\n if (ancestor == null) {\n // There\'s no next leaf.\n return null;\n } else {\n // Return the first leaf in the subtree whose root is the next sibling of the ancestor.\n return this.getFirstLeaf(ancestor.nextSibling);\n }\n },\n\n getPreviousLeaf : function(node) {\n var ancestor = node;\n while (ancestor != null && ancestor.previousSibling == null) {\n ancestor = ancestor.parentNode;\n }\n if (ancestor == null) {\n // There\'s no previous leaf.\n return null;\n } else {\n // Return the last leaf in the subtree whose root is the next sibling of the ancestor.\n return this.getLastLeaf(ancestor.previousSibling);\n }\n },\n\n getFirstLeaf : function(node) {\n var descendant = node;\n while (descendant.hasChildNodes()) {\n descendant = descendant.firstChild;\n }\n return descendant;\n },\n\n getLastLeaf : function(node) {\n var descendant = node;\n while (descendant.hasChildNodes()) {\n descendant = descendant.lastChild;\n }\n return descendant;\n },\n\n removeSelectionHighlight : function() {\n if (window.getSelection) {\n // standard\n // unwrap\n this.highlightWrappers.each(function(wrapper) {\n wrapper.replace(wrapper.innerHTML);\n });\n } else {\n // IE\n this.selectionParent.update(this.selectionParentInnerHTML);\n }\n },\n\n getPositionNextToSelection : function() {\n if (!this.range) {\n return {\'left\' : 0, \'top\' : 0};\n }\n\n var left = 0;\n var top = 0;\n if (window.getSelection) {\n // set the position\n // get the offsetleft from the first highlightWrapper\n if (this.highlightWrappers.length > 0) {\n left = this.highlightWrappers[0].cumulativeOffset().left;\n var lastWrapper = this.highlightWrappers[this.highlightWrappers.length - 1];\n top = lastWrapper.cumulativeOffset().top + lastWrapper.getHeight();\n }\n } else {\n left = this.offsetX;\n top = this.offsetY;\n }\n\n return {\'left\' : left, \'top\' : top};\n },\n\n /*\n * I don\'t understand what\'s under here, I will need to review it\n */\n getRightDocument : function(node) {\n var text = \'\';\n if (node == this.container) {\n text = this.getRightDocument(node.parentNode);\n }\n for (var current = node.nextSibling; current != null; current = current.nextSibling) {\n text += current.textContent;\n }\n return text;\n },\n\n getLeftDocument : function(node) {\n var text = \'\';\n if (node == this.container) {\n text = this.getLeftDocument(node.parentNode);\n }\n var parent = node.parentNode;\n if (parent.childNodes) {\n for (var i = 0; i < parent.childNodes.length && parent.childNodes[i] != node; ++i) {\n text += parent.childNodes[i].textContent;\n }\n }\n return text;\n },\n\n computeContextFF : function() {\n var left = this.getLeftDocument(this.range.startContainer) + this.range.startContainer.textContent.substring(0, this.range.startOffset);\n var subLeft = \'\';\n var right = this.range.endContainer.textContent.substring(this.range.endOffset, this.range.endContainer.textContent.length) + this.getRightDocument(this.range.endContainer);\n var subRight = \'\';\n var offset = 0;\n var context = this.range.toString();\n var leftExpansion = 0;\n var rightExpansion = 0;\n while (subRight != right || subLeft != left) {\n var k = this.container.textContent.indexOf(context);\n var l = this.container.textContent.indexOf(context, k + 1);\n if (l == -1) {\n break;\n }\n leftExpansion = Math.min(left.length, leftExpansion + this.step);\n rightExpansion = Math.min(right.length, rightExpansion + this.step);\n subRight = right.substring(0, rightExpansion);\n subLeft = left.substring(left.length - leftExpansion, left.length);\n }\n this.selectionContext = subLeft + this.selectionText + subRight;\n this.selectionOffset = Math.max(subLeft.length, 0);\n },\n\n computeContextIE : function() {\n var containerInnerText = this.container.innerText;\n // copy the range to make the expanding on a range copy\n var cRange = this.range.duplicate();\n // while the selection appears more than once, expand the selection to left and right with one or more words and get its text\n var leftOffset = 0;\n // if we managed to expand anything (to prevent a loop where it\'s not unique but we can\'t expand)\n var expanded = true;\n while(!this.isUnique(containerInnerText, cRange.text) && expanded) {\n var expanded = false;\n // expand left\n var initialLength = cRange.text.length;\n cRange.moveStart(\'word\', -1);\n if (!this.isDescendantOrSelf(this.container, cRange.parentElement())) {\n // move back, cannot move to the left, cross fingers that this works the same in both directions\n cRange.moveStart(\'word\', 1);\n } else {\n //update the offset with the word we just added\n leftOffset += cRange.text.length - initialLength;\n expanded = true;\n }\n\n // expand right\n cRange.moveEnd(\'word\', 1);\n if (!this.isDescendantOrSelf(this.container, cRange.parentElement())) {\n // move back, cannot move to right, cross fingers that this works the same in both directions\n cRange.moveEnd(\'word\', -1);\n } else {\n expanded = true;\n }\n }\n // is unique or we couldn\'t expand anymore, this is it, send it\n this.selectionContext = cRange.text;\n this.selectionOffset = leftOffset;\n },\n\n isUnique : function(subject, pattern) {\n var index1 = subject.indexOf(pattern);\n if (index1 >= 0) {\n return subject.indexOf(pattern, index1 + 1) < 0;\n }\n // assume (ass of u and me) that no encounter means unique\n return true;\n }\n});\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));'),(-4650292687622325563,'groups','XWiki.XWikiAdminGroup'),(-4650292687622325563,'users',''),(-4642872979643159291,'async_context',''),(-4642872979643159291,'content',''),(-4642872979643159291,'parameters','label=$services.localization.render(\'platform.appwithinminutes.appPanelCreateEntry\')\n## Only users with the right to create spaces should see the Create Applications since currently AWM creates a new space\n## to hold the application.\ntarget=#if ($hasCreateSpace)AppWithinMinutes.WebHome#end\nicon=icon:bullet_go'),(-4588258788195325307,'lessCode','// Darkly 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: #303030; // #333\n@gray: #464545;\n@gray-light: #999; // #999\n@gray-lighter: #EBEBEB; // #eee\n\n@brand-primary: #375a7f;\n@brand-success: #00bc8c;\n@brand-info: #3498DB;\n@brand-warning: #F39C12;\n@brand-danger: #E74C3C;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: @gray-darker;\n//** Global text color on `<body>`.\n@text-color: #fff;\n\n//** Global textual link color.\n@link-color: desaturate(lighten(@brand-success, 10%),10%);\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 10px;\n@padding-base-horizontal: 15px;\n\n@padding-large-vertical: 18px;\n@padding-large-horizontal: 27px;\n\n@padding-small-vertical: 6px;\n@padding-small-horizontal: 9px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: lighten(@gray-dark, 5%);\n//** Background color used for `.table-hover`.\n@table-bg-hover: @gray;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: @gray;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: @text-color;\n@btn-default-bg: @gray;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-primary-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-success-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-success-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-success-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @gray;\n//** `<input>` border color\n@input-border: #f1f1f1;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #fff;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 4);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 4);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 4);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: transparent;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray;\n//** Border color for textual input addons\n@input-group-addon-border-color: transparent;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: @gray-dark;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: @gray;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-lighter;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 60px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: @brand-primary;\n@navbar-default-border: transparent;\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: @brand-success;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 10%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-success;\n@navbar-inverse-border: transparent;\n\n// Inverted navbar links\n@navbar-inverse-link-color: @navbar-inverse-color;\n@navbar-inverse-link-hover-color: @brand-primary;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-disabled-color: #aaa;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-dark;\n\n@nav-disabled-link-color: lighten(@gray, 10%);\n@nav-disabled-link-hover-color: lighten(@gray, 10%);\n\n//== Tabs\n@nav-tabs-border-color: @gray;\n\n@nav-tabs-link-hover-border-color: @gray;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @brand-success;\n@nav-tabs-active-link-hover-border-color: @nav-tabs-link-hover-border-color;\n\n@nav-tabs-justified-link-border-color: @gray-lighter;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: #fff;\n@pagination-bg: @brand-success;\n@pagination-border: transparent;\n\n@pagination-hover-color: #fff;\n@pagination-hover-bg: lighten(@brand-success, 6%);\n@pagination-hover-border: transparent;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: lighten(@brand-success, 6%);\n@pagination-active-border: transparent;\n\n@pagination-disabled-color: #fff;\n@pagination-disabled-bg: darken(@brand-success, 15%);\n@pagination-disabled-border: transparent;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: #ddd;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-dark;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: @brand-success;\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: @brand-info;\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: @brand-warning;\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: @brand-danger;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: @gray-dark;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #999;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: @gray-dark;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .7;\n//** Modal header border color\n@modal-header-border-color: @gray;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: @gray-lighter;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: @gray-dark;\n//** `.list-group-item` border color\n@list-group-border: @gray;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: transparent;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: @link-color;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: darken(@link-color, 5%);\n\n\n//== Panels\n//\n//##\n\n@panel-bg: @gray-dark;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: @gray;\n@panel-footer-bg: @gray;\n\n@panel-default-text: @text-color;\n@panel-default-border: @gray;\n@panel-default-heading-bg: @gray-dark;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 2px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: @gray;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @gray-dark;\n@well-border: transparent;\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray;\n\n//** Badge text color in active nav link\n@badge-active-color: @brand-primary;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @gray;\n//** Breadcrumb text color\n@breadcrumb-color: @text-color;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #fff;\n@close-text-shadow: none;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: @gray-lighter;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray;\n//** Page header border color\n@page-header-border-color: transparent;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray;\n\n// Darkly 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Lato:400,700,400italic\");\n\n// Navbar =====================================================================\n\n.navbar {\n border-width: 0;\n\n &-default {\n\n .badge {\n background-color: #fff;\n color: @navbar-default-bg;\n }\n }\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n\n &-brand {\n line-height: 1;\n }\n\n &-form {\n .form-control {\n background-color: white;\n\n &:focus {\n border-color: white;\n }\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n border-width: 2px;\n}\n\n.btn:active {\n .box-shadow(none);\n}\n\n.btn-group.open .dropdown-toggle {\n .box-shadow(none);\n}\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n color: lighten(@brand-primary, 10%);\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n\n a:not(.btn) {\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .success,\n .warning,\n .danger,\n .info {\n color: #fff;\n\n > th > a,\n > td > a,\n > a {\n color: #fff;\n }\n }\n\n > thead > tr > th,\n > tbody > tr > th,\n > tfoot > tr > th,\n > thead > tr > td,\n > tbody > tr > td,\n > tfoot > tr > td {\n border: none;\n }\n\n &-bordered > thead > tr > th,\n &-bordered > tbody > tr > th,\n &-bordered > tfoot > tr > th,\n &-bordered > thead > tr > td,\n &-bordered > tbody > tr > td,\n &-bordered > tfoot > tr > td {\n border: 1px solid @table-border-color;\n }\n}\n\n// Forms ======================================================================\n\ninput,\ntextarea {\n color: @input-color;\n}\n\n.form-control,\ninput,\ntextarea {\n border: 2px hidden transparent;\n .box-shadow(none);\n\n &:focus {\n .box-shadow(none);\n }\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus {\n .box-shadow(none);\n }\n\n .input-group-addon {\n border-color: @brand-warning;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n .box-shadow(none);\n }\n\n .input-group-addon {\n border-color: @brand-danger;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n .box-shadow(none);\n }\n\n .input-group-addon {\n border-color: @brand-success;\n }\n}\n\n.input-group-addon {\n color: @text-color;\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: @nav-tabs-border-color;\n }\n}\n\n.nav-tabs > li > a,\n.nav-pills > li > a {\n color: #fff;\n}\n\n.pager {\n a,\n a:hover {\n color: #fff;\n }\n\n .disabled {\n &>a,\n &>a:hover,\n &>a:focus,\n &>span {\n background-color: @pagination-disabled-bg;\n }\n }\n}\n\n.breadcrumb a {\n color: #fff;\n}\n\n// Indicators =================================================================\n\n.close {\n text-decoration: none;\n text-shadow: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n}\n\n.alert {\n .alert-link {\n color: #fff;\n text-decoration: underline;\n }\n}\n\n// Progress bars ==============================================================\n\n.progress {\n height: 10px;\n .box-shadow(none);\n .progress-bar {\n font-size: 10px;\n line-height: 10px;\n }\n}\n\n// Containers =================================================================\n\n.well {\n .box-shadow(none);\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border-color: @list-group-border;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.popover {\n color: @text-color;\n}\n\n.panel-default > .panel-heading {\n background-color: @panel-footer-bg;\n}'),(-4530610906757213145,'advanced','// Define changes to default configuration here. For example:\n// config.uiColor = \'#AADC6E\';\n// config.linkShowTargetTab = true;'),(-4522764390937446666,'code','var XWiki = (function (XWiki) {\n\nXWiki.LiveTableEditor = Class.create({\n initialize : function() {\n this.columnsInput = $(\'AppWithinMinutes.LiveTableClass_0_columns\');\n this.columnsInput.hide();\n\n this._createColumnPicker();\n this._createDeprecationMessage();\n this._createColumnList();\n\n document.observe(\'xwiki:inline:save\', this._onSave.bind(this));\n },\n containsColumn : function(name) {\n var columns = this.list.childElements();\n for(var i = 0; i < columns.length; i++) {\n if (columns[i]._name == name) {\n return true;\n }\n }\n return false;\n },\n addColumn : function(name, prettyName, isClassField) {\n if (!name || this.containsColumn(name)) {\n return;\n }\n var deprecated = !prettyName;\n prettyName = prettyName || name;\n var item = new Element(\'li\').update(\'<span title=\"$escapetool.xml($services.localization.render(\'platform.appwithinminutes.liveTableEditorMoveColumnHint\'))\">\' + prettyName.escapeHTML() + \'</span><span title=\"$escapetool.xml($services.localization.render(\'platform.appwithinminutes.liveTableEditorDeleteColumnHint\'))\" class=\"delete\">X</span>\');\n if (deprecated) {\n item.addClassName(\'deprecated\');\n this.deprecationMessage.show();\n }\n if (isClassField) {\n item.addClassName(\'classField\');\n }\n item._name = name;\n item.down(\'.delete\').observe(\'click\', this._onDeleteColumn.bindAsEventListener(this));\n this.list.insert(item);\n Sortable.create(this.list, {overlap: \'horizontal\', constraint: \'horizontal\'});\n },\n getColumnPrettyName : function(columnName) {\n var options = this.columnsSelect.options;\n for(var i = 0; i < options.length; i++) {\n if (options[i].value == columnName) {\n return options[i].text;\n }\n }\n return null;\n },\n isClassField : function(columnName) {\n var options = this.columnsSelect.options;\n for(var i = 0; i < options.length; i++) {\n if (options[i].value == columnName) {\n return options[i].up().id == \'classFields\';\n }\n }\n return false;\n },\n _createColumnPicker : function() {\n this.columnsSelect = $(\'availableColumns\');\n this.columnsSelect.selectedIndex = -1;\n\n var addButton = this.columnsSelect.next(\'a.addColumn\');\n addButton.observe(\'click\', this._onAddColumn.bindAsEventListener(this));\n\n var picker = new Element(\'div\', {\'class\': \'columnPicker\'}).insert(this.columnsSelect).insert(addButton);\n this.columnsInput.up().insert(picker);\n },\n _onAddColumn : function(event) {\n event.stop();\n if (this.columnsSelect.selectedIndex >= 0) {\n var selectedOption = this.columnsSelect.options[this.columnsSelect.selectedIndex];\n this.addColumn(selectedOption.value, selectedOption.text, selectedOption.up().id == \'classFields\');\n this.columnsSelect.selectedIndex = -1;\n this.columnsSelect.focus();\n }\n },\n _onDeleteColumn : function(event) {\n event.element().up(\'li\').remove();\n // Hide deprecation message if there are no deprecated columns.\n if (this.list.select(\'.deprecated\').length == 0) {\n this.deprecationMessage.hide();\n }\n },\n _createColumnList : function() {\n this.list = new Element(\'ul\', {\'class\': \'hList\'});\n this.columnsInput.up().insert(this.list);\n this.columnsInput.value.split(\' \').each(function(columnName) {\n columnName = columnName.strip();\n if (columnName != \'\') {\n this.addColumn(columnName, this.getColumnPrettyName(columnName), this.isClassField(columnName));\n }\n }.bind(this));\n },\n _createDeprecationMessage : function() {\n this.deprecationMessage = new Element(\'div\', {\'class\': \'warningmessage\'}).update(\'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.liveTableEditorDeprecatedColumnsWarning\'))\');\n this.columnsInput.up().insert(this.deprecationMessage);\n this.deprecationMessage.hide();\n var yes = this.deprecationMessage.down(\'a\');\n yes.observe(\'click\', this._onRemoveDeprecatedColumns.bindAsEventListener(this));\n var no = yes.next();\n no.observe(\'click\', function(event) {\n event.stop();\n this.deprecationMessage.hide();\n }.bindAsEventListener(this));\n },\n _onRemoveDeprecatedColumns : function(event) {\n event.stop();\n this.list.select(\'.deprecated\').each(function(item) {\n item.remove();\n });\n this.deprecationMessage.hide();\n },\n _onSave : function() {\n var columns = [];\n this.list.childElements().each(function(item) {\n columns.push(item._name);\n });\n this.columnsInput.value = columns.join(\' \');\n }\n});\n\nfunction init() {\n var form = $(\'inline\');\n if (!form) {\n return false;\n }\n // Let the sheet handle the form submit. The form is submitted by default to the preview action which dispatches the\n // request to the save action if the save button is detected on the request parameters. By submitting to the edit\n // action the edit sheet is evaluated and thus it can handle the save by itself.\n form.action = XWiki.currentDocument.getURL(\'edit\');\n\n // Apply the vertical form layout standard.\n form.addClassName(\'xform\');\n\n // Remove the preview button.\n form.down(\"input[name=\'action_preview\']\").remove();\n\n // Rename the save buttons.\n form.down(\"input[name=\'action_save\']\").name = \'xaction_save\';\n form.down(\"input[name=\'action_saveandcontinue\']\").name = \'xaction_saveandcontinue\';\n\n // Make sure the \'Save & Continue\' button is submitted when clicked.\n document.observe(\'xwiki:inline:save\', function(event) {\n event = event.memo.originalEvent;\n if (event.memo[\'continue\']) {\n var submitButton = event.memo.originalEvent.element();\n submitButton.insert({after: new Element(\'input\', {type: \'hidden\', \'name\': submitButton.name})});\n (function () {\n submitButton.next().remove();\n }).defer();\n }\n }.bindAsEventListener(window));\n\n new XWiki.LiveTableEditor();\n\n return true;\n}\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n\n// Allow widgets to catch the save event before the form is submitted when the \'Save & Continue\' button is clicked. We\n// need this hack because the \'Save & Continue\' handler from actionbuttons.js is added right after the page is loaded,\n// before any other code can register its own listener.\ndocument.observe(\'xwiki:actions:save\', function(event) {\n document.fire(\'xwiki:inline:save\', {originalEvent: event});\n}.bindAsEventListener(window));\n\nreturn XWiki;\n}(XWiki || {}));'),(-4514568525081737721,'async_context',''),(-4514568525081737721,'content','{{velocity}}\n#set ($docName = $doc.pageReference.name)\n##\n## Handle the case when there are spaces in the doc name\n#set ($docNameWords = $stringtool.split($docName, \' \'))\n#set ($docNameSplit = \"${stringtool.join($docNameWords, \',\')}\")\n#set ($docNameSplitFuzzy = \"$!{stringtool.join($docNameWords, \'~,\')}~\")\n#set ($docNameSplitWildcard = \"*$!{stringtool.join($docNameWords, \'*,*\')}*\")\n##\n## Extract the space reference elements\n#set ($spaceReferenceStrings = \"\")\n#set ($spaceReferenceFuzzyStrings = \"\")\n#set ($spaceReferenceWildcardStrings = \"\")\n#set ($spaceReferences = $doc.documentReference.spaceReferences)\n#foreach ($spaceReference in $spaceReferences)\n #if ($foreach.count > 1)\n #set ($spaceReferenceStrings = \"$!{spaceReferenceStrings}, \")\n #set ($spaceReferenceFuzzyStrings = \"$!{spaceReferenceFuzzyStrings}, \")\n #set ($spaceReferenceWildcardStrings = \"$!{spaceReferenceWildcardStrings}, \")\n #end\n ## Note: Also handling possible space characters in the space name.\n #set ($spaceNameWords = $stringtool.split(${spaceReference.name}, \' \'))\n #set ($spaceReferenceStrings = \"$!{spaceReferenceStrings}${stringtool.join($spaceNameWords, \',\')}\")\n #set ($spaceReferenceFuzzyStrings = \"$!{spaceReferenceFuzzyStrings}${stringtool.join($spaceNameWords, \'~,\')}~\")\n #set ($spaceReferenceWildcardStrings = \"$!{spaceReferenceWildcardStrings}*${stringtool.join($spaceNameWords, \'*,*\')}*\")\n#end\n##\n## Build the query string, with various usecases supported.\n## TODO: Add better scoring boosts to properly favor one usecase over another or multiple usecases happening at the same time.\n##\n## Non-terminal doc with the same name as the current doc\n#set ($suggestionsQueryString = \"(spaces:($docNameSplit, $docNameSplitFuzzy, $docNameSplitWildcard) AND name_exact:WebHome)\")\n## Terminal doc with the same name as the current doc\n#set ($suggestionsQueryString = \"${suggestionsQueryString} OR name:($docNameSplit, $docNameSplitFuzzy, $docNameSplitWildcard)\")\n## Document in a space named like the current terminal doc, if it is the case.\n#if ($doc.documentReference.name != \'WebHome\')\n #set ($suggestionsQueryString = \"${suggestionsQueryString} OR spaces:($docNameSplit, $docNameSplitFuzzy, $docNameSplitWildcard)\")\n#end\n## Document in a space named like on of the spaces of the current doc.\n#set ($suggestionsQueryString = \"${suggestionsQueryString} OR spaces:($spaceReferenceStrings, $spaceReferenceFuzzyStrings, $spaceReferenceWildcardStrings)\")\n##\n## Build and run the Solr query.\n#set ($suggestionsQuery = $services.query.createQuery($suggestionsQueryString, \"solr\"))\n#set ($filterQuery = [\'type:\"DOCUMENT\"\', \"locale:(\"\"$xcontext.locale\"\" OR \"\"\"\")\"])\n#if ($xwiki.getUserPreference(\'displayHiddenDocuments\') != 1)\n #set ($discard = $filterQuery.add(\'hidden:false\'))\n#end\n#set ($discard = $suggestionsQuery.bindValue(\'fq\', $filterQuery))\n#set ($discard = $suggestionsQuery.setLimit(10))\n##\n#set ($suggestionsResponse = $suggestionsQuery.execute()[0])\n#set ($suggestionResults = $suggestionsResponse.results)\n##\n## Display the suggestions, if any.\n#if ($suggestionResults.size() > 0)\n #set ($discard = $xwiki.ssx.use(\'XWiki.SolrDocumentDoesNotExistUIX\'))\n\n {{html clean=\'false\'}}\n <div class=\'docdoesnotexist-solr-container\'>\n <p><b>$services.localization.render(\'solr.uix.docdoesnotexist.title\')</b></p>\n <ul>\n #template(\'hierarchy_macros.vm\')\n #foreach ($suggestionResult in $suggestionResults)\n #set ($suggestionResultsDocReference = $services.solr.resolveDocument($suggestionResult))\n #set ($suggestionDocument = $xwiki.getDocument($suggestionResultsDocReference))\n <li><a href=\"$escapetool.xml($suggestionDocument.getURL())\">#hierarchy($suggestionResultsDocReference, {\'plain\' : true, \'local\' : true})</a></li>\n #end\n </ul>\n </div>\n {{/html}}\n\n#end\n{{/velocity}}\n'),(-4514568525081737721,'parameters','order=10000'),(-4514238254693754003,'code','/*\n#set ($bootstrapSelectPath = $services.webjars.url(\'bootstrap-select\', \'js/bootstrap-select.min\'))\n#if (\"$!bootstrapSelectPath\" == \'\')\n ## Before XWiki 6.3RC1\n #set ($bootstrapSelectPath = $services.webjars.url(\'bootstrap-select/1.11.2/js/bootstrap-select.min.js\'))\n#elseif ($bootstrapSelectPath.indexOf(\'?\') >= 0)\n ## Before XWiki 7.1M1 the WebJar resource path was included in the query string which means we have to specify the\n ## \'.js\' extension (Require.js doesn\'t add it in this case).\n #set ($bootstrapSelectPath = \"${bootstrapSelectPath}.js\")\n#end\n*/\nrequire.config({\n paths: {\n \'xwiki-ckeditor\': new XWiki.Document(\'EditSheet\', \'CKEditor\').getURL(\'jsx\', \'r=1\'),\n \'bootstrap-select\': \"$bootstrapSelectPath\",\n },\n shim: {\n \'bootstrap-select\' : [\'jquery\', \'bootstrap\']\n }\n});\n\nrequire([\'jquery\', \'xwiki-ckeditor\', \'bootstrap-select\'], function($, ckeditorPromise) {\n $(\'.btn-default[data-confirmation]\').click(function(event) {\n if (!window.confirm($(this).attr(\'data-confirmation\'))) {\n event.preventDefault();\n }\n });\n\n var maybeShowDefaultValues = function(config) {\n // Show the default values if the configuration is new.\n $(\'.ckeditor-config.new #CKEditor\\\\.ConfigClass_0_removePlugins\').val(config.removePlugins);\n $(\'.ckeditor-config.new #CKEditor\\\\.ConfigClass_0_removeButtons\').val(config.removeButtons);\n };\n\n var commaSeparator = /\\s*,\\s*/;\n var enhanceConfig = function(editor) {\n var availablePlugins = editor.config.plugins.split(commaSeparator);\n enhanceList($(\'#CKEditor\\\\.ConfigClass_0_removePlugins\'), availablePlugins);\n\n var availableButtons = Object.keys(editor.ui.items);\n enhanceList($(\'#CKEditor\\\\.ConfigClass_0_removeButtons\'), availableButtons);\n };\n\n var enhanceList = function(input, allowedValues) {\n var values = input.hide().val().split(commaSeparator);\n var select = $(\'<select class=\"form-control\" multiple/>\').insertAfter(input);\n allowedValues.sort().forEach(function(value) {\n select.append($(\'<option/>\').text(value));\n });\n select.selectpicker({\n container: \'body\',\n liveSearch: true,\n size: 10\n }).selectpicker(\'val\', values);\n // Synchronize the value of the hidden text input with the selected items.\n select.on(\'changed.bs.select\', function (event) {\n // bootstrap-select returns null when nothing is selected.\n var values = select.selectpicker(\'val\') || [];\n input.val(values.join(\',\'));\n });\n };\n\n ckeditorPromise.done(function(ckeditor) {\n ckeditor.once(\'instanceLoaded\', function(event) {\n maybeShowDefaultValues(event.editor.config);\n enhanceConfig(event.editor);\n });\n // We need to create an editor instance in order to load the configuration.\n new ckeditor.editor(); \n });\n});'),(-4468231294478148166,'code','require([\'jquery\', \'XWikiNotificationsMacro\', \'xwiki-meta\'], function ($, XWikiNotificationsMacro, xm) {\n \'use strict\';\n\n /**\n * The notification batch\' size\n */\n var notificationsLimit = 10;\n\n /**\n * Maximum number of events to count\n */\n var maxCountNumber = 20;\n\n /**\n * The current number of unread notifications (-1 means we don\'t know yet how many notifications there are)\n */\n var notificationCount = -1;\n\n /**\n * URL to the service that return the notifications to display\n */\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\',\n XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n\n /**\n * Will contain the Notifications Macro object.\n */\n var macro = 0;\n\n /**\n * Update notification counter\n */\n var updateNotificationCount = function (count) {\n // Get the counter\n var counter = $(\'.notifications-count\');\n // Update the global variable\n notificationCount = count;\n // Remove the counter if there is no unread notifications\n if (count == 0) {\n counter.remove();\n return;\n }\n // Create the counter if it is not present\n if (counter.length == 0) {\n counter = $(\'<span>\').addClass(\'notifications-count badge\');\n $(\'#tmNotifications > a.icon-navbar\').after(counter);\n }\n // Update the counter\n counter.text(count);\n if (count > maxCountNumber) {\n counter.text(maxCountNumber + \'+\');\n };\n };\n\n /**\n * Add a button to clear all the notifications (which actually only change the start date of the user).\n */\n var createCleanButton = function (startDate) {\n var notificationsHeader = $(\'.notifications-header-uix\');\n // If the clean button is already here, don\'t do anything\n if (notificationsHeader.find(\'a.notification-event-clean\').length > 0) {\n return;\n }\n var markAllReadButton = $(\'<a href=\"#\">\')\n .addClass(\'notification-event-clean\')\n .html(\'$services.icon.renderHTML(\"trash\") $escapetool.xml($escapetool.javascript($services.localization.render(\'notifications.menu.clear\')))\')\n .click(function (event) {\n // Avoid the menu closing\n event.stopPropagation();\n // Ask confirmation\n new XWiki.widgets.ConfirmationBox({\n onYes: function(event) {\n // Avoid the menu closing\n event.stopPropagation();\n // Display a saving message\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.menu.clearing\'))\", \'inprogress\');\n // Send the request to change the start date\n $.post(url, {\n action: \'setStartDate\',\n date: startDate\n }).success(function (){\n // Display the success message\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.menu.cleared\'))\", \'done\');\n // Remove the notifications from the UI and display the \"nothing!\" message instead.\n $(\'.notifications-area\').html($(\'<p>\').addClass(\'text-center noitems\').text(\"$escapetool.javascript($services.localization.render(\'notifications.menu.nothing\'))\"));\n // Update the notifications counter\n updateNotificationCount(0);\n });\n },\n onNo: function(event) {\n // Avoid the menu closing\n event.stopPropagation();\n }\n });\n });\n // Append the button just before the \"settings\" link in the menu\n $(\'.notifications-header-uix\').append(markAllReadButton);\n };\n\n /**\n * Get the number of unread notifications.\n */\n var getUnreadNotificationsCount = function (asyncId) {\n var restURL = \'$!{escapetool.javascript($request.contextPath)}/rest/notifications/count?media=json\';\n var params = {\n \'userId\': XWiki.Model.serialize(xm.userReference),\n \'useUserPreferences\': true,\n \'currentWiki\': xm.documentReference.extractReferenceValue(XWiki.EntityType.WIKI),\n \'async\': true\n };\n if (asyncId) {\n params.asyncId = asyncId;\n }\n $.ajax(restURL, {cache: false, data: params}).done(function (data, textStatus, jqXHR) {\n switch (jqXHR.status) {\n case 200:\n // 200 means that the search is done, we displayer the count notifications\n updateNotificationCount(data.unread);\n break;\n case 202:\n // 202 means that the background search is still running, we wait 1 second and ask again if it\'s done this time\n setTimeout(getUnreadNotificationsCount, 1000, data.asyncId);\n break;\n }\n });\n };\n\n /**\n * Initialize the widget.\n */\n $(document).ready(function () {\n\n var container = $(\'.notifications-area\');\n macro = new XWikiNotificationsMacro(container, XWiki.Model.serialize(xm.userReference), notificationsLimit, true, [], true);\n getUnreadNotificationsCount();\n container.on(\'eventMarkedAsRead\', function (notif) {\n updateNotificationCount(notificationCount - 1);\n });\n\n /**\n * Prevent the dropdown menu for being closed when the user clicks on the notifications menu.\n */\n $(\'#tmNotifications .dropdown-menu\').click(function(event) {\n event.stopPropagation();\n });\n\n /**\n * Load the notifications content when the user open the notification menu (lazy loading to have better scalability).\n */\n var notificationsMenusHasBeenOpened = false;\n $(\'#tmNotifications\').on(\'show.bs.dropdown\', function () {\n // Don\'t load the notifications if the menu has already be opened before.\n if (!notificationsMenusHasBeenOpened) {\n macro.load(0).done(function (notifications) {\n if (notifications.length > 0) {\n createCleanButton(notifications[0].date);\n }\n });\n }\n notificationsMenusHasBeenOpened = true;\n });\n });\n\n});\n'),(-4449545699068677440,'code','define(\'ToggleableFilterPreference\', [\'jquery\', \'bootstrap-switch\'], function($) {\n /**\n * Construct the Toggleable Filter Preference object.\n */\n return function(domElement, userURL, row) {\n var self = this;\n self.domElement = $(domElement);\n self.userURL = userURL;\n self.row = row;\n /**\n * Initialization\n */\n self.init = function () {\n // On change\n self.domElement.on(\'switchChange.bootstrapSwitch\', function(event, state) {\n setTimeout(function() { self.save(state); }, 1);\n });\n };\n\n /**\n * Save the filter preference\n */\n self.save = function(state) {\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n var filterName = self.domElement.attr(\'data-filterName\');\n var objectNumber = self.domElement.attr(\'data-objectNumber\');\n if (objectNumber == \'\') {\n // If the object does not exist yet, create it (make this change a minor edit so it\'s not displayed, by default, in notifications)\n var restURL = self.userURL + \'/objects?media=json&minorRevision=true\';\n var params = {\n \'className\': \'XWiki.Notifications.Code.ToggleableFilterPreferenceClass\',\n \'property#filterName\': filterName,\n \'property#isEnabled\': state ? \'1\' : \'0\'\n };\n $.post(restURL, params).done(function (data) {\n self.domElement.attr(\'data-objectNumber\', data.number);\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.done\'))\", \'done\');\n }).fail(function () {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.error\'))\", \'error\');\n });\n } else if (objectNumber != \'\') {\n // If the object already exist, just update its value (make this change a minor edit so it\'s not displayed, by default, in notifications)\n var restURL = self.userURL + \'/objects/XWiki.Notifications.Code.ToggleableFilterPreferenceClass/\' + objectNumber\n + \'/properties/isEnabled?media=json&minorRevision=true\';\n $.ajax(restURL, {\n method: \'PUT\',\n contentType: \'text/plain\',\n data: state ? \'1\' : \'0\'\n }).done(function (data) {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.done\'))\", \'done\');\n $(document).trigger(\'xwiki:livetable:notifications-filters:toggle\', {\'row\': self.row, \'state\': state});\n }).fail(function () {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.error\'))\", \'error\');\n });\n }\n };\n\n // Call init\n self.init();\n };\n});\n'),(-4389447761330924490,'code','.SupportPanel ul {\n list-style-type: inherit; \n list-style-position: inside; \n margin: 0;\n}'),(-4366992258454243115,'codeToExecute',''),(-4347702030673793808,'code','document.observe(\'xwiki:dom:loaded\', function() {\n var switcher = $(\'classname\');\n if(typeof (switcher) != \'undefined\') {\n switcher.observe(\'change\', function() {\n var value = this.options[[this.selectedIndex]].value;\n if (value != \'-\') {\n window.self.location = value;\n }\n }.bindAsEventListener(switcher));\n switcher.up(\'form\').down(\"input[[type=\'submit\']]\").hide();\n }\n});'),(-4314995818116595684,'code','var bstStepURL = \"$xwiki.getURL(\'TourCode.StepSheet\',\'edit\',\'editor=inline&xpage=plain\')\";\nvar messages = { deleting: \"${escapetool.javascript($services.localization.render(\'tour.steps.deleting\'))}\",\n deleteConfirm: \"${escapetool.javascript($services.localization.render(\'tour.steps.delete_confirm\'))}\",\n deleteDone: \"${escapetool.javascript($services.localization.render(\'tour.steps.delete_done\'))}\"\n }\n\nrequire([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n \'use strict\';\n\n // Initialize add new step button\n $(\'#addStep\').click(function() {\n var tourName = $(\'#tourName\').val();\n $(\'.xdialog-modal-container\').remove();\n new XWiki.widgets.StepPopup({pageURL: bstStepURL + \'&tourName=\' + tourName});\n });\n\n // Initialize save step button\n $(\'body\').on(\'click\', \'#saveStepBtn\', function() {\n var parent = $(this).parent().parent();\n var stepID = $(\'#stepID\', parent).val();\n var prefix = \'TourCode.StepClass_\';\n var tourName = $(\"#tourName\",parent).val();\n var element = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_element\']\", parent).val();\n var title = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_title\']\", parent).val();\n var backdrop = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_backdrop\']\", parent).is(\':checked\');\n var content = $(\"textarea[id^=\'\" + prefix + \"\'][id$=\'_content\']\", parent).val();\n var placement = $(\"select[id^=\'\" + prefix + \"\'][id$=\'_placement\']\", parent).val();\n var targetPage = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_targetPage\']\", parent).val(); \n var targetAction = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_action\']\", parent).val(); \n var queryString = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_queryString\']\", parent).val();\n var reflex = $(\"input[id^=\'\" + prefix + \"\'][id$=\'_reflex\']\", parent).is(\':checked\');\n var stepOrder = $(\'#stepOrderSelect\').val();\n var nbSteps = $(\'#nbsteps\').val();\n var step = { element : (element? element: \'\'),\n title : (title? title: \'\'),\n backdrop : backdrop,\n content : (content? content: \'\'),\n placement : (placement? placement: \'\'),\n targetPage : (targetPage? targetPage: \'\'),\n targetAction: (targetAction? targetAction: \'\'),\n queryString : (queryString? queryString: \'\'),\n reflex : reflex,\n stepOrder : (stepOrder? stepOrder: \'\'),\n tourName : (tourName? tourName: \'\'),\n nbSteps : nbSteps,\n stepID : stepID,\n action : \'editStep\',\n xpage : \'plain\'\n };\n $.ajax({\n url : \"$xwiki.getURL(\'TourCode.AjaxActions\')\",\n type: \'POST\',\n data: step,\n success: function(rep) {\n $(\'#stepsContainer\').html(rep);\n if (xm.refreshVersion) {\n xm.refreshVersion();\n }\n },\n complete: function() {\n // Close dialog box\n $(\'.xdialog-close\').click();\n }\n });\n });\n\n // Initialize step edit btns\n $(\'body\').on(\'click\', \'.editStep\', function() {\n $(\'.xdialog-modal-container\').remove();\n var tourName = $(\'#tourName\').val();\n var stepID = $(this).attr(\'data-step-id\');\n $(\'.xdialog-modal-container\').remove();\n new XWiki.widgets.StepPopup({\n pageURL: bstStepURL + \'&tourName=\' + encodeURIComponent(tourName) + \'&stepID=\' + encodeURIComponent(stepID)\n });\n });\n \n // Initialize step delete btns\n $(\'body\').on(\'click\', \'.deleteStep\', function() {\n $(\'.xdialog-modal-container\').remove();\n var tourName = $(\'#tourName\').val();\n var stepID = $(this).attr(\'data-step-id\');\n new XWiki.widgets.ConfirmationBox({\n onYes: function() {\n var notif = new XWiki.widgets.Notification(messages.deleting, \'inprogress\');\n $.ajax({\n url : \"$xwiki.getURL(\'TourCode.AjaxActions\', \'view\', \'xpage=plain\')\" + \'&action=deleteStep\' + \'&tourName=\' + encodeURIComponent(tourName) + \'&stepID=\' + encodeURIComponent(stepID),\n type: \'POST\',\n success: function(rep) {\n $(\'#stepsContainer\').html(rep);\n if (xm.refreshVersion) {\n xm.refreshVersion();\n }\n },\n complete: function() {\n notif.replace(new XWiki.widgets.Notification(messages.deleteDone, \'done\'));\n //TODO: add \"on failure\"\n }\n });\n }},\n {\n confirmationText: messages.deleteConfirm\n }\n );\n });\n});'),(-4305838678640337551,'code','#set($analyticsDoc = $xwiki.getDocument(\'XWiki.GoogleAnalyticsConfig\'))\n#set($analyticsObj = $analyticsDoc.getObject(\'XWiki.GoogleAnalyticsCode\'))\n#set($method = $analyticsObj.getProperty(\'method\').value)\n#set($accounts = [])\n#if(\"$!analyticsObj\" != \"\" && \"$!analyticsObj.account\" != \"\")\n#foreach($aObj in $analyticsObj.account.split(\' \'))\n#if(\"$!aObj\" != \"\")\n#set($discard = $accounts.add($aObj))##\n#end\n#end\n#end\n#if($accounts.size() > 0)\n#if($method == \'universal\')\n (function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,\'script\',\'//www.google-analytics.com/analytics.js\',\'ga\');\n\n#foreach($account in $accounts)\n#set($accountName = \'\')\n#if($foreach.index > 0)\n#set($accountName = \'t\' + $foreach.index)\n ga(\'create\', \'$account\', {\'name\': \'$accountName\'});\n ga(\'${accountName}.send\', \'pageview\');\n#else\n ga(\'create\', \'$account\');\n ga(\'send\', \'pageview\');\n#end\n#end\n#else\n var _gaq = _gaq || [];\n#foreach($account in $accounts)\n#set($analyticsPrefix = \'\')\n#if($foreach.index > 0)\n#set($analyticsPrefix = \'t\' + $foreach.index + \'.\')\n#end\n _gaq.push([\'${analyticsPrefix}_setAccount\', \'$account\']);\n _gaq.push([\'${analyticsPrefix}_trackPageview\']);\n#end\n\n (function() {\n var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;\n ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';\n var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);\n })();\n#end\n#end'),(-4292617225184969157,'description','Should the user be able to modify the tree structure, provided she has the necessary rights?'),(-4270047942215544118,'async_context',''),(-4270047942215544118,'code','{{template name=\"documentTree_macros.vm\" /}}\n\n{{velocity}}\n#set ($options = {})\n#foreach ($parameterName in $xcontext.macro.params.parameterNames)\n #set ($discard = $options.put($parameterName, $xcontext.macro.params.get($parameterName)))\n#end\n{{html clean=\"false\"}}\n#prepareTreeOptions($options)\n#documentTree($options)\n{{/html}}\n{{/velocity}}'),(-4270047942215544118,'contentDescription',''),(-4270047942215544118,'contentJavaType',''),(-4270047942215544118,'description','Displays the tree of XWiki documents.'),(-4254775908624407502,'code','#template(\'colorThemeInit.vm\')\n\n/* Hide the \'Created by\', \'Modified by\' and \'Tags\' document sections. */\n.xdocLastModification, .skin-colibri #document-info, #xdocFooter {\n display: none;\n}\n#document-title > h1 {\n /* The margin is not needed if the last modification date is not displayed. */\n margin-bottom: 0;\n}\n\n/**\n * Search form\n */\n\n.skin-colibri .search-form {\n /* There is no space after the title in Colibri. */\n margin-top: 1.5em;\n}\n\n.skin-colibri .search-form input[type=\"search\"] {\n /* Colibri doesn\'t have the grid system. */\n width: 50%;\n}\n\n/**\n * Sort\n */\n\nul.search-results-sort {\n color: $theme.textSecondaryColor;\n font-size: .9em;\n padding: 5px 0 2px 0;\n margin: 0;\n}\n.search-results-sort li {\n display: inline;\n list-style-type: none;\n padding-left: 1.5em;\n}\n.search-results-sort li:first-of-type {\n padding: 0;\n}\na.sort-item {\n color: inherit;\n text-decoration: none;\n}\na.sort-item:hover {\n color: $theme.linkColor;\n text-decoration: underline;\n}\na.sort-item.active, a.sort-item.active:hover {\n font-weight: bold;\n color: $theme.textColor;\n text-decoration: none;\n}\n.sort-item-order {\n margin-left: .3em;\n}\n\n/**\n * Options\n */\n\nul.search-options {\n color: $theme.textSecondaryColor;\n font-size: .9em;\n padding: 5px 0 2px 0;\n margin: 0;\n}\n.search-options li {\n display: inline;\n list-style-type: none;\n padding-left: 1.5em;\n}\n.search-options li:first-of-type {\n padding: 0;\n}\na.options-item {\n color: inherit;\n text-decoration: none;\n}\na.options-item:hover {\n color: $theme.linkColor;\n text-decoration: underline;\n}\na.options-item.active, a.options-item.active:hover{\n font-weight: bold;\n color: $theme.textColor;\n text-decoration: none;\n}\n\n/**\n * Search Results\n */\n\n.search-results-container {\n margin-top: 1em;\n}\n\n/* Colibri skin doesn\'t have the grid system. */\n.skin-colibri .search-results-left {\n margin: 0.5em 20em 0.5em 0;\n padding: 0.5em 0.5em 0.5em 0;\n}\n\n.search-results {\n padding: .3em 0 .8em 0;\n}\n\n.search-result {\n display: block;\n font-size: .9em;\n padding: 1.2em 0;\n}\n\n.search-result-title {\n border: 0;\n font-weight: bold;\n font-size: 1.33em;\n margin: 0 0 .3em 0;\n}\n\n.search-result-version {\n font-size: 70%;\n font-weight: normal;\n padding-left: 0.5em;\n vertical-align: top;\n}\n\n.search-result-language {\n font-size: 0.7em;\n font-style: italic;\n font-weight: lighter;\n}\n\n.search-result-location,\n.search-result-author,\n.search-result-language,\n.search-result-uploader,\n.search-result-mediaType {\n color: $theme.textSecondaryColor;\n}\n\n.search-result-location,\n.search-result-author,\n.search-result-uploader,\n.search-result-mediaType,\n.search-result-highlight {\n line-height: 1.4em;\n}\n\n.search-result-location .breadcrumb,\n.search-facet-body .breadcrumb {\n background-color: transparent;\n margin: 0;\n padding: 0;\n}\n.search-result-location .breadcrumb {\n display: inline;\n}\n\ndl.search-result-highlights {\n /* Overwrite the margin from the skin. */\n margin: 0;\n}\n\ndl.search-result-highlights > dt {\n margin-top: .3em;\n}\n\nblockquote.search-result-highlight {\n /* Remove the background color. */\n background-color: transparent;\n /* Increase the width of the left border. */\n border-left-width: 3px;\n /* Reduce the font size */\n font-size: 100%;\n /* Overwrite the margin from the skin. */\n margin: .2em 0 0 0;\n /* The text should be centered vertically relative to the left border. */\n padding: 0 0 0 1em;\n}\n\n.search-text-highlight {\n background-color: $theme.highlightColor;\n font-weight: bold;\n}\n\ndl.search-result-highlights > dt {\n color: $theme.textSecondaryColor;\n font-weight: normal;\n}\n\ndl.search-result-highlights.preview dt,\ndl.search-result-highlights.preview dd > * {\n display: none;\n}\n\ndl.search-result-highlights.preview dt:first-of-type,\ndl.search-result-highlights.preview dd:first-of-type blockquote:first-of-type,\n/* Workaround for IE8 which doesn\'t support :first-of-type CSS selector. */\ndl.search-result-highlights.preview dt.first,\ndl.search-result-highlights.preview dd.first blockquote.first {\n display: block;\n}\n\na.search-result-highlightAll:after {\n content: \' \\bb\';\n}\n\n.search-result-debug {\n white-space: pre;\n}\n\n/**\n * Facets\n */\n\n.search-facets {\n background-color: $theme.backgroundSecondaryColor;\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\n /* Leave space for the bottom shadow. */\n margin-bottom: 1em;\n border-radius: 4px;\n}\n/* Colibri skin doesn\'t have the grid system. */\n.skin-colibri .search-facets {\n float: right;\n max-width: 19.5em;\n width: 19.5em;\n}\n\n.search-facets-header,\n.search-facets-actions,\n.search-facet {\n border-bottom: 1px solid $theme.borderColor;\n border-top: 1px solid $theme.pageContentBackgroundColor;\n position: relative;\n}\n\n.search-facets-header,\n.search-facets-actions {\n padding: 0.5em 1em;\n}\n.search-facet {\n padding: 0.5em .8em;\n}\n\n.search-facets-header {\n border-top: none;\n}\n\n.search-facets-header > p,\n.search-facets-actions > p {\n /* The wiki syntax generates paragraphs which have bottom margin. */\n margin: 0;\n}\n\n.search-facets-actions > p {\n font-size: .8em;\n}\n\n.search-facets-actions a {\n color: $theme.textSecondaryColor;\n text-decoration: none;\n}\n\n.search-facets-actions a:hover {\n color: $theme.linkColor;\n text-decoration: underline;\n}\n\n.search-facets-action-collapseAll,\n.search-facets-action-expandAll {\n float: right;\n}\n\n.search-facets-actions .clearfloats {\n /* Fix the horizontal scroll bar, caused by the fact that we use a SPAN element instead of a DIV. */\n display: block;\n margin: 0;\n}\n\n.search-facet:last-of-type {\n border-bottom: none;\n}\n\n.search-facet-header {\n background: url(\"$doc.getAttachmentURL(\'dark-grey-disclosure-arrow-left.png\')\") no-repeat scroll 100% 50% transparent;\n color: $theme.titleColor;\n cursor: pointer;\n line-height: 1.4em;\n margin: 0 .2em;\n}\n\n.search-facet-header:after {\n border-bottom: 1px dotted $theme.pageContentBackgroundColor;\n border-top: 1px dotted $theme.borderColor;\n clear: both;\n content: \"\";\n display: block;\n height: 0;\n margin: 2.45em 0 0;\n position: absolute;\n right: 0;\n top: 0;\n width: 100%;\n}\n\n.search-facet:last-of-type .search-facet-header:after {\n border: medium none;\n}\n\n.search-facet.expanded:last-of-type .search-facet-header:after {\n border-bottom: 1px dotted $theme.pageContentBackgroundColor;\n border-top: 1px dotted $theme.borderColor;\n}\n\n.search-facet-body {\n overflow: hidden; /* required for effect */\n display: none;\n margin-top: .5em;\n}\n\n.search-facet-body ul,\n.search-facet-body ol {\n font-size: .9em;\n}\n\n.search-facet-body li {\n padding: .1em .2em;\n}\n\n.search-facet.expanded .search-facet-header {\n background-image: url(\"$doc.getAttachmentURL(\'dark-grey-disclosure-arrow-down.png\')\");\n}\n\n.search-facet.expanded .search-facet-body {\n display: block;\n}\n\n.search-facet-body ul, .search-facet-body ul.users {\n color: $theme.textSecondaryColor;\n list-style: none;\n display: block;\n padding: 0;\n margin: .5em 0;\n}\n\n.search-facet-body li:hover {\n background-color: $theme.highlightColor;\n}\n\n.search-facet-body input[type=\"checkbox\"] {\n float: left;\n margin: .2em 0;\n}\n\n.search-facet-body .itemName,\n.search-facet-body .more {\n display: block;\n overflow: hidden;\n padding: .1em .2em;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.search-facet-body .itemName,\n.search-facet-body .more {\n /* Remove link styling */\n color: $theme.textColor;\n text-decoration: none;\n}\n\n.search-facet-body .itemName.empty,\n.search-facet-body .more {\n color: $theme.textSecondaryColor;\n}\n\n/* In case the JavaScript is disabled. */\n.search-facet-body .itemName.selected {\n font-weight: bolder;\n}\n\n.search-facet-body .itemCount {\n float: right;\n padding: .1em 0;\n}\n\n@media (max-width: 768px) {\n .search-facets.collapsed-xs .search-facets-header .xHint,\n .search-facets.collapsed-xs .search-facets-actions,\n .search-facets.collapsed-xs .search-facet {\n display: none;\n }\n}\n\n/**\n * Debug\n */\n\n.search-debug > dl {\n margin: 0;\n}\n\n/**\n * Fix the breadcrumb in Colibri skin.\n */\n.skin-colibri .breadcrumb > li {\n display: inline;\n}\n.skin-colibri .breadcrumb > li + li:before {\n color: $theme.textSecondaryColor;\n content: \' \\00BB \';\n}\n\n/**\n * Miscellaneous\n */\n\n.search-results-left .paginationFilter {\n border-top: 1px solid $theme.borderColor;\n padding-left: 0;\n}\n\n.paginationFilter .resultsNo,\n.paginationFilter .controlPagination,\n.paginationFilter .pagination {\n line-height: 22px;\n}\n\n.iconRSS {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/feed.png\')\") no-repeat scroll 0 0 transparent;\n padding-left: 20px;\n}'),(-4212519746212985691,'code','(function() {\n var XWiki = window.XWiki || {};\n XWiki.index = XWiki.index || {};\n XWiki.index.displayAttachmentEntry = function (row, i, table) {\n var tr = new Element(\'tr\');\n if (row.acclev == true) {\n tr.appendChild(new Element(\'td\').update(row.mimeType));\n var fileLink = new Element(\'a\', {\'href\': row.fileurl}).update(row.filename.escapeHTML());\n tr.appendChild(new Element(\'td\').update(fileLink));\n tr.appendChild(new Element(\'td\', {\'class\': \'location\'}).update(row.fullName));\n tr.appendChild(new Element(\'td\').update(row.filesize));\n tr.appendChild(new Element(\'td\').update(row.date.escapeHTML()));\n tr.appendChild(new Element(\'td\').update(row.author));\n } else {\n tr.appendChild(new Element(\'td\'));\n tr.appendChild(new Element(\'td\'));\n tr.appendChild(new Element(\'td\', {\'class\': \'location\'}).update(row.fullName + \'*\'));\n tr.appendChild(new Element(\'td\'));\n tr.appendChild(new Element(\'td\'));\n tr.appendChild(new Element(\'td\'));\n $(\'inaccessibleDocsMessage\').removeClassName(\'hidden\');\n }\n return tr;\n }\n})();'),(-4139327289637513345,'groups',''),(-4139327289637513345,'users','Main.XWikiGuest'),(-4133736481081247730,'codeToExecute','{{notificationsAutoWatchPreferences target=\"wiki\" /}}'),(-4103633289304287762,'code','.notifPreferences tbody {\n margin-top: 2em;\n}\n.notifPreferences .appOdd {\n background: #e5e5e5;\n}\n.notifPreferences .appEven {\n background: #fafafa;\n}\n.notifPreferences .rowApp td, .notifPreferences .rowApp th{\n height: 3em;\n}\n.notifPreferences th:nth-child(1) {\n vertical-align: top;\n width: 250px;\n}\n.notificationAppCell {\n vertical-align: top;\n width: 33%;\n}\n.notificationCollapseButtonCell {\n vertical-align: top;\n text-align: right;\n}'),(-4080310350986805661,'spaces',''),(-4062009109048856284,'code','require([\'jquery\'], function($) {\n var appNameInput = $(\'input[name=\"appName\"]\');\n var appParentInput = $(\'input[name=\"appParentReference\"]\');\n var preview = $(\'.appName-preview\');\n var submitButton = $(\'#wizard-next\').prop(\'disabled\', true);\n\n var errorMessage = appNameInput.closest(\'dd\').prev(\'dt\').find(\'.xErrorMsg\');\n if (errorMessage.size() == 0) {\n errorMessage = $(document.createElement(\'span\')).addClass(\'xErrorMsg\').hide().appendTo(errorMessage.addBack());\n }\n\n var toggleValidationError = function(message) {\n if (message) {\n appNameInput.addClass(\'xErrorField\').focus();\n errorMessage.text(message).show();\n } else {\n appNameInput.removeClass(\'xErrorField\');\n errorMessage.hide();\n }\n };\n\n var updatePreview = function(content) {\n preview.removeClass(\'loading\').html(content);\n var error = preview.find(\'.xErrorMsg\');\n submitButton.prop(\'disabled\', error.size() > 0);\n toggleValidationError(error.remove().text());\n };\n\n var fetchPreviewUpdate = function() {\n if (appNameInput.val() == \'\') {\n updatePreview(\'<span class=\"xErrorMsg\">$escapetool.javascript($services.localization.render(\"platform.appwithinminutes.appNameEmptyError\"))</span>\');\n } else {\n preview.addClass(\'loading\');\n $.get(XWiki.currentDocument.getURL(\'get\'), submitButton.closest(\'form\').serialize(), updatePreview);\n }\n };\n\n var previewTimeout;\n var schedulePreviewUpdate = function() {\n clearTimeout(previewTimeout);\n submitButton.prop(\'disabled\', true);\n setTimeout(fetchPreviewUpdate, 500);\n };\n\n appNameInput.add(appParentInput)\n .on(\'input\', schedulePreviewUpdate)\n .keyup(function(event) {\n // Show the error message if the user presses Enter before typing anything.\n if (event.which == 13 && appNameInput.val() == \'\' && !appNameInput.hasClass(\'xErrorField\')) {\n fetchPreviewUpdate();\n }\n });\n});'),(-4040532020646090681,'description','A CSS class for the element surrounding the property value.'),(-4032952727473843926,'code','/*\n#set ($ckeditorPath = $services.webjars.url(\'org.xwiki.contrib:application-ckeditor-webjar\', \'ckeditor\'))\n#set ($bootstrap3typeaheadPath = $services.webjars.url(\'org.webjars.npm:bootstrap-3-typeahead\', \'bootstrap3-typeahead.min\'))\n#if (\"$!ckeditorPath\" == \'\')\n ## Before XWiki 6.3RC1 (but 5.3M1+)\n #set ($ckeditorWebJarVersion = $services.extension.installed.getInstalledExtension(\n \'org.xwiki.contrib:application-ckeditor-webjar\', \"wiki:$xcontext.database\").id.version)\n #set ($ckeditorPath = $services.webjars.url(\"application-ckeditor-webjar/$ckeditorWebJarVersion/ckeditor.js\"))\n #set ($bootstrap3typeaheadPath = $services.webjars.url(\'bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js\'))\n#elseif ($ckeditorPath.indexOf(\'?\') >= 0)\n ## Before XWiki 7.1M1 the WebJar resource path was included in the query string which means we have to specify the\n ## \'.js\' extension (Require.js doesn\'t add it in this case).\n #set ($ckeditorPath = \"${ckeditorPath}.js\")\n #set ($bootstrap3typeaheadPath = \"${bootstrap3typeaheadPath}.js\")\n#end\n#set ($ckeditorBasePath = $stringtool.removeEnd($stringtool.removeEnd($ckeditorPath, \'.js\'), \'ckeditor\'))\n#set ($resourcePickerBundlePath = \"${ckeditorBasePath}plugins/xwiki-resource/resourcePicker.bundle.min\")\n#set ($macroWizardBundlePath = \"${ckeditorBasePath}plugins/xwiki-macro/macroWizard.bundle.min\")\n#set ($modalPath = \"${ckeditorBasePath}plugins/xwiki-dialog/modal.min\")\n#set ($l10nPath = \"${ckeditorBasePath}plugins/xwiki-localization/l10n.min\")\n#if ($resourcePickerBundlePath.indexOf(\'?\') >= 0)\n ## Before XWiki 7.1M1 the WebJar resource path was included in the query string which means we have to specify the\n ## \'.js\' extension (Require.js doesn\'t add it in this case).\n #set ($resourcePickerBundlePath = \"${resourcePickerBundlePath}.js\")\n #set ($macroWizardBundlePath = \"${macroWizardBundlePath}.js\")\n #set ($modalPath = \"${modalPath}.js\")\n #set ($l10nPath = \"${l10nPath}.js\")\n#end\n*/\nrequire.config({\n paths: {\n ckeditor: \'$!ckeditorPath\',\n resource: \'$!resourcePickerBundlePath\',\n resourcePicker: \'$!resourcePickerBundlePath\',\n entityResourcePicker: \'$!resourcePickerBundlePath\',\n entityResourceSuggester: \'$!resourcePickerBundlePath\',\n entityResourceDisplayer: \'$!resourcePickerBundlePath\',\n modal: \'$!modalPath\',\n l10n: \'$!l10nPath\',\n macroWizard: \'$!macroWizardBundlePath\',\n \'bootstrap3-typeahead\': \'$!bootstrap3typeaheadPath\'\n },\n shim: {\n ckeditor: {\n exports: \'CKEDITOR\',\n // This includes dependencies of the plugins bundled with the CKEditor code.\n deps: [\'jquery\', \'resource\', \'resourcePicker\', \'macroWizard\']\n }\n },\n config: {\n l10n: {\n url: new XWiki.Document(\'Translator\', \'CKEditor\').getURL(\'get\', \'outputSyntax=plain&language=$xcontext.locale\')\n }\n }\n});\n\nwindow.CKEDITOR_BASEPATH = \"$!ckeditorBasePath\";\n\ndefine(\'xwiki-ckeditor\', [\n \'jquery\',\n \'ckeditor\',\n // Used to access the form token required by the upload URL.\n \'xwiki-meta\',\n // Used to catch form action events fired from Prototype.js code (actionButtons.js).\n \'xwiki-events-bridge\',\n // Configures the path to the tree widget module and its dependencies which are used by the page and attachment\n // pickers on the link, image and macro dialogs to select pages and attachments.\n \"$!services.webjars.url(\'org.xwiki.platform:xwiki-platform-tree-webjar\', \'require-config.min.js\', {\'evaluate\': true})\"\n], function($, ckeditor, xwikiMeta) {\n var deferred = $.Deferred();\n\n if (!require.specified(\'tree\')) {\n // Before XWiki 6.4 the xwiki-platform-tree-webjar doesn\'t have the require-config.min.js file so we have to\n // configure the path to tree module and its dependencies ourselves.\n require.config({\n paths: {\n jsTree: \"$!services.webjars.url(\'jstree\', \'jstree.min.js\')\",\n JobRunner: \"$!services.webjars.url(\'org.xwiki.platform:xwiki-platform-job-webjar\', \'jobRunner.min.js\')\",\n tree: \"$!services.webjars.url(\'org.xwiki.platform:xwiki-platform-tree-webjar\', \'tree.min.js\')\"\n }\n });\n }\n\n var loadJavaScriptSkinExtensions = $jsontool.serialize($xwiki.getDocument(\'CKEditor.Config\'\n ).getValue(\'loadJavaScriptSkinExtensions\')) === 1;\n\n // See http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules\n var allowedContentBySyntax = {\n \'xwiki/2.1\': {\n \'$1\': {\n elements: {\n // Elements required because the editor input is a full HTML page.\n html: true, head: true, link: true, script: loadJavaScriptSkinExtensions, body: true,\n // Headings\n h1: true, h2: true, h3: true, h4: true, h5: true, h6: true,\n // Lists\n dl: true, ol: true, ul: true,\n // Tables\n table: true, tr: true, th: true, td: true,\n // Formatting\n span: true, strong: true, em: true, ins: true, del: true, sub: true, sup: true, tt: true, pre: true,\n // Others\n div: true, hr: true, p: true, a: true, img: true, blockquote: true\n },\n // The elements above can have any attribute, through the parameter (%%) syntax.\n attributes: \'*\',\n styles: \'*\',\n classes: \'*\'\n },\n \'$2\': {\n // The XWiki syntax doesn\'t support parameters for the following elements.\n elements: {br: true, dd: true, dt: true, li: true, tbody: true}\n },\n \'$3\': {\n // Wiki syntax macros can output any HTML.\n match: CKEDITOR.plugins.xwikiMacro.isMacroOutput,\n attributes: \'*\',\n styles: \'*\',\n classes: \'*\'\n }\n }\n };\n allowedContentBySyntax[\'xwiki/2.0\'] = allowedContentBySyntax[\'xwiki/2.1\'];\n\n // xwiki-meta module is available only since XWiki 6.3M2\n xwikiMeta = xwikiMeta || {\n form_token: $(\'meta[name=\"form_token\"]\').attr(\'content\')\n };\n\n // We have to pass the plugin that makes the request (the initiator) because the expected response can be different\n // (e.g. between the filebrowser and filetools plugins).\n var getUploadURL = function(document, initiator) {\n return document.getURL(\'get\', $.param({\n sheet: \'CKEditor.FileUploader\',\n outputSyntax: \'plain\',\n language: $(\'html\').attr(\'lang\'),\n form_token: xwikiMeta.form_token,\n initiator: initiator\n }));\n };\n\n // Extend the default CKEditor configuration with settings that depend on the source document.\n var getConfig = function(element) {\n var sourceDocument = XWiki.currentDocument;\n var sourceDocumentReference = $(element).attr(\'data-sourceDocumentReference\');\n if (sourceDocumentReference) {\n sourceDocument = new XWiki.Document(XWiki.Model.resolve(sourceDocumentReference, XWiki.EntityType.DOCUMENT));\n }\n var config = {\n allowedContent: allowedContentBySyntax[$(element).attr(\'data-sourceDocumentSyntax\')],\n filebrowserUploadUrl: getUploadURL(sourceDocument, \'filebrowser\'),\n // This is used in CKEditor.FileUploader so we must keep them in sync.\n fileTools_defaultFileName: \'__fileCreatedFromDataURI__\',\n height: $(element).height(),\n // CKEditor uses \'-\' (dash) as locale separator (between the language code and the country code).\n language: ($(\'html\').attr(\'xml:lang\') || \'\').toLowerCase().replace(\'_\', \'-\'),\n uploadUrl: getUploadURL(sourceDocument, \'filetools\'),\n \'xwiki-link\': {\n labelGenerator: sourceDocument.getURL(\'get\', $.param({\n sheet: \'CKEditor.LinkLabelGenerator\',\n outputSyntax: \'plain\',\n language: $(\'html\').attr(\'lang\')\n }))\n },\n \'xwiki-resource\': {\n dispatcher: sourceDocument.getURL(\'get\', $.param({\n sheet: \'CKEditor.ResourceDispatcher\',\n outputSyntax: \'plain\',\n language: $(\'html\').attr(\'lang\')\n }))\n },\n \'xwiki-source\': {\n htmlConverter: sourceDocument.getURL(\'get\', $.param({\n sheet: \'CKEditor.HTMLConverter\',\n outputSyntax: \'plain\',\n language: $(\'html\').attr(\'lang\')\n }))\n },\n mentions: [\n {\n feed: sourceDocument.getURL(\'get\', $.param({\n sheet: \'CKEditor.LinkSuggestions\',\n outputSyntax: \'plain\',\n language: $(\'html\').attr(\'lang\')\n // Prevent the curly brackets from being URL encoded because they mark a placeholder that will be replaced\n // with the text typed by the user (and CKEditor takes care of URL encoding it).\n }) + \'&input={encodedQuery}\'),\n itemTemplate: [\n \'<li data-id=\"{id}\" class=\"ckeditor-autocomplete-item\">\',\n \'<div>\',\n \'<span class=\"ckeditor-autocomplete-item-icon-wrapper\">\',\n // We have to output both icon types but normally only one is defined and the other is hidden.\n \'<img src=\"{iconURL}\"/>\',\n \'<span class=\"{iconClass}\"></span>\',\n \'</span>\',\n \'<span class=\"ckeditor-autocomplete-item-label\">{label}</span>\',\n \'</div>\',\n \'<div class=\"ckeditor-autocomplete-item-hint\">{hint}</div>\',\n \'</li>\'].join(\'\'),\n outputTemplate: \'<a href=\"{url}\" data-reference=\"{typed}|-|{type}|-|{reference}\">{label}</a>\',\n marker: \'[\',\n minChars: 0,\n itemsLimit: 6\n }\n ]\n };\n if ($(element).attr(\'data-officeImporterSupported\') === \'true\') {\n config[\'xwiki-office\'] = {\n importer: sourceDocument.getURL(\'get\', $.param({\n sheet: \'CKEditor.OfficeImporter\',\n language: $(\'html\').attr(\'lang\')\n }))\n };\n }\n return config;\n };\n\n var oldReplace = ckeditor.replace;\n ckeditor.replace = function(element, config) {\n // Take into account the configuration options specified on the target element.\n return oldReplace.call(this, element, ckeditor.tools.extend(getConfig(element), config || {}, true));\n };\n\n //\n // Add support for configuration namespaces.\n //\n ckeditor.tools.extend = function(target) {\n var argsLength = arguments.length, overwrite, propertiesList;\n if (typeof (overwrite = arguments[argsLength - 1]) == \'boolean\') {\n argsLength--;\n } else if (typeof (overwrite = arguments[argsLength - 2]) == \'boolean\') {\n propertiesList = arguments[argsLength - 1];\n argsLength -= 2;\n }\n for (var i = 1; i < argsLength; i++) {\n var source = arguments[i];\n extendObject(target, arguments[i], overwrite, propertiesList);\n }\n return target;\n };\n\n var extendObject = function(target, source, overwrite, propertiesList) {\n for (var propertyName in source) {\n // Only copy existing fields if in overwrite mode.\n if (overwrite === true || target[propertyName] == null) {\n // Only copy specified fields if list is provided.\n if (!propertiesList || (propertyName in propertiesList)) {\n extendProperty(target, source, propertyName);\n }\n }\n }\n };\n\n var extendProperty = function(target, source, propertyName) {\n if ($.isPlainObject(target[propertyName]) && target[propertyName].__namespace === true &&\n $.isPlainObject(source[propertyName])) {\n ckeditor.tools.extend(target[propertyName], source[propertyName], true);\n } else {\n target[propertyName] = source[propertyName];\n }\n };\n\n require([\n // We cannot add these modules to the list of dependencies because they need the tree module to be configured first.\n \'entityResourcePicker\', \'entityResourceSuggester\', \'entityResourceDisplayer\',\n // Load the translations for our custom CKEditor plugins. We didn\'t add this as a dependency to the xwiki-ckeditor\n // module because some of our plugins load their dependencies with RequireJS and thus they are loaded with a small\n // delay. The plugin needs to be defined before calling CKEDITOR.plugins.setLang().\n \'$!xwiki.getURL(\"CKEditor.Translations\", \"jsx\", \"language=$xcontext.locale\")\'\n ], function() {\n deferred.resolve(ckeditor);\n });\n\n return deferred.promise();\n});'),(-3976076525064735450,'code','#template(\'colorThemeInit.vm\')\n\n.ui-progress {\n margin-top: .5em;\n}\n\n.ui-progress-bar {\n background-image:-moz-repeating-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.2) 5px, transparent 5px, transparent 10px);\n background-repeat: repeat;\n background-color: $theme.notificationSuccessColor !important;\n background-position: left;\n -moz-animation-duration: 0.2s;\n -moz-animation-iteration-count: infinite;\n -moz-animation-name: progress-animation;\n -moz-animation-timing-function: linear;\n}\n\n@-moz-keyframes progress-animation {\n 0% {background-position: -14.142px 0;}\n 100% {background-position: 0px 0;}\n}\n\n.ui-progress-background {\n background-color: transparent;\n border-radius: 8px 8px 8px 8px;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3) inset, 0 1px 0 0 $theme.pageContentBackgroundColor;\n height: 8px;\n}\n\n.ui-progress-bar {\n background-color: $theme.backgroundSecondaryColor;\n border-radius: 8px 8px 8px 8px;\n height: 8px;\n}\n\n.ui-progress-bar.green {\n box-shadow:\n inset 0 2px 9px rgba(255,255,255,0.3),\n inset 0 -2px 6px rgba(0,0,0,0.4);\n\n background-image:\n -webkit-gradient(linear, 0 0, 100% 100%,\n color-stop(.25, rgba(255, 255, 255, .2)),\n color-stop(.25, transparent), color-stop(.5, transparent),\n color-stop(.5, rgba(255, 255, 255, .2)),\n color-stop(.75, rgba(255, 255, 255, .2)),\n color-stop(.75, transparent), to(transparent)\n );\n\n -webkit-background-size: 50px 50px;\n -moz-background-size: 50px 50px;\n}\n '),(-3938854339232665921,'content',''),(-3936339483291927587,'code','.buttonwrapper {\n margin-top: 1em;\n margin-left: 30px;\n }'),(-3920826328332757370,'description',''),(-3899232166025311243,'code','#document-title {\n margin-bottom: 1em;\n}\n#change-context {\n float: right;\n padding-top: 0.5em;\n}\n#goto-select optgroup {\n margin: 0.5ex;\n}\n\n#syntax-page-content {\n margin-left: 15em;\n}\n#syntax-page-content table {\n width: 99%;\n}\n#syntax-page-content>h3 {\n display: none;\n}\n#syntax-page-content>h3.sectionheader {\n display: block;\n}\n\n/*******************************************************/\n\n.syntax-menu .generalIcon {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/page_white_code.gif\')\");\n}\n\n.syntax-menu .editingIcon {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/page_white_edit.gif\')\");\n}\n\n.syntax-menu .advancedIcon {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/wand.gif\')\");\n}\n\n.syntax-menu .programmingIcon {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/page_white_gear.gif\')\");\n}\n\n/* Firefox panics when it has an overflowing table but the content is pre-formatted. */\ntbody>tr>td>tt {\n white-space: normal !important;\n}'),(-3887666743881049937,'description','Whether to show the actions columns or not'),(-3853059763450993954,'code','\'use strict\';\n/**\n * Start the requirejs config.\n */\nrequire.config({\n paths: {\n \'bootstrap-switch\': \'$services.webjars.url(\'bootstrap-switch\', \'js/bootstrap-switch.min\')\'\n },\n shim: {\n \'bootstrap-switch\' : [\'jquery\']\n }\n});\n/**\n * Start the real script.\n */\nrequire([\'jquery\', \'AddNotificationFilterPreferenceLivetable\', \'bootstrap\', \'bootstrap-switch\', \'xwiki-events-bridge\'], function ($, AddNotificationFilterPreferenceLivetable) {\n\n /**\n * Page initialization\n */\n $(document).ready(function() {\n\n new AddNotificationFilterPreferenceLivetable($(\'#modal-add-filter-preference\'), window[\'livetable_notificationFilterPreferencesLiveTable\'], $(\'.filterPreferences button.btn-addfilter\'),\n $(\'.filterPreferences\').attr(\'data-user-url\'));\n var initBootstrapSwitches = function () {\n $(\'#notificationFilterPreferencesLiveTable .notificationFilterPreferenceCheckbox, #notificationFilterPreferencesLiveTable .toggleableFilterPreferenceCheckbox\').bootstrapSwitch({\n size: \'mini\',\n labelText: \'$escapetool.javascript($services.icon.renderHTML(\"bell\"))\'\n });\n };\n $(document).on(\'xwiki:livetable:displayComplete\', function (event, data) {\n // Enable bootstrap switches\n initBootstrapSwitches();\n });\n initBootstrapSwitches();\n\n });\n});\n'),(-3830913107354120076,'code','// Require jQuery\nrequire([\'jquery\', \'xwiki-meta\'], function($, xm) {\n \'use strict\';\n\n // Waiting jQuery to be ready\n $(document).ready(function() {\n \n // Usefull variables\n var iframe = $(\"#iframe\");\n var autoSync = $(\"#autosync\");\n var variableInputs = $(\"#bt-variables input,#bt-variables select\");\n \n // Need IE9+ or any other recent browser\n var match = navigator.userAgent.match(/(?:MSIE |Trident\\/.*; rv:)(\\d+)/);\n if (match && parseInt(match[1]) < 9) {\n iframe.parent().replaceWith(\"<div class=\\\"panel-body\\\"><div class=\\\"alert alert-danger\\\">$services.localization.render(\'platform.flamingo.themes.incompatiblebrowser\')</div></div>\");\n return;\n }\n \n // Put a gray curtain in front of the iframe\n var addCurtain = function() {\n var previewCurtain = $(\"#preview-curtain\");\n if (previewCurtain.length > 0) {\n // The curtain already exist, do nothing.\n return;\n }\n var iframePosition = iframe.position();\n previewCurtain = $(\"<div id=\\\"preview-curtain\\\"><h2>$services.localization.render(\'platform.flamingo.themes.loading\')</h2></div>\");\n previewCurtain.insertAfter(iframe);\n previewCurtain.width(iframe.outerWidth(true));\n previewCurtain.height(iframe.outerHeight(true));\n previewCurtain.css(\"left\", iframePosition.left);\n previewCurtain.css(\"right\", iframePosition.right);\n }\n \n // Remove the curtain\n var removeCurtain = function() {\n $(\"#preview-curtain\").remove();\n }\n \n // Function that waits the iframe to be fully loaded\n var waitUntilIFrameIsLoaded = function(callback) {\n var iframeHead = $(iframe).contents().find(\"head\")[0];\n if (iframeHead !== undefined) {\n callback();\n } else {\n setTimeout(function(){ waitUntilIFrameIsLoaded(callback); }, 100);\n }\n };\n \n // Function that waits the iframe has loaded LESS\n var waitUntilLessIsLoadedInIFrame = function(callback) {\n if (iframe[0].contentWindow.lessJs !== undefined) {\n callback();\n } else {\n setTimeout(function(){ waitUntilLessIsLoadedInIFrame(callback); }, 100 );\n }\n }\n \n // Refresh the preview\n var refreshPreview = function () {\n addCurtain();\n \n // Set the good logo when the iframe is refreshed\n setLogo();\n \n // Get the variables\' values\n var varMap = {};\n for (var i=0; i<variableInputs.length; ++i) {\n var variableInput = variableInputs[i];\n // \'logo\' is handled by the \'setLogo\' function\n // \'lessCode\' is handled afterwards\n if (variableInput.value != \'\' && !variableInput.name.match(\"_0_logo$\") && variableInput.id != \'var-lessCode\') {\n var name = \'@\' + variableInput.id.substr(4); // we remove the \'var-\' part of the id to get the real variable name\n var value = variableInput.value\n var input = $(variableInput);\n // Some values need to be placed inside a string\n if (input.hasClass(\'type-image\')) {\n var url = $(\"#attachmentsURL\").attr(\'data-value\');\n value = \'url(\'+ url.replace(\"__tochange__\", value) + \')\';\n }\n if (input.hasClass(\'type-escapedText\')) {\n value = \'\"\' + value.replace(\'\"\', \'\\\\\"\') + \'\"\';\n }\n varMap[name] = value;\n }\n }\n \n // \'lessCode\' is a special case: it is not a LESS variable, but it contains some code to inject in the LESS file.\n // It is handled by our LessCodePlugin.\n iframe[0].contentWindow.lessCodePlugin.contentToAdd = $(\'#var-lessCode\').val();\n \n // We run LESS in a thread in order to not block the main thread\n setTimeout(function(){\n // Run LESS (which use promises)\n // Note: because of yuicompressor which does not support Promise.prototype.catch() properly, we cannot\n // call p.catch() directly (it generates an error in the logs).\n // See https://jira.xwiki.org/browse/XWIKI-13772\n // Instead, we use the following trick: p[\'catch\']()\n // TODO: remove this trick when we replace yuicompressor by something else.\n iframe[0].contentWindow.lessJs.modifyVars(varMap).then(removeCurtain)[\'catch\'](removeCurtain);\n }, 100);\n };\n \n // Function called when an input is changed by the user\n var onChange = function () {\n var input = $(this);\n if (autoSync.prop(\"checked\") && input.closest(\'.type-image\').length == 0) {\n var oldValue = variableInput.value;\n setTimeout(function(){\n if (variableInput.value == oldValue) {\n refreshPreview();\n }\n }, 1000);\n }\n }\n \n // Function that change the logo in the iframe\n var setLogo = function(event) {\n var value = $(\"[name$=\'_logo\']\").val();\n var iFrameLogo = iframe.contents().find(\"#companylogo > a > img\");\n if (value == \"\") {\n var url = \"$xwiki.getSkinFile(\'logo.svg\')\";\n iFrameLogo.attr(\"src\", url);\n } else {\n var url = $(\"#attachmentsURL\").attr(\'data-value\');\n iFrameLogo.attr(\"src\", url.replace(\"__tochange__\", value));\n }\n }\n \n // Function that adds LESS scripts to the iframe document\n var initIframe = function() {\n addCurtain();\n var iframeHead = iframe.contents().find(\"head\")[0];\n \n // 1: Add a link to the LESS source code of the skin\n var link = document.createElement(\"link\");\n link.rel = \"stylesheet/less\";\n link.type = \"text/css\";\n link.href = \"$xwiki.getSkinFile(\'less/style.less.vm\', true)?colorTheme=no\";\n iframeHead.appendChild(link);\n \n // 2: Add the LESS plugin we have developed which appends dynamically the content of the @lessCode variable\n // to the LESS code of the skin.\n \n // The plugin is an AMD module defined in an other page (we add a query string so require.js does not append the \'.js\' suffix).\n var pluginURL = new XWiki.Document(new XWiki.DocumentReference(xm.wiki, [\'FlamingoThemesCode\'], \'LessCodePluginJs\')).getURL(\'jsx\', \'r=1\');\n \n // We add a script tag to the iframe that will load our plugin and the LESS preprocessor\n var script = document.createElement(\"script\");\n script.innerHTML = \"\\\n require.config({ \\n\\\n paths: { \\n\\\n \'lessJs\': \'$services.webjars.url(\'less\', \'less.min.js\')\', \\n\\\n \'lessCodePlugin\': \'\" + pluginURL + \"\' \\n\\\n } \\n\\\n }); \\n\\\n // Now we load the LessCodePlugin BEFORE loading the LESS prepocessor. \\n\\\n // This is needed because the \'less\' variable defining the list of enabled plugins \\n\\\n // must be declared *before* the LESS preprocessor. \\n\\\n // See: http://lesscss.org/usage/#plugins-in-the-browser \\n\\\n require([\'lessCodePlugin\'], function(lessCodePlugin) { \\n\\\n // We defined it as a global variable so we can re-use it afterwards.\\n\\\n window.lessCodePlugin = lessCodePlugin; \\n\\\n less = { plugins: [lessCodePlugin] }; \\n\\\n // Now we can load the LESS preprocessor. \\n\\\n require([\'lessJs\'], function(lessJs) { \\n\\\n // We defined it as a global variable so we can re-use it afterwards.\\n\\\n window.lessJs = lessJs; \\n\\\n }); \\n\\\n });\";\n iframeHead.appendChild(script);\n \n // 3: Refresh the live preview\n waitUntilLessIsLoadedInIFrame(function(){\n // We need to refresh just after LESS is loaded because the fist rendering does not handle the variables of the\n // flamingo theme. Unfortunately, it means that the preview is rendered twice at the loading of the page.\n // We refresh it in a thread to avoid blocking the browser.\n setTimeout(refreshPreview, 1);\n });\n };\n \n // Add the curtain which will be removed when the iframe will be loaded and the LESS code compiled\n addCurtain()\n // The user can navigate to an other page inside the iframe, so when the page changes (onload),\n // we re-init the iframe to use LESS\n iframe.load(initIframe);\n // Initialize the event handlers\n $(\"#refresh\").click( function() { \n // We refresh it in a thread to avoid blocking the browser.\n setTimeout(refreshPreview, 1);\n });\n for (var i=0; i<variableInputs.length; ++i) {\n var variableInput = variableInputs[i];\n $(variableInput).on(\"change\", onChange);\n }\n // Event handler for the logo field\n var logoFieldInput = $(\"#var-logo input\");\n logoFieldInput.on(\"change\", setLogo);\n\n // Since the input is hidden (by the attachmentSelector macro), we need to do some black magic (i.e. register a MutationObserver) to make it trigger the \"change\" event.\n MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n var trackChange = function(element) {\n if (typeof element !== \'undefined\') {\n var observer = new MutationObserver(function(mutations, observer) {\n if (mutations[0].attributeName == \"value\") {\n $(element).trigger(\"change\");\n }\n });\n observer.observe(element, {\n attributes: true\n });\n }\n }\n // Enable change tracking for the logo field.\n trackChange(logoFieldInput[0]);\n });\n});\n'),(-3757042457310503563,'codeToExecute',''),(-3663729813245595501,'code','@media print {\n .menu {\n display: none;\n }\n}\n.menu {\n &.menu-vertical {\n ul {\n list-style-type: none;\n margin-top: .3em;\n padding: 0;\n ul {\n padding: 0 1em;\n }\n }\n li {\n padding: .3em;\n /* Separator horizontal inside menu */\n &:empty {\n .nav-divider(@dropdown-divider-bg);\n margin: .3em 0;\n padding: 0;\n }\n }\n .xDropdown-menu {\n display: none;\n }\n .xDropdown-toggle {\n cursor: pointer;\n position: relative;\n &:hover {\n background-color: @nav-link-hover-bg;\n }\n &:after {\n .caret;\n content: \'\';\n /* Positioning */\n position: absolute;\n margin-top: @line-height-computed / 3;\n right: 1em;\n /* Collapsed arrow style */\n border-bottom: 4px solid transparent;\n border-right: 4px solid;\n border-top: 4px solid transparent;\n }\n }\n .xDropdown.open {\n > .xDropdown-toggle:after {\n /* Expanded arrow style */\n .caret;\n margin-top: @line-height-computed / 2;\n }\n > .xDropdown-menu {\n display: block;\n }\n }\n }\n &.menu-horizontal {\n /* Stylization: Navbars */\n .clearfix;\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n /* Custom styling */\n .box-shadow(0 2px 8px rgba(0,0,0,0.4) inset);\n min-height: @navbar-height;\n padding-left: 25px;\n & > ul {\n padding-left: 0;\n list-style-type: none;\n margin: 0;\n & > li {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n line-height: @line-height-computed;\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n /* When hovering, have the same color for text and link usage */\n & > span > a {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n /* Links inside menu */\n a {\n color: @navbar-default-link-color;\n &:hover {\n text-decoration: none;\n }\n }\n /* Containers, images inside menu */\n div, img {\n /* Limit the height to the nav height minus the padding and minus border */\n max-height: @navbar-height - (2 * @navbar-padding-vertical) - 2px;\n overflow: hidden;\n }\n /* Separator vertical inside menu */\n &:empty {\n height: @navbar-height;\n margin: 0 ((@line-height-computed / 2) - 1);\n padding: 0;\n border-right: 1px solid @navbar-default-border;\n }\n }\n /* Stylization: Dropdowns */\n ul {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n li {\n /* Text inside menu */\n color: @dropdown-link-color;\n /* Links inside menu */\n a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n overflow: hidden;\n text-overflow: ellipsis; // Displaying ... if the text is too long\n &:hover {\n /* &:extend(.dropdown-menu>li>a:hover); */\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n }\n /* Submenus inside menu */\n &.xDropdown {\n /* Even if we don\'t have links, display the content the same way */\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n /* Empty dropdowns should have height in order to display the arrow */\n min-height: 2 * @font-size-base;\n &:hover {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n /* When in dropdown we also have a link, adjust the hover color */\n & > span > a {\n color: @dropdown-link-hover-color;\n }\n }\n /* When in dropdown we also have a link, reset the duplicated padding */\n & > span > a {\n padding: 0;\n display: inherit;\n }\n /* Place the arrow on the right */\n &:after {\n position: absolute;\n margin-top: @line-height-computed / 2;\n right: 8px;\n }\n }\n /* Separator horizontal inside menu */\n &:empty {\n .nav-divider(@dropdown-divider-bg);\n padding: 0;\n }\n }\n }\n }\n /* Stylization: Generic */\n li {\n /* Display submenus on hover */\n &:hover > ul {\n display: block;\n }\n /* Display an arrow for expandable items */\n &.xDropdown {\n &:after {\n .caret;\n content: \'\';\n margin-left: .5em;\n }\n }\n }\n /* The only way to have a menu with more than 2 levels without JavaScript is to use a fixed width. */\n &.fixedWidth {\n li li {\n position: relative;\n }\n ul ul {\n width: 12em;\n ul {\n left: 12em;\n margin: 0;\n top: 0;\n /* Bring the dropdown closer in order to hover it */\n margin-left: -2px;\n /* Adjust corner to better look as a submenu */\n border-top-left-radius: 0;\n }\n }\n }\n /* Resetting rules for mobile view */\n @media (max-width: @screen-xs-max) {\n > ul { \n margin: 0 0 0 -25px; /* Remove padding added in normal view */\n > li {\n &:empty {\n .nav-divider(@navbar-default-border);\n }\n }\n ul {\n /* Resetting rules for mobile view */\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n li {\n /* Text inside menu */\n color: @navbar-default-link-color;\n /* Links inside menu */\n a {\n color: @navbar-default-link-color;\n &:hover {\n /* Preserve the styling from dropdown */\n }\n }\n /* Submenus inside menu */\n &.xDropdown {\n color: @navbar-default-link-color;\n &:hover {\n background-color: transparent;\n color: inherit;\n }\n /* When in dropdown we also have a link */\n > span > a { \n color: @navbar-default-link-color;\n }\n }\n &:empty {\n .nav-divider(@navbar-default-border);\n }\n }\n }\n }\n li {\n &.xDropdown {\n /* Place the arrow on the right */\n &:after {\n position: absolute;\n margin-top: @line-height-computed;\n right: 1em;\n top: 0;\n }\n }\n }\n &.fixedWidth ul ul {\n width: auto;\n }\n }\n }\n}\n\n.menu .wikiexternallink {\n background: rgba(0, 0, 0, 0) none repeat scroll 0 center;\n padding: 0;\n}\n\n.menu-horizontal-toggle {\n .clearfix;\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n .box-shadow(0 2px 8px rgba(0,0,0,0.4) inset);\n min-height: @navbar-height;\n & .navbar-toggle {\n float: left;\n padding-left: 15px;\n & .icon-bar {\n background-color: @navbar-default-link-color;\n transition: .3s ease all;\n &:nth-of-type(2) {\n opacity: 0;\n }\n &:nth-of-type(3) {\n transform: rotate(45deg);\n }\n &:nth-of-type(4) {\n transform: rotate(-45deg);\n margin-top: -2px;\n margin-bottom: 6px;\n }\n }\n &.collapsed {\n .icon-bar {\n &:nth-of-type(2) {\n opacity: 1;\n }\n &:nth-of-type(3) {\n transform: rotate(0);\n }\n &:nth-of-type(4) {\n transform: rotate(0);\n margin-top: 4px;\n margin-bottom: 0;\n }\n }\n }\n }\n}'),(-3646040555209951223,'async_context',''),(-3646040555209951223,'code','{{velocity}}\n#set ($id = $xcontext.macro.params.id)\n#set ($type = $xcontext.macro.params.type)\n#set ($colorTheme = $xwiki.getUserPreference(\'colorTheme\'))\n#if (\"$!colorTheme\" != \'\')\n ## Make sure we use an absolute reference (see XWIKI-9672)\n #set ($colorTheme = $services.model.resolveDocument($colorTheme, $doc.documentReference))\n#end\n#set ($discard = $xwiki.ssx.use(\"$xcontext.macro.doc.prefixedFullName\", {\'colorTheme\': $colorTheme}))\n#set ($discard = $xwiki.jsx.use(\"$xcontext.macro.doc.prefixedFullName\"))\n#if($type.contains(\'horizontal\'))\n (% role=\"navigation\" class=\"menu-horizontal-toggle\" %)(((\n (% class=\"navbar-header\" %)(((\n {{html}}\n <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#$!{id}\" aria-expanded=\"false\">\n <span class=\"sr-only\"></span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n {{/html}}\n )))\n (% id=\"${id}\" class=\"menu menu-$!type collapse navbar-collapse\" %)(((\n $xcontext.macro.content\n )))\n )))\n#else\n (% #if (\"$!id\" != \'\') id=\"$id\"#end class=\"menu menu-$!type\" %)(((\n $xcontext.macro.content\n )))\n#end\n{{/velocity}}'),(-3646040555209951223,'contentDescription','Define the menu structure using wiki syntax. Each menu item should be a list item and should contain the menu item label or link. You can use nested lists for sub-menu items.'),(-3646040555209951223,'contentJavaType',''),(-3646040555209951223,'description','Displays a menu created using simple wiki syntax (nested lists and links).'),(-3642992592962836614,'javamail_extra_props',''),(-3642992592962836614,'ldap_fields_mapping',''),(-3642992592962836614,'ldap_group_mapping',''),(-3617429680860500611,'lessCode','// Lumen 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #158CBA;\n@brand-success: #28B62C;\n@brand-info: #75CAEB;\n@brand-warning: #FF851B;\n@brand-danger: #FF4136;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Source Sans Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: inherit;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: @gray-dark;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 7px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 13px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 4px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 5px;\n@border-radius-small: 2px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: @gray;\n@btn-default-bg: @gray-lighter;\n@btn-default-border: darken(@btn-default-bg, 5%);\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @gray;\n//** `<input>` border color\n@input-border: darken(#f8f8f8, 6.5%);\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 4);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: @input-border;\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: @gray-lighter;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-light;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: @gray-dark;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: transparent;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-lighter;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @text-color;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: @input-border;\n\n// Navbar links\n@navbar-default-link-color: @gray-light;\n@navbar-default-link-hover-color: @gray-dark;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: @navbar-default-link-hover-color;\n@navbar-default-link-active-bg: transparent;\n@navbar-default-link-disabled-color: @gray-lighter;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #fff;\n@navbar-default-toggle-icon-bar-bg: @gray-light;\n@navbar-default-toggle-border-color: @gray-lighter;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: #fff;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: @gray-light;\n@navbar-inverse-link-hover-color: @gray-dark;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: transparent;\n@navbar-inverse-link-disabled-color: @gray-lighter;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: @gray-lighter;\n@navbar-inverse-toggle-icon-bar-bg: @gray-light;\n@navbar-inverse-toggle-border-color: @gray-lighter;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: #fff;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: @navbar-default-border;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: #fff;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: @nav-tabs-border-color;\n\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @btn-default-color;\n@pagination-bg: @btn-default-bg;\n@pagination-border: @btn-default-border;\n\n@pagination-hover-color: @pagination-color;\n@pagination-hover-bg: @pagination-bg;\n@pagination-hover-border: @pagination-border;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @btn-primary-border;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: @pagination-bg;\n@pagination-disabled-border: @pagination-border;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: #fafafa;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: darken(@state-success-bg, 4%);\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: darken(@state-info-bg, 12%);\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: darken(@state-warning-bg, 5%);\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: darken(@state-danger-bg, 10%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: @jumbotron-bg;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list elements\n@list-group-active-bg: @component-active-bg;\n//** Background color of active list items\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: transparent;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: transparent;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: transparent;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: transparent;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: transparent;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: transparent;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: transparent;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: @gray-lighter;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @jumbotron-bg;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: normal;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @well-bg;\n//** Breadcrumb text color\n@breadcrumb-color: @gray-light;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \">\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #fff;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Lumen 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic\");\n\n.shadow (@width: 4px) {\n border-width: 0 1px @width 1px;\n}\n\n// Navbar =====================================================================\n\n.navbar {\n .shadow();\n}\n\n// Buttons ====================================================================\n\n.btn {\n padding: (@padding-base-vertical + 2) @padding-base-horizontal @padding-base-vertical;\n .shadow();\n font-size: 12px;\n font-weight: bold;\n text-transform: uppercase;\n\n &:hover {\n margin-top: 1px;\n border-bottom-width: 3px;\n }\n\n &:active {\n margin-top: 2px;\n border-bottom-width: 2px;\n .box-shadow(none);\n }\n\n &-lg,\n &-group-lg > .btn {\n padding: (@padding-large-vertical + 2) @padding-large-horizontal @padding-large-vertical;\n line-height: 15px;\n }\n\n &-sm,\n &-group-sm > .btn {\n padding: (@padding-small-vertical + 2) @padding-small-horizontal @padding-small-vertical;\n }\n\n &-xs,\n &-group-xs > .btn {\n padding: (@padding-xs-vertical + 2) @padding-xs-horizontal @padding-xs-vertical;\n }\n\n &-default:hover,\n &-default:focus,\n &-group.open .dropdown-toggle.btn-default {\n background-color: @btn-default-bg;\n border-color: @btn-default-border;\n }\n\n &-primary:hover,\n &-primary:focus,\n &-group.open .dropdown-toggle.btn-primary {\n background-color: @btn-primary-bg;\n border-color: @btn-primary-border;\n }\n\n &-success:hover,\n &-success:focus,\n &-group.open .dropdown-toggle.btn-success {\n background-color: @btn-success-bg;\n border-color: @btn-success-border;\n }\n\n &-info:hover,\n &-info:focus,\n &-group.open .dropdown-toggle.btn-info {\n background-color: @btn-info-bg;\n border-color: @btn-info-border;\n }\n\n &-warning:hover,\n &-warning:focus,\n &-group.open .dropdown-toggle.btn-warning {\n background-color: @btn-warning-bg;\n border-color: @btn-warning-border;\n }\n\n &-danger:hover,\n &-danger:focus,\n &-group.open .dropdown-toggle.btn-danger {\n background-color: @btn-danger-bg;\n border-color: @btn-danger-border;\n }\n\n &-group.open .dropdown-toggle {\n .box-shadow(none);\n }\n}\n\n.navbar-btn {\n &:hover {\n margin-top: 8px\n }\n\n &:active {\n margin-top: 9px\n }\n\n &.btn-sm {\n &:hover {\n margin-top: 11px\n }\n\n &:active {\n margin-top: 12px\n }\n }\n\n &.btn-xs {\n &:hover {\n margin-top: 15px\n }\n\n &:active {\n margin-top: 16px\n }\n }\n}\n\n.btn-group-vertical {\n .btn + .btn {\n &:hover {\n border-top-width: 1px;\n }\n\n &:active {\n border-top-width: 2px;\n }\n }\n}\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n\n a:not(.btn) {\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .success,\n .warning,\n .danger,\n .info {\n color: #fff;\n\n a:not(.btn) {\n color: #fff;\n }\n }\n\n > thead > tr > th,\n > tbody > tr > th,\n > tfoot > tr > th,\n > thead > tr > td,\n > tbody > tr > td,\n > tfoot > tr > td {\n border-color: transparent;\n }\n}\n\n// Forms ======================================================================\n\n.form-control {\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));\n}\n\nlabel {\n font-weight: normal;\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus {\n border: 1px solid @brand-warning;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));\n }\n\n .input-group-addon {\n border: 1px solid @brand-warning;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n border: 1px solid @brand-danger;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));\n }\n\n .input-group-addon {\n border: 1px solid @brand-danger;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n border: 1px solid @brand-success;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));\n }\n\n .input-group-addon {\n border: 1px solid @brand-success;\n }\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: transparent;\n }\n}\n\n.nav-tabs {\n\n > li > a {\n margin-top: 6px;\n border-color: @navbar-default-border;\n color: @gray-dark;\n .transition(all 0.2s ease-in-out);\n }\n\n > li > a:hover,\n > li > a:focus,\n > li.active > a,\n > li.active > a:hover,\n > li.active > a:focus,\n .open > a,\n .open > a:hover,\n .open > a:focus {\n padding-bottom: (@padding-large-vertical + 3);\n margin-top: 0;\n }\n\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: @navbar-default-border;\n }\n\n > li.disabled > a:hover,\n > li.disabled > a:focus {\n padding-top: 10px;\n padding-bottom: 10px;\n margin-top: 6px;\n }\n\n &.nav-justified > li {\n vertical-align: bottom;\n }\n}\n\n.dropdown-menu {\n margin-top: 0;\n .shadow();\n border-top-width: 1px;\n .box-shadow(none);\n}\n\n.breadcrumb {\n border-color: darken(@breadcrumb-bg, 5%);\n border-style: solid;\n .shadow();\n}\n\n.pagination,\n.pager {\n\n > li > a,\n > li > span {\n position: relative;\n top: 0;\n .shadow();\n color: @pagination-color;\n font-size: 12px;\n font-weight: bold;\n text-transform: uppercase;\n\n &:hover {\n top: 1px;\n border-bottom-width: 3px;\n }\n\n &:active {\n top: 2px;\n border-bottom-width: 2px;\n }\n }\n\n > .disabled > a,\n > .disabled > span {\n\n &:hover {\n top: 0;\n .shadow();\n }\n\n &:active {\n top: 0;\n .shadow();\n }\n }\n}\n\n.pager {\n\n > li > a,\n > li > span,\n > .disabled > a,\n > .disabled > span {\n\n &,\n &:hover,\n &:active {\n border-left-width: 2px;\n border-right-width: 2px;\n }\n }\n}\n\n// Indicators =================================================================\n\n.close {\n color: #fff;\n text-decoration: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n color: #fff;\n opacity: 1;\n }\n}\n\n.alert {\n .shadow();\n\n .alert-link {\n font-weight: normal;\n color: #fff;\n text-decoration: underline;\n }\n}\n\n.label {\n font-weight: normal;\n}\n\n// Progress bars ==============================================================\n\n.progress {\n border: 1px solid @navbar-default-border;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.1));\n\n &-bar {\n .box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.15));\n }\n}\n\n// Containers =================================================================\n\n.well {\n border: 1px solid @navbar-default-border;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border-color: @list-group-border;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.jumbotron {\n border: 1px solid @navbar-default-border;\n .box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));\n}\n\n.panel {\n border: 1px solid @navbar-default-border;\n .shadow();\n\n &-default {\n .close {\n color: @text-color;\n }\n }\n}\n\n.modal {\n .close {\n color: @text-color;\n }\n}\n\n.popover {\n color: @text-color;\n}'),(-3605156043146227112,'groups','XWiki.XWikiAllGroup'),(-3605156043146227112,'users','XWiki.XWikiGuest'),(-3591214693919455845,'description',''),(-3567180638470249945,'description',''),(-3524773700877658150,'code','require([\'jquery\'], function($) {\n var enhanceMediaTypeCategory = function() {\n var category = $(this);\n var subtypes = category.next(\'ul\');\n var selected = category.add(subtypes).find(\'.selected, input:checked\').size() > 0;\n !selected && category.addClass(\'closed\');\n subtypes.toggle(selected);\n category.find(\'.itemCount\').click(function(event) {\n category.toggleClass(\'closed\');\n subtypes.toggle();\n });\n };\n\n var maybeEnhanceMediaTypeCategory = function() {\n if (!this.__mediaTypeCategory) {\n this.__mediaTypeCategory = true;\n enhanceMediaTypeCategory.call(this);\n }\n };\n\n var enhanceMediaTypeFacets = function(elements) {\n $(elements).find(\'.search-facet .mediaTypes .mediaTypeCategory\').each(maybeEnhanceMediaTypeCategory);\n };\n\n $(document).on(\'xwiki:dom:updated\', function(event, data) {\n enhanceMediaTypeFacets(data.elements);\n });\n\n enhanceMediaTypeFacets(document.body);\n});'),(-3453253775290952995,'description',''),(-3412545838827422254,'code','.captcha.captcha-refresh {\n /* Align the refresh button to top. */\n vertical-align: top;\n}\n\niframe.captcha-challenge {\n /* Align the iframe (text captcha) with the Refresh button. */\n margin-top: 0.4em;\n /* Min height needed in order for the browser to be able to show vertical scroll bars, if the content needs it. */\n height: 4.5em;\n}'),(-3400582148916525817,'async_context',''),(-3400582148916525817,'content','{{velocity}}{{html clean=\"false\"}} ## we need clean=\"false\" because we want to display the raw content\n #if ($displayQuickSearch && ($xwiki.exists(\'Main.Search\') || $xwiki.exists(\'Main.WebSearch\')))\n #set ($discard = $xwiki.jsx.use(\'XWiki.QuickSearchUIX\'))\n <li>\n <form class=\"navbar-form globalsearch globalsearch-close form-inline\" id=\"globalsearch\" action=\"#if($xwiki.exists(\'Main.Search\'))$xwiki.getURL(\'Main.Search\')#else$xwiki.getURL(\'Main.WebSearch\')#end\">\n <label class=\"hidden\" for=\"headerglobalsearchinput\">$services.localization.render(\'search\')</label>\n <input type=\"text\" name=\"text\" placeholder=\"$services.localization.render(\'panels.search.inputText\')\" id=\"headerglobalsearchinput\" />\n <button type=\"submit\" class=\"btn\" title=\"$services.localization.render(\'search\')\">$services.icon.renderHTML(\'search\')</button>\n </form>\n </li>\n #end\n{{/html}}{{/velocity}}\n'),(-3400582148916525817,'parameters','order=30000'),(-3359420453113900052,'code','#template(\'colorThemeInit.vm\')\n.wizard-help {\n background-color: $theme.backgroundSecondaryColor;\n border-bottom: 1px solid $theme.borderColor;\n color: $theme.textSecondaryColor;\n float: right;\n font-size: 0.857em;\n margin: 0 0 2em 2em;\n padding: 1em;\n width: 17em;\n}\n\n.wizard-help strong {\n color: $theme.textColor;\n}\n\n.wizard-body {\n margin-right: 19em;\n}\n\n.appName-preview dl {\n color: $theme.textSecondaryColor;\n font-size: 0.8em;\n margin-bottom: 1em;\n}\n\n.appName-preview dt {\n font-weight: normal;\n margin-top: 1em;\n}\n\n.appName-preview dt:after {\n content: \":\"\n}\n\n.appName-preview .breadcrumb {\n background-color: transparent;\n padding: 0;\n}'),(-3351362684201877798,'lessCode','\n\n\n\n'),(-3310602411584429034,'async_context',''),(-3310602411584429034,'content','{{velocity}}\n## Display the first extension only, ordered by priority (lowest first).\n#set ($extensions = $services.uix.getExtensions(\'org.xwiki.platform.search.ui.attachmentdoesnotexist\', {\'sortByParameter\' : \'order\'}))\n#if ($extensions.size() > 0)\n {{html clean=\'false\'}}$services.rendering.render($extensions[0].execute(), \'html/5.0\'){{/html}}\n#end\n{{/velocity}}\n'),(-3310602411584429034,'parameters','order=10000'),(-3293952573735824191,'description','The reference to the resource that describes the tree structure and its context menu and which is called to perform the actions on the tree nodes. This resource is used to load the tree dynamically (on demand) when a tree node is opened and to ask for the context menu when the user right-clicks on a tree node that has it. So the resource is not static. For static trees you should use the macro content instead. The reference can be a document reference or an URL/path.'),(-3260150182442019492,'groups','XWiki.XWikiAllGroup'),(-3260150182442019492,'users',''),(-3235804656035246071,'description','The maximum number of child nodes to display when expanding a parent node for the first time. The rest of the child nodes are accessible through a \"more ...\" link. This parameter is basically used to paginate the child nodes and thus helps the tree scale when the number of child nodes is large. The tree passes this parameter to the tree source so it works only with dynamic trees whose source implements child count limit.'),(-3203060263407560193,'groups','XWiki.XWikiAdminGroup'),(-3203060263407560193,'users',''),(-3193846882129491126,'description','Simple application to manage a list of contributors. If you want to know where the movies are defined, check the [[Movies>>Help.Applications.Movies.WebHome]] application.'),(-3183368108746080930,'code','#template(\'colorThemeInit.vm\')\n#canvas, #options {\n border: 1px solid $theme.pageContentBackgroundColor;\n margin: 0.5em 16em 0.5em 0;\n padding: 0.5em;\n}\n\n#canvas.empty, #canvas.hovered {\n border: 1px dashed $theme.borderColor;\n}\n\n#canvas .hint {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/application_form_add.png\')\") no-repeat scroll left center transparent;\n color: $theme.textSecondaryColor;\n display: none;\n font-style: italic;\n margin: 0.5em;\n padding-left: 24px;\n}\n\n#canvas.empty .hint {\n display: block;\n}\n\n#fields input:focus, #fields textarea:focus {\n background-color: $theme.highlightColor;\n}\n\n#fields {\n margin: 0;\n padding: 0;\n}\n\n#fields > li {\n border: 1px dotted $theme.pageContentBackgroundColor;\n list-style: none;\n /* Make sure the loading animation is properly displayed. */\n min-height: 18px;\n padding: 0 0.5em 0.5em;\n}\n\n#fields > li .toolBox {\n display: none;\n position: absolute;\n right: 0.5em;\n top: 0.5em;\n z-index: 1000;\n}\n\n#fields .icon-move {\n cursor: move;\n margin: 2px;\n}\n\n#fields > li:hover {\n border: 1px dotted $theme.borderColor;\n}\n\n#fields > li:hover .toolBox {\n display: block;\n}\n\n#fields .field-config {\n background-color: $theme.backgroundSecondaryColor;\n margin-top: 1em;\n padding: 0 0.5em 0.5em;\n}\n\n#fields .fullScreenEditLinkContainer {\n display: none;\n}\n\n#fields .field-config .leftColumn, #fields .field-config .rightColumn {\n float: left;\n width: 49%;\n}\n\n#fields .field-config .leftColumn {\n margin-right: 2%;\n}\n\n#fields .field-config .readOnly {\n background-color: $theme.backgroundSecondaryColor;\n}\n\n#options {\n background-color: $theme.backgroundSecondaryColor;\n padding-left: 1em;\n width: 33%;\n}\n\n#options .warningmessage {\n border: 0 none;\n font-size: 0.8em;\n}\n\n#palette {\n background-color: $theme.backgroundSecondaryColor;\n float: right;\n max-width: 13.5em;\n padding: 0.5em 1em 1em;\n}\n\n#palette ul {\n margin: 0;\n padding: 0;\n}\n\n#palette li {\n list-style: none;\n}\n\n#palette .category {\n border-bottom: 1px dotted $theme.borderColor;\n color: $theme.linkColor;\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.7em;\n}\n\n#palette .field {\n cursor: move;\n display: block;\n font-size: smaller;\n padding: .3em;\n}\n\n#palette .field:hover {\n background-color: $theme.highlightColor !important;\n}\n\n.xform .wizard-footer {\n margin: 1em 16em 0 0;\n}'),(-3143601393572563931,'async_context',''),(-3143601393572563931,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.shortcuts\'))\n(% class=\"panelitem\" %)[[$services.localization.render(\'comments\')>>?viewer=comments]](%%)##\n(% class=\"pitemseparator\" %) ~| (%%)##\n(% class=\"panelitem\" %)[[$services.localization.render(\'attachments\')>>?viewer=attachments]](%%)##\n#panelfooter()\n{{/velocity}}'),(-3143601393572563931,'description','Shortcuts to document data.'),(-3143182623433737187,'description','Number of items to display by default'),(-3140583498374845078,'async_context',''),(-3140583498374845078,'content','{{velocity output=\"false\"}}\n## UIX on a well-known and stable UIXP meant to explicitly activate and initialize Syntax Highlighting, based\n## on the configuration, instead of risking to cache the configuration values when using a parsed JSX/SSX.\n##\n## Syntax highlighting is enabled only in edit mode, but not for mobiles (which are not well supported by CodeMirror 5.x and below).\n#set ($isMobile = $request.getHeader(\"User-Agent\").matches(\".*(Android|webOS|iPhone|iPad|iPod|Opera Mini).*\"))\n#if ($xcontext.action == \'edit\' && !$isMobile)\n #includeMacros(\'SyntaxHighlighting.GetConfiguration\')\n\n ## Only do work if the extension is enabled.\n #if ($configuration.getValue(\'enabled\') == 1)\n ## JavaScript.\n ## Pass the configured theme.\n #set ($theme = \"$!{configuration.getValue(\'theme\')}\")\n #set ($lineWrapping = ${configuration.getValue(\'lineWrapping\')} == 1)\n #set ($discard = $xwiki.jsx.use(\'SyntaxHighlighting.EnableSyntaxHighlighting\', {\'theme\' : $theme, \'lineWrapping\' : $lineWrapping}))\n\n ## Styling.\n ## Pass the configured highlightColor.\n #set ($highlightColor = \"$!{configuration.getValue(\'highlightColor\')}\")\n #set ($discard = $xwiki.ssx.use(\'SyntaxHighlighting.SyntaxHighlighting\', {\'highlightColor\' : $highlightColor}))\n #end ## enabled check\n#end\n{{/velocity}}\n'),(-3140583498374845078,'parameters',''),(-3105225795215854261,'spaces',''),(-3065312122997211821,'description','States whether a link to the attachment is associated in view mode with the displayed attachment name/image. Possible values: true, false (default).'),(-3042698958279645626,'code','.remove-button {\n float: right;\n}'),(-3010716884089202200,'code','var XWiki = (function(XWiki) {\n\nvar panels = XWiki.panels = XWiki.panels || {};\n\npanels.MoreApplicationsButtonListener = Class.create({\n initialize: function(button) {\n this.button = button;\n this.container = button.up(\'.applicationsPanelMoreList\').down(\'.applicationPanelMoreContainer\');\n\n var moreAppsCount = this.container.select(\'.application-label\').length;\n if (moreAppsCount > 0) {\n this.container.id = \'applicationPanelMoreContainer\' + Math.floor(Math.random()*101);\n this.isToggling = false;\n this.button.observe(\'click\', function(e) {\n e.stop();\n if (!this.isToggling) {\n this.toggle();\n }\n }.bindAsEventListener(this));\n } else {\n button.up(\'.applicationsPanelMoreList\').hide();\n }\n\n return this;\n },\n\n toggle: function() {\n this.isToggling = true;\n if (this.container.hasClassName(\'hidden\')) {\n this.container.style.display = \"none\";\n this.container.removeClassName(\'hidden\');\n Effect.BlindDown(this.container.id, {\n duration: 0.1,\n afterFinish: function() {\n this.isToggling = false;\n }.bind(this)\n });\n } else {\n Effect.BlindUp(this.container.id, {\n duration: 0.1,\n // We do this to be able to get our hidden element back, we don\'t rely on\n // display:none since we don\'t allow nested style in HTML elements.\n afterFinish: function() {\n this.container.addClassName(\'hidden\');\n this.isToggling = false;\n }.bind(this)\n });\n }\n }\n});\n\nreturn XWiki;\n}(XWiki || {}));\n\n// Activate all buttons already in the DOM\n$$(\'.applicationPanelMoreButton\').each(function(button) {\n new XWiki.panels.MoreApplicationsButtonListener(button);\n});'),(-2999554709466154269,'jobDescription',' '),(-2999554709466154269,'script',''),(-2970691917933745233,'description','Spaces to display the tag cloud for. Spaces name must be separate by \",\" character and \"\'\".\n(i.e. spaces=\"\'My Space\',\'Space2\'\")'),(-2875599132551951169,'code','#template(\'colorThemeInit.vm\')\n\n/* Since Colibri doesn\'t support LESS, we manually prefix selectors with \'.skin-colibri\' */\n\n/* General Styles */\n\n.skin-colibri .menu-vertical ul,\n.skin-colibri .menu-horizontal ul {\n list-style-type: none;\n margin: auto;\n padding: 0;\n}\n\n.skin-colibri .menu-vertical ul *,\n.skin-colibri .menu-horizontal ul * {\n line-height: normal;\n}\n\n.skin-colibri .menu-vertical li,\n.skin-colibri .menu-horizontal li {\n cursor: default;\n line-height: 16px;\n min-height: 16px;\n}\n\n.skin-colibri .menu-vertical img,\n.skin-colibri .menu-horizontal img {\n vertical-align: middle;\n}\n\n/* Horizontal separator */\n.skin-colibri .menu-vertical li:empty,\n.skin-colibri .menu-horizontal li li:empty {\n border-top: 1px solid $theme.borderColor;\n line-height: 1px;\n min-height: 0;\n padding: 0;\n}\n\n/* Horizontal Menu */\n\n.skin-colibri .menu.menu-horizontal {\n #css3_backgroundLinearGradient({\n \'to\': \'bottom\',\n \'colors\': [\n {\'color\': $theme.menuGradientColor, \'position\': \'0%\'},\n {\'color\': $theme.menuBackgroundColor, \'position\': \'50%\'}\n ]\n })\n}\n\n.skin-colibri .menu.menu-horizontal {\n background-color: $theme.menuBackgroundColor;\n color: $theme.menuLinkColor;\n font-size: .85em;\n height: 2em;\n padding-left: 25px;\n}\n\n.skin-colibri .menu-horizontal li {\n padding: 0.2em 1.3em;\n}\n\n.skin-colibri .menu-horizontal li li:empty {\n border-top: 1px solid $theme.textSecondaryColor;\n margin: .5em 1em;\n}\n\n/* Vertical separator */\n.skin-colibri .menu-horizontal > ul > li:empty {\n border-left: 1px solid $theme.textSecondaryColor;\n margin: 0 .5em;\n padding: 0;\n vertical-align: middle;\n}\n\n.skin-colibri .menu-horizontal li a,\n.skin-colibri .menu-horizontal li a:visited {\n color: inherit;\n}\n\n.skin-colibri .menu-horizontal > ul > li {\n display: inline-block;\n}\n\n.skin-colibri .menu-horizontal > ul > li.xDropdown:after {\n content: \'\\25BC\';\n font-size: .8em;\n margin-left: .5em;\n}\n\n.skin-colibri .menu-horizontal li li.xDropdown:after {\n content: \'\\25B8\';\n float: right;\n margin-left: .5em;\n}\n\n.skin-colibri .menu-horizontal > ul ul {\n background: none repeat scroll 0 0 $theme.menuBackgroundColor;\n border-radius: 0 0 .8em .8em;\n box-shadow: 0 1px 1px $theme.borderColor;\n display: none;\n margin: 0.2em 0 0 -1.3em;\n padding-bottom: .3em;\n position: absolute;\n z-index: 1000;\n}\n\n.skin-colibri .menu-horizontal li:hover > ul {\n display: block;\n}\n\n/* The only way to have a menu with more than 2 levels without JavaScript is to use a fixed width. */\n.skin-colibri .menu-horizontal.fixedWidth li li {\n position: relative;\n}\n\n.skin-colibri .menu-horizontal.fixedWidth ul ul {\n width: 12em;\n}\n\n.skin-colibri .menu-horizontal.fixedWidth ul ul ul {\n left: 12em;\n margin: 0;\n top: 0;\n}\n\n/* Vertical Menu */\n\n.skin-colibri .menu.menu-vertical {\n color: inherit;\n}\n\n.skin-colibri .menu.menu-vertical ul {\n margin-top: .3em;\n}\n\n.skin-colibri .menu.menu-vertical ul ul {\n margin-left: 1em;\n}\n\n.skin-colibri .menu-vertical li {\n padding: .3em;\n}\n\n.skin-colibri .menu-vertical li:empty {\n margin: .3em 0;\n}\n\n.skin-colibri .menu-vertical .xDropdown-toggle {\n cursor: pointer;\n}\n\n.skin-colibri .menu-vertical .xDropdown-toggle:hover {\n background-color: $theme.highlightColor;\n}\n\n.skin-colibri .menu-vertical .xDropdown-toggle:after {\n content: \'\\25C2\';\n float: right;\n}\n\n.skin-colibri .menu-vertical .xDropdown.open .xDropdown-toggle:after {\n content: \'\\25BE\';\n}\n\n.skin-colibri .menu-vertical .xDropdown-menu {\n display: none;\n}\n\n.skin-colibri .menu-vertical .xDropdown.open > .xDropdown-menu {\n display: block;\n}'),(-2839313616418884870,'code','define(\'AddNotificationFilterPreferenceLivetable\', [\'jquery\', \'xwiki-meta\', \'bootstrap\'], function($, xm) {\n\n return function(modal, filterPreferencesLivetable, buttonAddFilter, userURL) {\n var self = this;\n self.modal = modal;\n self.filterPreferencesLivetable = filterPreferencesLivetable;\n self.buttonAddFilter = buttonAddFilter;\n self.userURL = userURL;\n self.filterTypeSelector = modal.find(\'select#notificationFilterTypeSelector\');\n self.eventTypeSelector = modal.find(\'select#notificationFilterEventTypeSelector\');\n self.notificationFormatSelector = modal.find(\'select#notificationFilterNotificationFormatSelector\');\n self.filterScopeTree = modal.find(\'.location-tree\');\n self.cancelButton = modal.find(\'button[data-action=\"cancel\"]\');\n self.submitButton = modal.find(\'button[data-action=\"submit\"]\');\n\n /**\n * Initialization\n */\n self.init = function () {\n self.buttonAddFilter.click(function() {\n self.filterScopeTree.xtree();\n self.submitButton.prop(\'disabled\', \'disabled\');\n\n self.filterScopeTree.on(\'changed.jstree\', function(e, data) {\n if (data.selected.length > 0) {\n self.submitButton.prop(\'disabled\', \'\');\n }\n });\n });\n\n self.submitButton.click(self.onSelectButtonClicked);\n };\n\n /**\n * On \"submit\" button clicked\n */\n self.onSelectButtonClicked = function() {\n self.modal.modal(\'toggle\');\n\n var tree = $.jstree.reference(self.filterScopeTree);\n var nodes = tree.get_selected(true);\n\n var serviceReference = XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT);\n var serviceURL = new XWiki.Document(serviceReference).getURL(\'get\', \'outputSyntax=plain\');\n\n for (var i = 0; i < nodes.length; ++i) {\n var node = nodes[i];\n var reference = node.data.id;\n var params = {\n action: \'createScopeFilterPreference\',\n filterType: self.filterTypeSelector.val(),\n filterFormats: self.notificationFormatSelector.val().join(\',\'),\n eventTypes: self.eventTypeSelector.val().join(\',\'),\n csrf: xm.form_token\n }\n if (node.data.type == \'wiki\') {\n params[\'wiki\'] = reference;\n } else if (node.data.type == \'document\' && node.data.id.match(\'WebHome$\')) {\n params[\'space\'] = reference.substring(0, reference.length - \'.WebHome\'.length);\n } else {\n params[\'page\'] = reference;\n }\n\n // Saving\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n $.post(serviceURL, params).done(function (data) {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n\n // Reload the livetable\n self.filterPreferencesLivetable.refresh();\n }).fail(function () {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.savingfailed\'))\", \'error\');\n });\n\n return;\n }\n };\n\n // Call init()\n self.init();\n };\n\n});\n'),(-2793391993157275859,'code','\'use strict\';\n/**\n * Start the real script.\n */\nrequire([\'jquery\'], function ($) {\n\n /**\n * Page initialization\n */\n $(document).ready(function() {\n\n /**\n * Handle the notification email interval\n */\n $(\'.notificationEmailInterval\').change(function () {\n var intervalSelect = $(this);\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n var serviceURL = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(serviceURL, {\n \'interval\': intervalSelect.val()\n }).done(function (data) {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n });\n });\n\n /**\n * Handle the include diff in email setting\n */\n $(\'.notificationEmailDiffType\').change(function () {\n var diffTypeSelect = $(this);\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n var serviceURL = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(serviceURL, {\n \'diffType\': diffTypeSelect.val(),\n \'target\': $(\'.notifEmailPreferences\').attr(\'data-target\')\n }).done(function (data) {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n }).fail(function (data) {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.savingfailed\'))\", \'error\');\n });\n });\n\n });\n});\n'),(-2772019619561421597,'code','#template(\"colorThemeInit.vm\")\n#set ($boxSize = 170)\n#set ($boxPadding = 5)\n#set ($boxMargin = 5)\n## Make the upload box two times as wide, so that the input fits nicely.\n## | |\n## | | | |\n## | 1 width + 1 border + 2 margins + 1 border + 1 width |\n#set ($uploadBoxSize = $mathtool.add(2, $mathtool.add($mathtool.mul($boxSize, 2), $mathtool.mul($boxMargin, 2))))\n#set ($imgSize = $mathtool.sub($boxSize, $mathtool.mul($boxPadding, 2)))\n#set ($actionsHeight = 20)\n#set ($actionsWidth = 16)\n/*--------------------------------------------------------*/\n/* Attachment picker layout fixes */\n.attachment-picker p {\n margin: 0;\n padding : 0;\n}\n.attachment-picker picture {\n max-width: 100%;\n}\n/*--------------------------------------------------------*/\n/* Gallery attachmentboxes */\n.gallery p {\n margin: 0;\n}\n.gallery_attachmentbox {\n background: $theme.pageContentBackgroundColor;\n border: 1px solid $theme.borderColor;\n border-radius: 5px;\n float: left;\n margin: ${boxMargin}px;\n overflow: hidden;\n position: relative;\n width: ${boxSize}px;\n}\n.gallery .current {\n background-color: $theme.highlightColor;\n border-width: 3px;\n margin: 3px;\n}\n.gallery .current .gallery_attachmenttitle {\n font-weight: bold;\n}\n.gallery_attachmentbox:hover {\n background-color: $theme.highlightColor;\n}\n\n.gallery_attachmenttitle {\n background: $theme.backgroundSecondaryColor;\n border-bottom: 1px dotted $theme.borderColor;\n border-radius: 5px 5px 0px 0px;\n font-size: 85%;\n padding: 3px ${boxPadding}px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.gallery_attachmenttitle p {\n text-align: center;\n overflow: hidden;\n}\n\n.gallery_attachmentframe {\n padding: ${boxPadding}px;\n height: ${imgSize}px;\n overflow: hidden;\n position: relative;\n}\n\n.gallery_attachmentframe a {\n display: block;\n text-align: center;\n}\n\n.gallery_attachmentbox img {\n max-height: ${imgSize}px;\n max-width: ${imgSize}px;\n width: auto;\n}\n.gallery_attachmentframe ul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.gallery_attachmentframe li {\n margin: 0.5em 0 0.5em 20px;\n font-size: 0.8em;\n}\n.gallery_attachmentframe .mime {\n margin: 0 2px 0 -20px;\n}\n.gallery_attachmentframe .mime img {\n vertical-align: top;\n}\n.gallery_attachmentframe li .filename {\n display: inline-block;\n font-weight: bold;\n width: $mathtool.sub($imgSize, 22)px;\n word-wrap: break-word;\n}\n\n/* Actions */\n.gallery_actions {\n width: auto;\n position: absolute;\n bottom: 0px;\n right: ${boxPadding}px;\n}\n.gallery_actions .tool {\n background: none no-repeat 50% transparent;\n cursor: pointer;\n display: block;\n float: left;\n height: ${actionsHeight}px;\n padding: 0 !important;\n overflow: hidden;\n text-indent: -1000em;\n opacity: 0.6;\n width: ${actionsWidth}px;\n}\n.gallery_actions .tool:hover {\n opacity: 1;\n}\n.gallery_actions .select {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/tick.png\')\");\n}\n.gallery_actions .delete {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/cross.png\')\");\n}\n.gallery_actions .view {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/link.png\')\");\n}\n.gallery_actions .download {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/arrow_down.png\')\");\n}\n/*--------------------------------------------------*/\n/* Upload form */\n.gallery_upload {\n ## Make this box twice as large as the others\n width: ${uploadBoxSize}px;\n}\n* html .gallery_upload {\n width: ${mathtool.add($uploadBoxSize, 2)}px;\n}\n.gallery_upload, .gallery_upload:hover {\n background-color: $theme.backgroundSecondaryColor;\n}\n\n.gallery_upload .gallery_attachmenttitle {\n background-position: 1px center;\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/bullet_add.png\')\");\n background-repeat: no-repeat;\n padding-left: 16px;\n}\n.gallery_upload .gallery_attachmentframe {\n height: auto;\n}\n.gallery_upload_input {\n margin-bottom: 10px;\n}\n.gallery_upload input[type=\"file\"] {\n font-size: 86%;\n width: ${mathtool.sub($uploadBoxSize, $mathtool.mul($boxPadding, 2))}px;\n}\n.gallery_upload .buttonwrapper {\n margin: 0;\n}\n.gallery_upload .button,\n.gallery_upload label {\n font-size: 86%;\n}\n.gallery_upload input[type=\"checkbox\"] {\n vertical-align: text-bottom;\n}\n.gallery_upload label[for=\"commentinput\"] {\n margin-top: 10px;\n}\n\n/* ------------------------------------ */\n/* Buttons on top: */\n.gallery_actions {\n top: 1px;\n right: 3px;\n}\n.gallery_attachmenttitle p {\n text-align: left;\n margin-right: ${mathtool.add($mathtool.mul(2, $actionsWidth), $boxPadding)}px;\n}\n/* ------------------------------------ */\n/* Cancel button */\n.gallery_buttons {\n clear: both;\n margin: ${boxMargin}px;\n}'),(-2741606063508498307,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.tourComplete.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.tourComplete.contentB\', [\'[[\', \'>>http://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/]]\'])\n{{/velocity}}'),(-2679457978378011249,'code','#if ($services.notification.watch.isEnabled())\n## We handle the ability to disable the minification, by choosing the file extension to add to the script paths.\n#set ($jsExtension = \'.min.js\')\n#if (!$services.debug.minify)\n #set ($jsExtension = \'.js\')\n#end\nrequire.config({\n paths: {\n \'bootstrap-switch\': \'$services.webjars.url(\'bootstrap-switch\', \"js/bootstrap-switch${jsExtension}\")\'\n },\n shim: {\n \'bootstrap-switch\' : [\'jquery\']\n }\n});\nrequire([\'jquery\', \'xwiki-meta\', \'bootstrap\', \'bootstrap-switch\'], function ($, xm) {\n \'use strict\';\n // Most of the code comes from the deprecated Watchlist Application\n $(document).ready(function() {\n\n ///\n /// Get the notification inputs for future usage\n ///\n var watchWikiSwitch = $(\'#notificationWiki\');\n var watchSpaceSwitch = $(\'#notificationPageAndChildren\');\n var watchPageSwitch = $(\'#notificationPageOnly\');\n var allWatchSwitches = $([watchWikiSwitch, watchSpaceSwitch, watchPageSwitch]);\n\n ///\n /// Set the icon corresponding to each switch\n ///\n watchPageSwitch.bootstrapSwitch(\'labelText\', \'$escapetool.javascript($services.icon.renderHTML(\'page\'))\');\n watchSpaceSwitch.bootstrapSwitch(\'labelText\', \'$escapetool.javascript($services.icon.renderHTML(\'chart-organisation\'))\');\n watchWikiSwitch.bootstrapSwitch(\'labelText\', \'$escapetool.javascript($services.icon.renderHTML(\'wiki\'))\');\n\n ///\n /// Disabled switches if there is no enabled notification preferences\n ///\n if ($(\'.notifications-toggles\').attr(\'data-enabled\') == \'false\') {\n allWatchSwitches.bootstrapSwitch(\'disabled\', true);\n\n $(\'.notifications-toggles\').tooltip({\n title: \'$escapetool.javascript($services.localization.render(\'notifications.toggle.disabled.hint\'))\',\n placement: \'bottom\'\n });\n } else {\n ///\n /// Add a tooltip to each switch\n ///\n $(\'.bootstrap-switch-id-notificationPageOnly\').tooltip({\n title: \'$escapetool.javascript($services.localization.render(\'notifications.switches.tooltip.page\'))\',\n placement: \'bottom\'\n });\n var watchSpaceToolTip = \'$escapetool.javascript($services.localization.render(\'notifications.switches.tooltip.pageAndChildren\'))\';\n if (xm.documentReference.name != \'WebHome\') {\n // Adapt the tooltip when the current document is terminal\n watchSpaceToolTip = \'$escapetool.javascript($services.localization.render(\'notifications.switches.tooltip.space\'))\';\n }\n $(\'.bootstrap-switch-id-notificationPageAndChildren\').tooltip({\n title: watchSpaceToolTip,\n placement: \'bottom\'\n });\n $(\'.bootstrap-switch-id-notificationWiki\').tooltip({\n title: \'$escapetool.javascript($services.localization.render(\'notifications.switches.tooltip.wiki\'))\',\n placement: \'bottom\'\n });\n }\n \n allWatchSwitches.bootstrapSwitch(\'size\', \'small\');\n\n /**\n * Change the watchlist status of a document/space/wiki.\n */\n var changeWatchListStatus = function (action, location, type) {\n // Disable the toggles so that the user cannot click on them during the request\n allWatchSwitches.bootstrapSwitch(\'disabled\', true);\n /**\n * URL to the service that return the notifications to display\n */\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n $.post(url, {\n \'action\': action,\n \'location\': location,\n \'type\': type,\n \'currentDoc\': XWiki.Model.serialize(xm.documentReference)\n }).done(function (data) {\n // Unfortunately, bootstrap switch does not allow to change the state if it is disabled\n allWatchSwitches.bootstrapSwitch(\'disabled\', false);\n // Update states\n watchPageSwitch.bootstrapSwitch(\'state\', data.document, true);\n watchSpaceSwitch.bootstrapSwitch(\'state\', data.space, true);\n watchWikiSwitch.bootstrapSwitch(\'state\', data.wiki, true);\n // Display success message\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n }).fail (function() {\n notification.hide();\n new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'notifications.switches.changeStatusError\'))\', \'error\');\n allWatchSwitches.bootstrapSwitch(\'disabled\', false);\n });\n };\n\n ///\n /// Change the watchlist status when the switched are manipulated by the user\n ///\n watchPageSwitch.bootstrapSwitch(\'onSwitchChange\', function (event, status) {\n changeWatchListStatus(status ? \'watchLocation\' : \'unwatchLocation\', XWiki.Model.serialize(xm.documentReference), \'document\');\n });\n watchSpaceSwitch.bootstrapSwitch(\'onSwitchChange\', function (event, status) {\n changeWatchListStatus(status ? \'watchLocation\' : \'unwatchLocation\', XWiki.Model.serialize(xm.documentReference.extractReference(XWiki.EntityType.SPACE)), \'space\');\n });\n watchWikiSwitch.bootstrapSwitch(\'onSwitchChange\', function (event, status) {\n changeWatchListStatus(status ? \'watchLocation\' : \'unwatchLocation\', XWiki.Model.serialize(xm.documentReference.extractReference(XWiki.EntityType.WIKI)), \'wiki\');\n });\n\n ///\n /// Avoid the dropdown menu to be closed when the user click on the bootstrap switch\n ///\n $(\'.notifications-toggles .bootstrap-switch\').click(function(event) {\n event.stopImmediatePropagation();\n });\n });\n});\n#end'),(-2643419207793810969,'code','define([\'jquery\', \'xwiki-meta\'], function($, xm) {\n\n /**\n * Globals\n */\n \n // There could be only one picker at a time\n var xwikiCurrentIconsPicker = 0;\n \n // Map that will contains the icons sorted by icon themes\n var icons = {};\n \n // List of icon themes\n var iconThemes = [];\n \n // Current icon theme used for the preview\n var currentIconTheme = \'\';\n \n // Current input field (there could be only one picker at a time)\n var currentInput = 0;\n \n // The spinner object to display when the picker is loading some data from the server\n var spinner = 0;\n \n // The HTML section where the icons are displayed\n var iconListSection = 0;\n \n // The HTML input to select the icon theme to use for the preview\n var iconThemeSelector = 0;\n \n // Picker Dimmensions\n var PICKER_WIDTH = 520;\n var PICKER_HEIGHT = 300;\n\n /**\n * Generate an URL for getting JSON resources about icons\n */\n var getResourceURL = function(action, parameters) {\n var param = \'outputSyntax=plain&action=\' + action;\n if (parameters) {\n param += \'&\' + parameters;\n }\n return (new XWiki.Document(\'IconPicker\', \'IconThemesCode\', xm.wiki)).getURL(\'get\', param);\n }\n \n /**\n * Close the picker\n */\n var closePicker = function() {\n xwikiCurrentIconsPicker.remove();\n xwikiCurrentIconsPicker = 0;\n }\n \n /**\n * Display the list of icons\n */\n var displayList = function(iconTheme) {\n // For each icon\n for (var i=0; i < iconTheme.length; ++i) {\n // Display the icon\n var displayer = $(document.createElement(\'div\'));\n iconListSection.append(displayer);\n displayer.addClass(\'xwikiIconPickerIcon\');\n var imageDiv = $(document.createElement(\'div\'));\n imageDiv.addClass(\'xwikiIconPickerIconImage\').html(iconTheme[i].render);\n displayer.append(imageDiv);\n var iconNameDiv = $(document.createElement(\'div\'));\n iconNameDiv.addClass(\'xwikiIconPickerIconName\').text(iconTheme[i].name);\n displayer.append(iconNameDiv);\n // Change the input value when the icon is clicked\n displayer.click(function(event) {\n currentInput.val(currentInput.data(\'xwikiIconPickerSettings\').prefix + $(event.currentTarget).children(\'.xwikiIconPickerIconName\').text() );\n closePicker();\n });\n }\n }\n \n /**\n * Load the icon list (get the JSON from the server) and display it afterwards\n */\n var loadIconList = function(iconTheme) {\n $.getJSON(getResourceURL(\'data_icons\', \'iconTheme=\'+iconTheme), function(dataIcons) {\n // Put the result in the icons map\n icons[iconTheme] = dataIcons;\n // Display the list\n displayList(icons[iconTheme]);\n // Hide the spinner\n spinner.hide();\n });\n }\n \n /**\n * Fill the icon theme selector with the list of icon themes\n */\n var fillIconThemesSelector = function() {\n // Create the icon theme selector\n for (var i = 0; i < iconThemes.length; ++i) {\n iconThemeSelector.append(\'<option>\'+iconThemes[i]+\'</option>\');\n }\n // Select the icon theme\n iconThemeSelector.val(currentIconTheme);\n }\n \n /**\n * Load the list of all icon themes and display it in the icon themes selector afterwards\n */\n var loadIconThemes = function() {\n // Get the list of all icon themes\n $.getJSON(getResourceURL(\'data_iconthemes\'), function(data) {\n // Save the result\n iconThemes = data.iconThemes;\n // Re-init the global icons map\n icons = {};\n // Fill the map where icon theme names are the keys\n for (var i = 0; i < iconThemes.length; ++i) {\n icons[iconThemes[i]] = [];\n }\n // The first icon theme is the current one (hack)\n currentIconTheme = data.currentIconTheme;\n // Get the icons of the current icon theme\n loadIconList(currentIconTheme);\n // Fill the selector\n fillIconThemesSelector();\n });\n }\n \n /**\n * Create the icon theme selector\n */\n var createIconThemeSelector = function() {\n iconThemeSelector = $(document.createElement(\'select\'));\n // Change the current icon theme where the selector is used\n iconThemeSelector.change(function() {\n currentIconTheme = iconThemeSelector.val();\n // Remove all the displayed icons\n $(\'.xwikiIconPickerIcon\').remove();\n // Display the new ones\n if (icons[currentIconTheme].length == 0) {\n // if the icon theme has not already been loaded, load it\n spinner.show();\n loadIconList(currentIconTheme)\n } else {\n // just display what have been previously loaded\n displayList(icons[currentIconTheme]);\n }\n });\n }\n \n /**\n * Set the position of the picker and handle the current window scroll status\n */\n var setPickerPosition = function() {\n // If the picker does not exist, nothing to do\n if (xwikiCurrentIconsPicker == 0) {\n return;\n }\n \n var inputOffset = currentInput.offset();\n var inputWidth = currentInput.outerWidth();\n var inputHeight = currentInput.outerHeight();\n \n // Compute the left coordinate\n var left = inputOffset.left - $(window).scrollLeft();\n if (inputOffset.left + PICKER_WIDTH > $(\'body\').outerWidth()) {\n // if there is not enough place to display the picker at the same position than the input,\n // then display it by using the right corner of the input for the right corner of the picker\n left = inputOffset.left + inputWidth - PICKER_WIDTH - $(window).scrollLeft();\n if (left < 0) {\n // if there is not enough place for this neither, center the picker\n left = $(\'body\').outerWidth() / 2 - PICKER_WIDTH / 2;\n }\n }\n xwikiCurrentIconsPicker.css(\'left\', left);\n \n // Compute the top coordinate\n var top = inputOffset.top + inputHeight - $(window).scrollTop();\n if (inputOffset.top + inputHeight + PICKER_HEIGHT > $(\'body\').outerHeight()) {\n // if there is not enough place to display the picker just under the input,\n // then display it on the top\n top = inputOffset.top - PICKER_HEIGHT - $(window).scrollTop();\n if (top < 0) {\n // if there is not enough place for this neither, center the picker\n top = $(\'body\').outerHeight() / 2 - PICKER_HEIGHT / 2;\n }\n }\n xwikiCurrentIconsPicker.css(\'top\', top);\n }\n \n /**\n * Create the piccker\n */\n var createPicker = function (input) {\n // If the picker already exists\n if (xwikiCurrentIconsPicker != 0) {\n if (input != currentInput) {\n // if it has been created for an other input, close the previous one\n closePicker();\n } else {\n // the picker already exists for the current input, we do not go further\n return;\n }\n }\n // Save the input\n currentInput = input;\n // Create the picker\n xwikiCurrentIconsPicker = $(document.createElement(\'div\'));\n xwikiCurrentIconsPicker.addClass(\'xwikiIconPickerContainer\');\n // Insert the picker in the DOM\n $(body).append(xwikiCurrentIconsPicker);\n // Set the position\n setPickerPosition();\n // Add the icon list section\n iconListSection = $(document.createElement(\'div\'));\n iconListSection.addClass(\'xwikiIconPickerList\');\n xwikiCurrentIconsPicker.append(iconListSection);\n // Display the spinner correctly, while the icons are loading\n if (spinner == 0) {\n spinner = $(document.createElement(\'img\'));\n spinner.attr(\'alt\', \'$escapetool.javascript($services.localization.render(\'platform.icon.picker.loading\'))\').attr(\'src\', \'$xwiki.getSkinFile(\'icons/xwiki/spinner.gif\')\');\n }\n iconListSection.append(spinner);\n // Add the icon theme selector section\n var iconThemeSelectorSection = $(document.createElement(\'div\'));\n xwikiCurrentIconsPicker.append(iconThemeSelectorSection);\n iconThemeSelectorSection.addClass(\'xwikiIconPickerIconThemeSelector\');\n iconThemeSelectorSection.text(\'$escapetool.javascript($services.localization.render(\'platform.icon.picker.preview\'))\');\n // Create the icon theme selector\n createIconThemeSelector();\n iconThemeSelectorSection.append(iconThemeSelector);\n // Load the icon themes (if is not already loaded)\n if (iconThemes.length == 0) {\n loadIconThemes();\n } else {\n // Fill the selector\n fillIconThemesSelector();\n // Display icons\n if (icons[currentIconTheme].length > 0) {\n // display the icon theme since it has already be loaded\n displayList(icons[currentIconTheme]);\n } else {\n // load the icon theme\n loadIconList(currentIconTheme);\n }\n }\n // Close the picker when the user press \'escape\'.\n currentInput.keyup(function (event) {\n // See: http://stackoverflow.com/questions/1160008/which-keycode-for-escape-key-with-jquery\n if (event.which == 27) {\n closePicker();\n }\n });\n }\n \n /**\n * Create the jQuery plugin\n */\n $.fn.xwikiIconPicker = function(options) {\n // Get the default settings if the options are not fully filled\n var settings = $.extend({\n prefix: \'icon:image:\'\n }, options);\n \n // Enable the picker on focus\n this.each(function() {\n var elem = $(this);\n // Verify that the element is a valid input field\n if (!elem.is(\'input\')) {\n return;\n }\n // Attach the settings to the input\n $(this).data(\'xwikiIconPickerSettings\', settings);\n // Create the picker on focus\n $(this).focusin(function(event) {\n createPicker($(event.currentTarget));\n });\n });\n \n // Because the picker uses the \'fixed\' position, we must recompute its position everytime the user scrolls the page\n // Otherwise, the picker would stay in the same position *on the screen* without staying close to the input.\n $(window).scroll(function() {\n setPickerPosition();\n });\n \n // Close the picker if the input and the picker itself have lost the focus\n $(window).click(function(event) {\n if (xwikiCurrentIconsPicker && document.activeElement != currentInput[0] &&\n !$.contains(xwikiCurrentIconsPicker[0], document.activeElement)) {\n closePicker();\n }\n });\n \n // Return this object to enable the jQuery chaining\n return this;\n }\n});\n'),(-2636269436385194420,'codeToExecute','{{include reference=\"XWiki.SearchAdmin\"/}}'),(-2632817837599900806,'code','require([\'jquery\', \'xwiki-meta\', \'ToggleableFilterPreference\', \'bootstrap-switch\', \'xwiki-events-bridge\'], function ($, xm, ToggleableFilterPreference) {\n\n $(document).on(\'xwiki:livetable:notifications-filters:toggle\', function(event, data) {\n var changedRow = $(data.row.isEnabled);\n if (changedRow.length > 0) {\n if (data.state) {\n changedRow.attr(\"checked\", \"checked\");\n } else {\n changedRow.removeAttr(\"checked\");\n }\n data.row.isEnabled = changedRow.get(0).outerHTML;\n }\n });\n\n // Globals\n var serviceReference = XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT);\n var serviceURL = new XWiki.Document(serviceReference).getURL(\'get\', \'outputSyntax=plain\');\n var userURL = $(\'.filterPreferences\').attr(\'data-user-url\');\n\n // Callback on livetable row printing\n $(document).on(\'xwiki:livetable:notificationFilterPreferencesLiveTable:newrow\', function(event, data) {\n // Delete action\n $(data.row).find(\'a.actiondelete\').click(function(event) {\n event.preventDefault();\n new XWiki.widgets.ConfirmationBox({\n onYes: function() {\n var notif = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.delete.inProgress\'))\", \'inprogress\');\n $.post(serviceURL, {\n action: \'deleteFilterPreference\',\n filterPreferenceId: data.data.filterPreferenceId,\n csrf: xm.form_token\n }).done(function() {\n notif.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.delete.done\'))\", \'done\');\n window.livetable_notificationFilterPreferencesLiveTable.refresh();\n }).fail(function() {\n notif.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.delete.error\'))\", \'error\');\n });\n }\n });\n });\n // Enable / Disable action for classic filter preferences\n $(data.row).find(\'.notificationFilterPreferenceCheckbox\').on(\'switchChange.bootstrapSwitch\', function(event, state) {\n // TODO: Translation keys\n var notif = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.inProgress\'))\", \'inprogress\');\n $.post(serviceURL, {\n action: \'setFilterPreferenceEnabled\',\n filterPreferenceId: data.data.filterPreferenceId,\n enabled: state,\n csrf: xm.form_token\n }).done(function() {\n notif.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.done\'))\", \'done\');\n $(document).trigger(\'xwiki:livetable:notifications-filters:toggle\', {\'row\': data.data, \'state\': state});\n }).fail(function() {\n notif.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.filters.preferences.setEnabled.error\'))\", \'error\');\n });\n });\n // Enable / Disable action for toggleable filter preferences\n $(data.row).find(\'.toggleableFilterPreferenceCheckbox\').each(function() {\n new ToggleableFilterPreference(this, userURL, data.data);\n });\n });\n\n // Initializer\n $(document).ready(function() {\n // This script is usually loaded after the livetable is displayed and so the previous callback is not called.\n // Because of that, we need\n window.livetable_notificationFilterPreferencesLiveTable.refresh();\n });\n});'),(-2608207847226033397,'code','.exclusion-filter {\n margin-bottom: .5em;\n}\n\n.exclusion-filter:last-child {\n margin-bottom: 0;\n}\n\n.exclusion-filter-label label {\n font-weight: inherit;\n}\n\n.exclusion-filter-label label > input[type=\"checkbox\"] {\n margin: 0 .3em 0 0;\n vertical-align: middle !important;\n}\n\nul.exclusion-filter-pages {\n margin-bottom: 0;\n}\n\nul.exclusion-filter-pages li {\n border: 1px solid @xwiki-border-color;\n border-radius: 6px;\n display: inline-block;\n margin-bottom: .5em;\n margin-right: .5em;\n padding: .5em;\n}\n\nul.exclusion-filter-pages li.page.ui-draggable {\n cursor: pointer;\n}\n\n.exclusion-filter-pages .page.selected {\n background-color: @panel-info-heading-bg;\n border: 1px solid @panel-info-border;\n}\n\nul.exclusion-filter-pages li.page.included,\nul.exclusion-filter-pages li.empty {\n border-style: dashed;\n color: @input-color-placeholder;\n font-weight: 100;\n}\n\nul.exclusion-filter-pages li + li.empty {\n display: none;\n}\n\nul.exclusion-filter-pages a {\n text-decoration: none;\n}\n\n.panel.expanded.ui-droppable-active {\n border: 1px dashed @xwiki-border-color;\n}\n\n.panel.expanded.ui-droppable-hover {\n border-color: @brand-info;\n}\n\n.navigationPanelConfiguration .panel.dropTarget {\n border: 1px dashed darken(@panel-info-border, 20%);\n}'),(-2604619317236065862,'query','fq=type:DOCUMENT\nfq=class:XWiki.XWikiUsers\nqf=property.XWiki.XWikiUsers.last_name^10 property.XWiki.XWikiUsers.first_name^5 name^2.5 object.XWiki.XWikiUsers'),(-2596865731051836004,'description','Number of entries to display the activity for.'),(-2511214767798782406,'code','#template(\'colorThemeInit.vm\')\n#spWorkspaceCreateItem {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/chart_organisation_add.png\')\");\n background-repeat:no-repeat;\n}\n\n#spWorkspaceCreateLabel a {\n color: $theme.textSecondaryColor;\n text-decoration: none;\n}\n\n#spWorkspaceCreateForm {\n background-color: $theme.highlightColor;\n border-top: 1px dashed $theme.borderColor;\n padding: .5em 0;\n}\n\n.spWorkspaceItem {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/chart_organisation.png\')\");\n background-repeat:no-repeat;\n}\n\nul.xlist li.workspace div.spWorkspaceName {\n float: left;\n}\n\n/* Hidden elements in lists that are show on hover */\n\nul.xlist li.xitem div.xshowonhover {\n display: none;\n float: right;\n font-size: .8em;\n padding: 0 .5em 0 0;\n}\n\nul.xlist li.xitem:hover div.xshowonhover {\n display: block;\n}\n\nul.xlist li.xitem div.xshowonhover img {\n float: right;\n padding: 0 .2em;\n}'),(-2410815265296805082,'code','/*\n#set ($lines = $stringtool.split($doc.content, $util.newline))\n#set ($translations = {})\n#foreach ($line in $lines)\n #set ($key = $stringtool.substringBefore($line.trim(), \'=\'))\n #if ($key.startsWith(\'ckeditor.plugin.\'))\n #set ($relativeKeyStart = $key.indexOf(\'.\', 16))\n #set ($pluginName = \"xwiki-$key.substring(16, $relativeKeyStart)\")\n #set ($relativeKey = $key.substring($mathtool.add($relativeKeyStart, 1)))\n #set ($pluginTranslations = $translations.get($pluginName))\n #if (!$pluginTranslations)\n #set ($pluginTranslations = {})\n #set ($discard = $translations.put($pluginName, $pluginTranslations))\n #end\n #set ($translation = $services.localization.get($key))\n #if ($translation)\n #set ($discard = $pluginTranslations.put($relativeKey, $translation.rawSource))\n #else\n #set ($discard = $pluginTranslations.put($relativeKey, $relativeKey))\n #end\n #end\n#end\n*/\nrequire([\'ckeditor\'], function(ckeditor) {\n var translations = $jsontool.serialize($translations);\n for (var pluginName in translations) {\n if (translations.hasOwnProperty(pluginName)) {\n ckeditor.plugins.setLang(pluginName, \'$xcontext.locale\', translations[pluginName]);\n }\n }\n});'),(-2386072886685841935,'code','require([\'jquery\'], function($) {\n // It\'s not possible to write a CSS selector that targets list items containing lists so we rely on JavaScript.\n // The \'dropdown\' CSS class is used only to display the down/left arrow.\n $(\'.menu-horizontal li ul\').parent().addClass(\'xDropdown\');\n\n // Make sure the menu separators are really empty.\n $(\'.menu-horizontal, .menu-vertical\').find(\'li > br:first-child\').remove();\n\n // Collapsible menu bahavior.\n $(\'.menu-vertical.collapsible\').each(function(){\n var open = $(this).hasClass(\'open\');\n $(this).find(\'li ul\').each(function() {\n $(this).addClass(\'xDropdown-menu\').parent().addClass(\'xDropdown\' + (open ? \' open\' : \'\'));\n // Wrap everything (including text nodes) before the sub-menu in a DIV that will toggle its state.\n var toggle = this.ownerDocument.createElement(\'div\');\n $(this).parent().prepend(toggle);\n for(var next = toggle.nextSibling; next != this; next = toggle.nextSibling) {\n toggle.appendChild(next);\n }\n $(toggle).addClass(\'xDropdown-toggle\').on(\'click\', function() {\n $(this).parent().toggleClass(\'open\');\n });\n });\n });\n\n // In case of horizontal responsive menus, make sub-submenus in the navbar work on mobile devices\n $(document).on(\'touchstart.dropdown.data-api\', \'.dropdown-submenu > a\', function (event) {\n event.preventDefault();\n });\n})'),(-2264946790060067292,'code','require([\'jquery\', \'bootstrap\'], function($) {\n var adminPageContent = $(\'#admin-page-content\');\n var forms = adminPageContent.find(\'form\');\n // Check if we need to enhance the WYSIWYG administration section with tabs (one tab for each editor).\n if (forms.size() < 2 || forms.is(\'#wysiwyg\')) {\n // Either there is only one editor available or the WYSIWYG administration section handles the tabs itself\n // (XWiki 9.2RC1+). Leave the administration page as it is.\n // This JavaScript code is executed after the page has been loaded so in order to avoid flickering UI we hide the\n // page content from CSS and restore it back here.\n adminPageContent.addClass(\'visible\');\n return;\n }\n\n var formIdToEditorName = {\n \'wysiwyg_XWiki.WysiwygEditorConfig\': \'GWT\',\n \'ckeditorConfig\': \'CKEditor\'\n };\n\n // Use tabs to configure each of the available editors.\n var editorTabList = $(\'<ul class=\"nav nav-tabs\" role=\"tablist\"/>\').prependTo(adminPageContent);\n var editorTabContent = $(\'<div class=\"tab-content\">\').insertAfter(editorTabList);\n forms.each(function() {\n // The Bootstrap Tab plugin uses the tab id in a CSS selector and since dot is a special character we need to avoid\n // it (the Tab plugin expects a valid id string and so it doesn\'t perform any escaping).\n var tabId = $(this).attr(\'id\').replace(\'.\', \'_\') + \'_tab\';\n // Add the tab name.\n var formId = $(this).attr(\'id\');\n var tabName = formIdToEditorName[formId] || formId;\n $(\'<li role=\"presentation\"><a role=\"tab\" data-toggle=\"tab\"></a></li>\').appendTo(editorTabList)\n .find(\'a\').attr({\n \'href\': \'#\' + tabId,\n \'data-editorId\': tabName.toLowerCase()\n }).text(tabName)\n .click(function(event) {\n event.preventDefault();\n $(this).tab(\'show\');\n });\n // Add the tab content.\n $(\'<div role=\"tabpanel\" class=\"tab-pane\"/>\').attr(\'id\', tabId).appendTo(editorTabContent)\n .append($(this).closest(\'#admin-page-content > *\'));\n });\n\n // Show the configuration for the active editor, or the first one if none is active.\n var activeTab = editorTabList.find(\'a[data-editorId=\"$!services.edit.syntaxContent.defaultWysiwygEditor.descriptor.id\"]\');\n if (activeTab.size() === 0) {\n activeTab = editorTabList.find(\'a\').first();\n }\n activeTab.tab(\'show\');\n});'),(-2252936800655847756,'code','#set($discard = $services.localization.use(\'document\', \'SkinsCode.Translations\'))\nrequire([\'jquery\', \'xwiki-meta\'], function($, xm) {\n\n // The global variable that will hold the notification widget (wo we can use it in different functions without adding\n // it to the parameters of these functions)\n var notif = 0;\n\n /**\n * Function called when the user clicks on the \'delete\' button of an object\n */\n var onDeleteObj = function() {\n var obj = $(this).parents(\'.overrideObject\');\n // Getting the object number via the name of an input (eg: XWiki.XWikiSkinFileOverrideClass_3_path -> 3).\n var objNumber = obj.find(\'input\').prop(\'name\').split(\'_\')[1];\n // Called when the user confirm the deletion\n var deleteObjOnConfirm = function() {\n // Perform asynchronously the deletion\n notif = new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.deleting\'))\', \'inprogress\');\n $.ajax({\n \'url\' : XWiki.currentDocument.getURL(\'get\'),\n \'type\' : \'POST\',\n \'dataType\' : \'json\',\n \'data\' : {\n \'action\' : \'deleteObj\' ,\n \'objNumber\' : objNumber ,\n \'form_token\' : xm.form_token ,\n \'outputSyntax\': \'plain\'\n }\n }).done(function(data){\n if (data.status == \'success\') {\n obj.fadeOut();\n xm.refreshVersion();\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.deletingDone\'))\', \'done\'));\n } else if (data.status == \'fail\') {\n if (data.cause == \'form_token\') {\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.error.csrf\'))\', \'error\'));\n } else if (data.cause == \'rights\') {\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.error.rights\'))\', \'error\'));\n }\n }\n });\n }\n \n var confirmationBoxParams = {\n confirmationText: \'$escapetool.javascript($services.localization.render(\'skin.sheet.js.deleteConfirmationText\'))\',\n yesButtonText: \'$escapetool.javascript($services.localization.render(\'skin.sheet.js.deleteConfirmationYes\'))\',\n noButtonText: \'$escapetool.javascript($services.localization.render(\'skin.sheet.js.deleteConfirmationNo\'))\'\n };\n \n // Display a confirmation box\n new XWiki.widgets.ConfirmationBox({onYes: deleteObjOnConfirm}, confirmationBoxParams);\n \n // Do not perform the default action bound to the <button> element\n return false;\n }\n\n /**\n * Function called when an override object is clicked.\n * It shows/hides the properties of the object.\n */\n var objTitleClicked = function() {\n var properties = $(this).parent().find(\'.overrideProperties\');\n if (properties.hasClass(\'hidden\')) {\n // It is the first time we open the object\n // So we remove our own \'hidden\' property\n properties.removeClass(\'hidden\');\n // Then we hide the object via jQuery\n properties.hide();\n // So now we can make it slide (not possible if it were not hidden by jQuery first)\n properties.slideDown();\n } else {\n // The other time, we just use the toggle function\n properties.slideToggle();\n }\n }\n \n /**\n * Function that performs an ajax request to get the code that displays an object and inject it in the page.\n */\n var displayObj = function(objNumber) {\n $.ajax({\n \'url\' : XWiki.currentDocument.getURL(\'get\'),\n \'type\' : \'GET\',\n \'data\' : {\n \'action\' : \'displayObj\',\n \'objNumber\' : objNumber\n }\n }).done(function(data) {\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.addingDone\'))\', \'done\'));\n // Add the html code into the document\n $(\'#overrideSection\').append(data);\n // Get the new object\n var newObj = $(\'.overrideObject\').last();\n // Bind the events of the new objects\n newObj.find(\'.overrideTitle\').click(objTitleClicked);\n newObj.find(\'button\').click(onDeleteObj);\n // Show the new object\n // First we remove our own \'hidden\' class\n newObj.find(\'.overrideProperties\').removeClass(\'hidden\');\n // Then we hide the object via the jQuery API\n newObj.hide();\n // So now we can make it fade (not possible if it were not hidden by jQuery first)\n newObj.fadeIn();\n // Scroll to the element\n $(\'html, body\').animate({scrollTop: newObj.offset().top}, 500);\n });\n }\n\n /**\n * Function called when the user add a new override object\n */\n $(\'#newPathAdd\').click(function() {\n $.ajax({\n \'url\' : XWiki.currentDocument.getURL(\'get\'),\n \'type\' : \'POST\',\n \'dataType\' : \'json\',\n \'data\' : {\n \'action\' : \'newObj\' ,\n \'path\' : $(\'#newPath\').val() ,\n \'form_token\' : xm.form_token ,\n \'outputSyntax\': \'plain\'\n }\n }).done(function(data) {\n notif = new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.adding\'))\', \'inprogress\');\n if (data.status == \'success\') {\n xm.refreshVersion();\n displayObj(data.objNumber);\n } else if (data.status == \'fail\') {\n if (data.cause == \'form_token\') {\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.error.csrf\'))\', \'error\'));\n } else if (data.cause == \'rights\') {\n notif.replace(new XWiki.widgets.Notification(\'$escapetool.javascript($services.localization.render(\'skin.sheet.js.error.rights\'))\', \'error\'));\n }\n }\n });\n \n // Do not perform the default action bound to the <button> element\n return false;\n });\n \n var onDeprecatedPropertyClicked = function() {\n $(\'.deprecatedProperties > dl\').slideToggle();\n }\n \n /**\n * Function that initialize the javascript events\n */\n var init = function() {\n // Bind objTitleClicked to the existing objects\n $(\'.overrideTitle\').click(objTitleClicked);\n // Bind onDeleteObj to the existing objects\n $(\'.overrideObject button\').click(onDeleteObj);\n $(\'.deprecatedProperties > dl\').hide();\n $(\'.deprecatedProperties > h2\').click(onDeprecatedPropertyClicked);\n }\n \n init();\n\n});\n'),(-2236234790004479151,'code','require([\'jquery\'], function($) {\n // Hide the UIX content field.\n $(\'#XWiki\\\\.UIExtensionClass_0_content\').parent(\'dd\').hide().prev(\'dt\').hide();\n // Synchronize the UIX content with the selected extension point id.\n $(\'#XWiki\\\\.UIExtensionClass_0_extensionPointId\').on(\'change\', function(event) {\n $(\'#XWiki\\\\.UIExtensionClass_0_content\').get(0).selectedIndex = this.selectedIndex;\n });\n});'),(-2224769789866383404,'async_context','doc.reference|locale'),(-2209213944681530944,'groups','xwiki:XWiki.XWikiAllGroup'),(-2209213944681530944,'users',''),(-2134012789999948850,'code','## Use the current ColorTheme\n#template(\'colorThemeInit.vm\')\n\n## Generate reference to background image\n#macro(imgURL $name) url($xwiki.getSkinFile(\"icons/silk/${name}.png\")) #end\n\n## Generate reference to background image\n#macro(attImgURL $name) url($doc.getAttachmentURL(\"${name}.png\")) #end\n\n/* Settings panel */\n.annotationsettings {\n background: $theme.pageContentBackgroundColor; ## $theme.backgroundSecondaryColor;\n border: 1px solid $theme.borderColor;\n border-top: none;\n border-radius: 0 0 10px 10px;\n box-shadow: 0 2px 2px -1px $theme.buttonSecondaryBackgroundColor;\n margin-bottom: -8px;\n padding: 8px 25px; /* Padding left, right = padding of the page content */\n position: relative;\n z-index: 998; /* Right below the submenu. */\n}\n.floating-menu + .annotationsettings.floating-menu {\n visibility: hidden;\n}\n.floating-menu:hover + .annotationsettings.floating-menu {\n margin-top: 0;\n visibility: visible;\n}\n.annotationsettings.floating-menu:hover {\n margin-top: -18px;\n visibility: visible;\n}\n.annotationsettings.floating-menu:after {\n content: \"\";\n display: none;\n}\n\n.annotationsettings label {\n font-weight: bold;\n}\n#annotationsdisplay {\n vertical-align: middle;\n}\n\n/* Annotations displayed in the text */\n.annotation-highlight {\n background-color: #FE9; ## $theme.highlightColor;\n}\n## In velocity comment: settings for using the larger images from silk\n.annotation-marker {\n ##background: transparent #imgURL(\'note\') no-repeat left top;\n background: transparent #attImgURL(\'notesmall\') no-repeat left top;\n display: inline-block;\n ##height: 16px;\n height: 10px;\n overflow: hidden;\n text-indent: -9999px;\n ##width: 16px;\n width: 10px;\n vertical-align: baseline;\n ##margin: -19px -14px 3px -2px;\n margin: -15px -7px 5px -3px;\n z-index: 1;\n position: relative;\n cursor: pointer;\n}\n\n/* Annotation boxes */\n.annotation-bubble {\n background: $theme.backgroundSecondaryColor;\n border: 1px dotted $theme.borderColor;\n width: 280px;\n position: absolute;\n z-index: 2;\n border-radius: 0 10px 10px 10px;\n box-shadow: 0 2px 4px -1px $theme.linkColor;\n margin-left: 20px;\n}\n\n.annotation-bubble:before, .annotation-bubble:after {\n content: \"\";\n display: block;\n position: absolute;\n border-right: 10px solid transparent;\n border-bottom: 10px solid transparent;\n}\n\n.annotation-bubble:before {\n top: -1px;\n left: -11px;\n border-right-color: $theme.borderColor;\n}\n.annotation-bubble:after {\n top: 0;\n left: -10px;\n border-right-color: $theme.backgroundSecondaryColor;\n}\n\n.annotation-box {\n padding: 6px 12px;\n}\n\n.annotation-bubble .loading {\n height: 75px;\n}\n\n.annotation-box textarea {\n width: 99%;\n}\n\n.annotationAvatar {\n float: left;\n width: 55px;\n text-align: left;\n}\n.annotationAvatar img {\n max-width: 50px;\n max-height: 50px;\n}\n* html .annotationAvatar img {\n width: 50px;\n}\n\n#allAnnotations .annotationAvatar {\n padding-top: 5px;\n}\n\n#allAnnotations .annotationHeader, #allAnnotations .annotationContent {\n margin-left: 60px;\n}\n#allAnnotations .annotationTitle * {\n line-height: 1.4em;\n}\n.annotation-box .annotationAuthor {\n border-bottom: 1px dotted $theme.borderColor;\n display: block;\n}\n.annotation-box .sep {\n display: none;\n}\n.annotation-box .annotationDate {\n padding-top: 3px;\n margin-right: 51px;\n display: block;\n}\n.annotation-bubble .annotationContent {\n clear: both;\n}\n\n.annotation-box .links {\n float: right;\n font-size: 80%;\n text-transform: lowercase;\n}\n\n#xwikicontent .annotationAdd {\n background-image: #imgURL(\'note_add\');\n}\n\n/* Annotations list (extra-tab) */\n#allAnnotations .annotation {\n margin: 0 0 8px;\n}\n#allAnnotations .annotation .annotationText, #Commentspane .annotation .annotationText {\n padding: 0 36px 0 14px;\n background: transparent #attImgURL(\'notesmall\') left 4px no-repeat;\n text-align: justify;\n}\n#allAnnotations .UPDATED .annotationText, #xwikicontent .UPDATED {\n ##background-image: #imgURL(\'note_error\');\n background-image: #attImgURL(\'notesmallorange\');\n}\n#allAnnotations .ALTERED annotationText, #xwikicontent .ALTERED {\n ##background-image: #imgURL(\'note_delete\');\n background-image: #attImgURL(\'notesmallred\');\n}\n\n/* General display of an annotation */\n.annotationHeader{\n padding: 2px 0px 6px;\n}\n#allAnnotations .annotationHeader:hover {\n background-color: $theme.highlightColor;\n}\n.annotationDate {\n color: $theme.textSecondaryColor;\n font-size: 80%;\n}\n.annotationTools {\n display: block;\n float: right;\n margin-top: -1.2em;\n}\n\n.annotationComment {\n padding: 4px 0;\n}\n\ndt.annotationLabel label {\n color: $theme.textPrimaryColor;\n font-variant: small-caps;\n}\n\n.annotationOriginalSelection {\n color: $theme.textPrimaryColor;\n font-size: 80%;\n}\n\n.annotationContent dt {\n margin: 0;\n}\n.annotationContent dd, .annotationContent blockquote {\n margin-bottom: 10px;\n}\n.annotationContent blockquote {\n padding-left: 12px;\n}'),(-2114507803626208157,'description','Optional parameter to choose the sorting of the list of document.\nValue must be:\n- creationDate sort by creation date (default)\n- modificationDate sort by update date\n- or docName sort alphabetically'),(-2036936592132281844,'async_context','locale'),(-2036936592132281844,'content','{{velocity}}\n#panelheader($services.localization.render(\'help.tipsPanel.title\'))\n#set ($uixs = $services.uix.getExtensions(\'org.xwiki.platform.help.tipsPanel\'))\n#if ($uixs.size() > 0)\n #set ($index = $mathtool.random(0, $uixs.size()))\n $uixs.get($index).getParameters().get(\'tip\')\n#else\n $services.localization.render(\'help.tipsPanel.noTipMessage\')\n#end\n#panelfooter()\n{{/velocity}}'),(-2036936592132281844,'description','Provides various tips about using XWiki'),(-2016864805455824463,'html','#template(\'notification/email/macros.vm\')\n## Main Div\n<div style=\"font-family:\'Open Sans\', \'Helvetica Neue\', Helvetica, Arial, sans-serif; font-size: 12px; background-color:#F5F5F5; padding:15px; margin:0 auto; color: #1d1f24; \">\n ## Main centered table\n <table style=\"max-width: 570px; margin:0 auto\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" align=\"center\"><tr><td>\n ## Logo table\n <table width=\"100%\" border=\"0\"><tr height=\"55px\">\n ## Logo\n <td align=\"left\"><a href=\"$xwiki.getURL($services.wiki.currentWikiDescriptor.mainPageReference)\"><img src=\"cid:logo\" alt=\"XWiki\" style=\"max-width: 50%; max-height: 50px;\"/></a></td>\n ## Notification settings\n <td align=\"right\"><a href=\"$xwiki.getURL($emailUser, \'view\', \'category=notifications\')\" style=\"color: #0088CC; text-decoration: none; font-size: 14px;\"><img src=\"cid:NECog.png\" alt=\"\" height=\"12\" style=\"height: 12px\"/> $escapetool.xml($services.localization.render(\'notifications.settings.title\'))</a></td>\n ## End of the logo table\n </tr></table>\n\n ## Events div\n <div style=\"background:white;padding:1em; border-left: 1px solid #eaeaea;border-right: 1px solid #eaeaea;border-bottom: 1px solid #ddd;border-top: 1px solid #f0f0f0;\">\n <h1 style=\"font-size:30px;font-style:normal;font-weight:500;line-height:42px;letter-spacing:normal; margin-top: 0;font-size:21px;\">$escapetool.xml($services.localization.render(\'notifications.email.title\'))</h1>\n ## Display a table of content\n #displayTOC($sortedEvents)\n ## Display Events\n #foreach ($list in $sortedEvents.values())\n #foreach ($sortedEvent in $list)\n #displaySortedEvent($sortedEvent)\n #end\n #end\n ## End of the events div\n </div>\n ## End of the main table\n </td></tr></table>\n## End of the main div\n</div>\n'),(-2016864805455824463,'text','$services.localization.render(\'notifications.email.title\')\n\n#foreach ($event in $plainTextEvents)\n-------------------------------------------------------------------------------\n$event.trim()\n#end'),(-1970536447999040586,'async_context',''),(-1970536447999040586,'code','{{velocity output=\'false\'}}\n#* Duplicate code (from Main.Activity) START *#\n##\n## User status configuration\n## -------------------------------------------------------------\n#set ($config = \'XWiki.MessageStreamConfig\')\n#set ($configClass = $xwiki.getDocument($config).getxWikiClass())\n#set ($isMessageStreamActive = $services.messageStream.isActive())\n\n#set ($activityActionsMap = {\n \'publicMessage\': \'icons/silk/user_comment.png\',\n \'personalMessage\': \'icons/silk/user_comment.png\',\n \'directMessage\': \'icons/silk/user_go.png\',\n \'groupMessage\': \'icons/silk/group_go.png\'\n})\n##\n#**\n * Display user avatar and action message\n *#\n#macro(activitySnapshot $eventUser $eventType)\n <span class=\'activitySnapshot\'>\n #if ($eventUser != \'XWiki.XWikiGuest\')\n <a href=\"$xwiki.getURL($eventUser)\">#smallUserAvatar(\"$!eventUser\")</a>\n #else\n #smallUserAvatar(\"$!eventUser\")\n #end\n <img class=\'activityActionAvatar\' src=\"$xwiki.getSkinFile($activityActionsMap.get($eventType), true)\" alt=\"$services.localization.render(\"xe.activity.action.${eventType}\", [$relatedEventsNo])\" title=\"$services.localization.render(\"xe.activity.action.${eventType}\", [$relatedEventsNo])\" />\n </span>\n#end\n##\n#* Duplicate code END *#\n##\n## Skin Extensions\n##--------------------------------------------------------------\n#set ($discard = $xwiki.ssx.use(\'Main.MessageSenderMacro\'))\n#set ($discard = $xwiki.jsx.use(\'Main.MessageSenderMacro\'))\n{{/velocity}}\n\n{{velocity}}\n#if ($isMessageStreamActive)\n #set ($xredirect = $doc.getURL($xcontext.action, $!{request.queryString}))\n #set ($errorMessageKeyPrefix = \"messageSender.post.error.\")\n #set ($errorMessage = $request.session.getAttribute(\"${errorMessageKeyPrefix}${xredirect}\"))\n #if (\"$!errorMessage\" != \'\')\n ## Clean the error and display the message.\n #set ($discard = $request.session.removeAttribute(\"${errorMessageKeyPrefix}${xredirect}\"))\n {{error}}$errorMessage{{/error}}\n\n ##\n ## Handle postMessage action here so that the macro can be self contained.\n ##\n #elseif (\"$!{request.xaction}\" != \'\')\n #if (\"$!{request.xaction}\" == \'postMessage\')\n #if(!$services.csrf.isTokenValid(${request.form_token}))\n #set($redirectURL = $services.csrf.getResubmissionURL())\n $response.sendRedirect($redirectURL)\n #else\n #set ($message = \"$!{request.messagestream_message.trim()}\")\n #if ($message == \'\')\n ## Do nothing with empty messages\n #if (\"$!{request.xredirect}\" != \'\')\n $response.sendRedirect(${request.xredirect})\n #end\n #else\n #set ($success = false)\n #if (!$isGuest)\n #set ($messageType = \"$!{request.visibilityLevel}\")\n #if ($messageType == \'everyone\')\n #set ($success = $services.messageStream.postPublicMessage($message))\n #elseif ($messageType == \'followers\')\n #set ($success = $services.messageStream.postPersonalMessage($message))\n #elseif ($messageType == \'group\')\n #set ($success = $services.messageStream.postMessageToGroup($message, $services.model.resolveDocument(\"$!{request.targetName}\")))\n #elseif ($messageType == \'user\')\n #set ($success = $services.messageStream.postDirectMessageToUser($message, $services.model.resolveDocument(\"$!{request.targetName}\")))\n #end\n #end\n #if (!$success)\n #if ($request.xpage == \'plain\')\n #if ($isGuest)\n $response.setStatus(401)## Unauthorized\n #else\n $response.setStatus(403)## Forbidden\n #end\n $services.localization.render(\'xe.activity.messages.submit.failed\')\n #elseif (\"$!{request.xredirect}\" != \'\')\n ## Pass the error message in the xredirect so that we display it in the calling page and not in the macro page.\n $request.session.setAttribute(\"${errorMessageKeyPrefix}${request.xredirect}\", $services.localization.render(\'xe.activity.messages.submit.failed\'))\n $response.sendRedirect($request.xredirect)\n #else\n {{error}}$services.localization.render(\'xe.activity.messages.submit.failed\'){{/error}}\n\n #end\n #elseif (\"$!{request.xredirect}\" != \'\')\n $response.sendRedirect(${request.xredirect})\n #elseif ($request.xpage == \'plain\')\n ## Just print something for confirmation.\n $services.localization.render(\'xe.activity.messages.submit.success\')\n #end\n #end\n #end\n #end\n #end\n ##\n ## Display the UI. Don\'t display it for AJAX calls and guests.\n ##\n #if ($request.xpage != \'plain\' && !$isGuest)\n ## When this macro is displayed in edit/inline mode, we disable the inputs and no longer display the form (because it would clash with the main form of inline edit).\n #set ($inEditMode = ($xcontext.action == \'inline\' || $xcontext.action == \'edit\'))\n #set ($actionQueryString = \"xredirect=$escapetool.url($xredirect)\")\n {{html}}\n ## Wrap the form in a div so that the layout is preserved in inline mode (where the form is stripped by the rendering).\n <div class=\'messagestream xform\'>\n #if (!$inEditMode)\n <form action=\"${xwiki.getURL(\'Main.MessageSenderMacro\', \'view\', $!{actionQueryString})}\" method=\'post\'>\n #end\n <div class=\'message-content\'>\n #if(!$inEditMode)\n ## CSRF prevention\n <input type=\"hidden\" name=\"form_token\" value=\"$!{services.csrf.getToken()}\" />\n <input type=\'hidden\' name=\'xaction\' value=\'postMessage\' />\n #end\n #activitySnapshot($xcontext.user, \'personalMessage\')\n <div class=\'messagestream-data\'>\n <textarea name=\'messagestream_message\' rows=\'3\' cols=\'40\'#if($inEditMode) disabled=\'disabled\'#end></textarea>\n </div>\n <div class=\'messagestream-tools\'>\n #set ($possibleTargets = $xcontext.macro.params.get(\'visibilityOptions\').split(\'\\s*,\\s*\'))\n #if (!$possibleTargets)\n #set ($possibleTargets = $configClass.get(\'visibilityLevel\').getListValues())\n #end\n ##\n #set ($targetName = $xcontext.macro.params.get(\'visibilityParameter\'))\n ##\n #set ($defaultTarget = $xcontext.macro.params.get(\'visibility\'))\n #if (!$defaultTarget)\n #if ($doc.getObject(\'XWiki.XWikiGroups\'))\n #set ($defaultTarget = \'group\')\n #set ($targetName = $doc.fullName)\n #elseif ($doc.getObject(\'XWiki.XWikiUsers\'))\n #if ($doc.documentReference == $xcontext.userReference)\n #set ($defaultTarget = \'followers\')\n #else\n #set ($defaultTarget = \'user\')\n #set ($targetName = $doc.fullName)\n #end\n #else\n #set ($defaultTarget = \'everyone\')\n #end\n #end\n <label>$services.localization.render(\'xe.activity.messages.visibility\')\n <select name=\'visibilityLevel\'#if($inEditMode) disabled=\'disabled\'#end>\n #foreach ($target in $possibleTargets)\n <option value=\"${target}\"#if ($defaultTarget == $target) selected=\'selected\'#end>$services.localization.render(\"XWiki.MessageStreamConfig_visibilityLevel_${target}\")</option>\n #end\n </select>\n </label>\n #set ($suggestPickerParams = {\n \'name\': \'targetName\',\n \'title\': $services.localization.render(\'xe.activity.messages.visibility.targetName.tip\')\n })\n #foreach ($target in [\'user\', \'group\'])\n #if ($possibleTargets.contains($target))\n #set ($notDefaultTarget = $target != $defaultTarget)\n <div class=\"message-target message-target-$target#if ($notDefaultTarget) hidden#end\">\n #set ($discard = $suggestPickerParams.put(\'class\', \'targetName\'))\n #set ($suggestPickerParams.disabled = $inEditMode || $notDefaultTarget)\n #set ($suggestPickerParams.value = $targetName)\n #if ($notDefaultTarget)\n #set ($suggestPickerParams.value = \'\')\n #end\n #if ($target == \'user\')\n #userPicker(false, $suggestPickerParams)\n #else\n #groupPicker(false, $suggestPickerParams)\n #end\n </div>\n #end\n #end\n <div class=\"message-target message-target-default\">\n <input type=\"hidden\" name=\"targetName\" value=\"$!escapetool.xml($targetName)\" class=\"targetName\" />\n </div>\n </div>\n <div class=\'messagestream-buttons\'>\n <span class=\'butonwrapper\'><input type=\'submit\' value=\"$services.localization.render(\'xe.activity.messages.submit\')\" class=\'button\'#if($inEditMode) disabled=\'disabled\'#end/></span>\n </div>\n </div>\n #if (!$inEditMode)\n </form>\n #end\n </div>\n {{/html}}\n #end\n#end\n{{/velocity}}'),(-1970536447999040586,'contentDescription',''),(-1970536447999040586,'contentJavaType',''),(-1970536447999040586,'description','A control that allows users to enter messages that are handled by the MessageStream module.'),(-1936180725212797104,'async_context',''),(-1936180725212797104,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'addobject\'))\n{{html}}\n<form id=\"objectadd\" method=\"post\" action=\"$doc.getURL(\'objectadd\')\" onsubmit=\"cancelCancelEdit()\">\n<p>\n<input type=\"hidden\" name=\"form_token\" value=\"$!{services.csrf.getToken()}\" />\n<input type=\"hidden\" name=\"xredirect\" value=\"$doc.getURL(\'edit\', \'editor=object\')\" />\n<select name=\"classname\" size=\"1\">\n<option value=\"---\">$services.localization.render(\'selectclass\')</option>\n##\n## Existing classes are enumerated, grouped by space name.\n## The list is already sorted alphabetically\n##\n#set ($prevSpace = \'\')\n#set ($optGroupOpen = false)\n#foreach ($classname in $xwiki.classList)\n #set ($classdoc = $xwiki.getDocument($classname))\n #if ($classdoc.space != $prevSpace)\n #if ($optGroupOpen)\n </optgroup>\n #else\n #set($optGroupOpen = true)\n #end\n <optgroup label=\"$classdoc.space\">\n #set($prevSpace = $classdoc.space)\n #end\n <option value=\"$classdoc.fullName\">$classdoc.documentReference.name</option>\n#end\n#if($optGroupOpen)\n </optgroup>\n#end\n</select>\n</p>\n<p>\n<span class=\"buttonwrapper\"><input type=\"submit\" value=\"$services.localization.render(\'addobjectfromclass\')\" class=\"button\"/></span>\n</p>\n</form>\n{{/html}}\n#panelfooter()\n{{/velocity}}'),(-1936180725212797104,'description','Form which allows adding an object to a document.'),(-1852456709494029360,'code','#template(\"colorThemeInit.vm\")\n\n#wikiActivityColumn {\n margin: 5px 10px 10px;\n padding: 5px 10px 10px;\n}\n\n#wikiActivity .loading {\n padding-left: 20px;\n background-position: 0 0;\n}\n\n.wikiActivity {\n float: right;\n font-size: 0.8em;\n}\n\n#wikis li:hover {\n background-color: $theme.highlightColor;\n}\n\n#wikis li {\n padding: 2px 20px 2px 2px;\n}\n\n#wikis {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}'),(-1766016663854888874,'description','The full name of the document holding the XClass that contains the property associated with this picker. '),(-1765501228075082150,'codeToExecute',''),(-1752534344546546898,'description','Target of the macro (could be \"user\" for the current user or \"wiki\" for the current wiki)'),(-1747715356826438273,'code','#template(\'colorThemeInit.vm\')\n\n/**\n * Users Live Table\n */\n#userstable td[data-title] {\n vertical-align: middle;\n}\n#userstable .actiondisable .action-icon {\n color: $theme.notificationWarningColor;\n}\n#userstable .actionenable .action-icon {\n color: $theme.notificationSuccessColor;\n}\n\n/**\n * Delete User Modal\n */\n#deleteUserModal .userName {\n font-weight: bolder;\n}\n#deleteUserModal .errormessage {\n margin-bottom: 0;\n}\n#deleteUserModal .xform > dl {\n margin-top: 1em;\n}\n/* Make sure the drop down for the new author picker is shown on top of the modal. */\nbody > .selectize-dropdown {\n z-index: 10051;\n}'),(-1738067548726089409,'description','Whether to display a checkbox in front of each tree node to allow the user to select multiple tree nodes.'),(-1700850375686838038,'async_context',''),(-1700850375686838038,'content','{{velocity}}\n#set ($rv_maxItems = \"$!xwiki.getUserPreference(\'recent_actions_items\')\")\n#if ($rv_maxItems == \'\')\n #set ($rv_maxItems = 5)\n#end\n#set ($recentlyViewed = $xwiki.statsService.getRecentActions(\'view\', $rv_maxItems))\n#if ($recentlyViewed.size() > 0 || $showEmptyPanels)\n #panelheader($services.localization.render(\'panels.recentlyVisited.title\'))\n #foreach ($docName in $recentlyViewed)\n #if ($xwiki.hasAccessLevel(\'view\', $docName))\n #set ($recentDoc = $xwiki.getDocument($docName).getTranslatedDocument())\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in document title.\n * {{html}}<a href=\"$recentDoc.getURL()\">$escapetool.xml($recentDoc.plainTitle)</a>{{/html}}\n #end\n #end\n#panelfooter()\n#end\n{{/velocity}}'),(-1700850375686838038,'description','List the last 5 documents you have visited.'),(-1645071547164518142,'async_context',''),(-1645071547164518142,'content','{{velocity}}\n## Determine the filename from the last request URL path element.\n#set ($filename = $stringtool.substringAfterLast($request.requestURL, \'/\'))\n## URL unescape any spaces.\n#set ($filename = $stringtool.remove($filename, \'%20\'))\n##\n## Handle the case when there are spaces in the file name\n#set ($filenameWords = $stringtool.split($filename, \' \'))\n#set ($filenameSplit = \"${stringtool.join($filenameWords, \',\')}\")\n#set ($filenameSplitFuzzy = \"$!{stringtool.join($filenameWords, \'~,\')}~\")\n#set ($filenameSplitWildcard = \"*$!{stringtool.join($filenameWords, \'*,*\')}*\")\n##\n## Determine the document name.\n#set ($docName = $doc.pageReference.name)\n##\n## Handle the case when there are spaces in the doc name.\n#set ($docNameWords = $stringtool.split($docName, \' \'))\n#set ($docNameSplit = \"${stringtool.join($docNameWords, \',\')}\")\n#set ($docNameSplitFuzzy = \"$!{stringtool.join($docNameWords, \'~,\')}~\")\n#set ($docNameSplitWildcard = \"*$!{stringtool.join($docNameWords, \'*,*\')}*\")\n##\n## Extract the space reference elements.\n#set ($spaceReferenceStrings = \"\")\n#set ($spaceReferenceFuzzyStrings = \"\")\n#set ($spaceReferenceWildcardStrings = \"\")\n#set ($spaceReferences = $doc.documentReference.spaceReferences)\n#foreach ($spaceReference in $spaceReferences)\n #if ($foreach.count > 1)\n #set ($spaceReferenceStrings = \"$!{spaceReferenceStrings}, \")\n #set ($spaceReferenceFuzzyStrings = \"$!{spaceReferenceFuzzyStrings}, \")\n #set ($spaceReferenceWildcardStrings = \"$!{spaceReferenceWildcardStrings}, \")\n #end\n ## Note: Also handling possible space characters in the space name.\n #set ($spaceNameWords = $stringtool.split(${spaceReference.name}, \' \'))\n #set ($spaceReferenceStrings = \"$!{spaceReferenceStrings}${stringtool.join($spaceNameWords, \',\')}\")\n #set ($spaceReferenceFuzzyStrings = \"$!{spaceReferenceFuzzyStrings}${stringtool.join($spaceNameWords, \'~,\')}~\")\n #set ($spaceReferenceWildcardStrings = \"$!{spaceReferenceWildcardStrings}*${stringtool.join($spaceNameWords, \'*,*\')}*\")\n#end\n##\n## Files in the same document\n#set ($suggestionsQueryString = \"filename:($filenameSplit, $filenameSplitFuzzy, $filenameSplitWildcard) OR (space_exact:\"\"$doc.space\"\" AND name_exact:\"\"$doc.documentReference.name\"\")\")\n## Files in a document with a similar name or space elements as the current doc.\n#set ($suggestionsQueryString = \"${suggestionsQueryString} OR spaces:($spaceReferenceStrings, $spaceReferenceFuzzyStrings, $spaceReferenceWildcardStrings) OR name:($docNameSplit, $docNameSplitFuzzy, $docNameSplitWildcard)\")\n##\n## Build and run the Solr query.\n#set ($suggestionsQuery = $services.query.createQuery($suggestionsQueryString, \"solr\"))\n#set ($filterQuery = [\'type:\"ATTACHMENT\"\', \"locale:(\"\"$xcontext.locale\"\" OR \"\"\"\")\"])\n#if ($xwiki.getUserPreference(\'displayHiddenDocuments\') != 1)\n #set ($discard = $filterQuery.add(\'hidden:false\'))\n#end\n#set ($discard = $suggestionsQuery.bindValue(\'fq\', $filterQuery))\n#set ($discard = $suggestionsQuery.setLimit(10))\n##\n#set ($suggestionsResponse = $suggestionsQuery.execute()[0])\n#set ($suggestionResults = $suggestionsResponse.results)\n##\n## Display the suggestions, if any.\n#if ($suggestionResults.size() > 0)\n #set ($discard = $xwiki.ssx.use(\'XWiki.SolrAttachmentDoesNotExistUIX\'))\n\n {{html clean=\"false\"}}\n <div class=\'attachmentdoesnotexist-solr-container\'>\n <p><b>$services.localization.render(\'solr.uix.attachmentdoesnotexist.title\')</b></p>\n <ul>\n #template(\'hierarchy_macros.vm\')\n #foreach ($suggestionResult in $suggestionResults)\n #set ($suggestionResultReference = $services.solr.resolve($suggestionResult, \'ATTACHMENT\'))\n <li><a href=\"$escapetool.xml($xwiki.getURL($suggestionResultReference))\">#hierarchy($suggestionResultReference, {\'plain\' : true, \'local\' : true})</a></li>\n #end\n </ul>\n </div>\n {{/html}}\n\n#end\n{{/velocity}}\n'),(-1645071547164518142,'parameters','order=10000'),(-1635704484567425688,'async_context',''),(-1635704484567425688,'content','{{velocity}}{{html clean=\"false\"}}\n #template(\'drawer_macros.vm\')\n ##\n ## Wiki Index\n ##\n ## The wiki index is only displayed on the main wiki OR on subwikis which support only global users (so the farm use-case is still possible)\n #set ($wikiIndexRef = $services.model.createDocumentReference($services.wiki.mainWikiId, \'WikiManager\', \'WebHome\'))\n #if (($xcontext.isMainWiki() || \"$!services.wiki.user.userScope\" == \'GLOBAL_ONLY\') && $xwiki.exists($wikiIndexRef) && $services.security.authorization.hasAccess(\'view\', $wikiIndexRef))\n #drawerItem($xwiki.getURL($wikiIndexRef), \'list\', $escapetool.xml($services.localization.render(\'platform.wiki.menu.wikiindex\')))\n #end\n{{/html}}{{/velocity}}\n'),(-1635704484567425688,'parameters','order=10000\nseparator=true\ncategory=global'),(-1608006888709986010,'code','#template(\"colorThemeInit.vm\")\n\n.share-dialog .mail-preview {\n background-color: $theme.backgroundSecondaryColor;\n border: 1px solid $theme.borderColor;\n border-radius: 4px;\n box-shadow: inset 0 0 7px $theme.borderColor;\n padding: 0 10px;\n max-height: 20em;\n overflow: auto;\n}\n\nbody > .selectize-dropdown {\n z-index: 1051;\n}'),(-1573786177635040234,'description','Only lists documents having a full reference matching the passed location (e.g. passing \"Beau\" would match a document reference of \"France.Paris.Beaubourg.Office\")'),(-1567846853903123873,'groups',''),(-1567846853903123873,'users','XWiki.waritko'),(-1545377395742505023,'code','#options dt, #fields dt {\n margin-top: 0;\n padding-top: 0.5em;\n}\n\n#fields .field-config label {\n color: $theme.textSecondaryColor;\n}\n\n#fields .unset {\n color: $theme.textSecondaryColor !important;\n}\n\n#fields .autoResize-meter {\n left: -9999px;\n position: absolute;\n top: 0;\n visibility; hidden;\n}\n\n#fields .inherit {\n background-image: none;\n border: 0 none;\n box-shadow: none;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n padding: 0;\n text-align: inherit;\n text-transform: inherit;\n word-spacing: inherit;\n}\n\n#fields input.inherit:hover, #fields input.xHint:hover {\n background-color: $theme.highlightColor;\n}\n\n#fields input.xHint {\n color: $theme.textSecondaryColor;\n font-size: smaller;\n font-weight: normal;\n}\n\n#fields .labelLine label {\n display: inline-block;\n}\n\n#fields .toggle-switcher {\n cursor: pointer;\n}'),(-1529307941194505756,'description','Prefix to add before the name of the icon in the input field (default: \"image:icon:\")'),(-1523570908722735224,'async_context',''),(-1523570908722735224,'content','{{velocity}}{{html clean=\"false\"}} ## we need clean=\"false\" because we want to display the raw content of #submenuitem()\n#if ($hasSpaceAdmin && $isAdminAppInstalled)\n #template(\'menus_macros.vm\')\n #set ($adminspaceaction = $xwiki.getURL($spacePreferencesDocumentReference, \'admin\'))\n #if ($doc.documentReference.name == \'WebHome\')\n #set ($title = $services.localization.render(\'core.menu.admin.page\'))\n #else\n #set ($title = $services.localization.render(\'core.menu.admin.parent\'))\n #end\n #submenuitem($adminspaceaction $title \'tmAdminSpace\', \'\', \'wrench\')\n#end\n{{/html}}{{/velocity}}'),(-1523570908722735224,'parameters','separator=true\norder=10000'),(-1504419863914319187,'javamail_extra_props',''),(-1504419863914319187,'ldap_group_mapping',''),(-1462480840173898677,'code','.xdialog-box-my-modal-popup {\n width: 800px;\n}\n\n.actionBtn, #addStep {\n font-size: .8em;\n text-transform: uppercase;\n}\n\n.actionBtn {\n background: none no-repeat scroll 0 center transparent;\n display: block;\n padding: .3em .3em .3em 20px;\n float:right;\n}'),(-1444117045354284167,'code','.notification-top-panel-preferences {\n display: inline-block;\n width: 100%;\n}'),(-1424629336355106982,'description','Additional CSS classes to add to the top level HTML element of the tree.'),(-1409467660540448793,'code','/*This code should be removed when https://jira.xwiki.org/browse/TOUR-36 is fixed*/\n/* In some places, the bootstrap-tour generates some unwanted results(same color for icons and the background of their wrapper container) \n and for now this hack will solve it. However this should be fixed ASAP in our Tour Application.\n*/\n/*START Workaround for TOUR-36*/\n/*Get colors from the current Color Theme*/\n#set($currentTheme = $xwiki.getXWikiPreference(\'colorTheme\'))\n#set($currentThemeDoc = $xwiki.getDocument($currentTheme))\n\n#docextrapanes {\n background-color: $currentThemeDoc.getValue(\'xwiki-page-content-bg\');\n}\nul.tour-step-backdrop.tour-tour_95_Tour_46_HomepageTour_46_WebHome-element {\n background-color: $currentThemeDoc.getValue(\'navbar-default-bg\');\n}\n/*END*/'),(-1399526373704984913,'code','\'use strict\';\nrequire([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n $(\'ul.followed-users a.userstatus-follow\').click(function(event) {\n var button = $(this);\n var behavior = {\n onYes: function() {\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.saving\'))\", \'inprogress\');\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(url, {\n \'action\': \'unwatchUser\',\n \'csrf\': xm.form_token,\n \'userId\': button.attr(\'data-userid\')\n }).done(function() {\n button.parent(\'li\').remove();\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.done\'))\", \'done\');\n }).fail(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.error\'))\", \'error\');\n });\n }\n };\n var myInteractionParameters = {\n confirmationText: \"$escapetool.javascript($services.localization.render(\'user.profile.network.unfollow.question\'))\",\n yesButtonText: \"$escapetool.javascript($services.localization.render(\'user.profile.network.unfollow.question.yes\'))\",\n noButtonText: \"$escapetool.javascript($services.localization.render(\'user.profile.network.unfollow.question.no\'))\"\n };\n new XWiki.widgets.ConfirmationBox(behavior, myInteractionParameters);\n });\n});'),(-1346444023133223768,'lessCode','// Journal 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: #777; // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #EB6864;\n@brand-success: #22B24C;\n@brand-info: #369;\n@brand-warning: #F5E625;\n@brand-danger: #F57A00;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"News Cycle\", \"Arial Narrow Bold\", sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-sans-serif;\n@headings-font-weight: 700;\n@headings-line-height: 1.1;\n@headings-color: #000;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n//@icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-light;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 60px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #000;\n@navbar-default-bg: #fff;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #000;\n@navbar-default-link-hover-color: #000;\n@navbar-default-link-hover-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-active-color: #000;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: darken(@navbar-default-bg, 6.5%);\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #ccc;\n@navbar-default-toggle-border-color: #ddd;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 6.5%);\n@navbar-inverse-link-active-color: #fff;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 6.5%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: darken(@navbar-inverse-bg, 6.5%);\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: @gray-light;\n@pagination-active-bg: #f5f5f5;\n@pagination-active-border: #ddd;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #468847;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #3a87ad;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #c09853;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #b94a48;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @text-color;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @link-color;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Journal 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=News+Cycle:400,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n font-size: 18px;\n font-family: @font-family-sans-serif;\n font-weight: @headings-font-weight;\n\n &-default {\n\n .badge {\n background-color: #000;\n color: #fff;\n }\n }\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n}\n\n.navbar-brand {\n font-size: inherit;\n font-weight: @headings-font-weight;\n text-transform: uppercase;\n}\n\n// Buttons ====================================================================\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-danger;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-primary;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-primary;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-success;\n }\n}\n\n// Navs =======================================================================\n\n// Indicators =================================================================\n\n.badge {\n padding-bottom: 4px;\n vertical-align: 3px;\n font-size: 10px;\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.jumbotron {\n\n h1, h2, h3, h4, h5, h6 {\n font-family: @font-family-sans-serif;\n font-weight: @headings-font-weight;\n color: #000;\n }\n}\n\n.panel {\n\n &-primary,\n &-success,\n &-warning,\n &-danger,\n &-info {\n .panel-title {\n color: #fff;\n }\n }\n\n\n}'),(-1341655360853568738,'lessCode','// Cerulean 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #2FA4E7;\n@brand-success: #73A839;\n@brand-info: #033C73;\n@brand-warning: #DD5600;\n@brand-danger: #C71C22;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki alreeady overrides these variables \n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: #317EAC;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: @text-color;\n@btn-default-bg: #fff;\n@btn-default-border: rgba(0, 0, 0, 0.1);\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #ddd;\n@navbar-default-bg: @brand-primary;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-disabled-color: #ddd;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: none;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 10%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-info;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 5%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-active-color: #fff;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: none;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 5%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: @gray-light;\n@pagination-active-bg: #f5f5f5;\n@pagination-active-border: @pagination-hover-border;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #468847;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #3a87ad;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #c09853;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #b94a48;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @text-color;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @panel-default-border;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @panel-default-border;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @panel-default-border;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @panel-default-border;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @panel-default-border;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Cerulean 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n.btn-shadow(@color) {\n #gradient > .vertical-three-colors(lighten(@color, 8%), @color, 60%, darken(@color, 4%));\n filter: none;\n border-bottom: 1px solid darken(@color, 10%);\n}\n\n// Navbar =====================================================================\n\n.navbar {\n .btn-shadow(@navbar-default-bg);\n filter: none;\n .box-shadow(0 1px 10px rgba(0, 0, 0, 0.1));\n\n &-default {\n\n .badge {\n background-color: #fff;\n color: @navbar-default-bg;\n }\n }\n\n &-inverse {\n #gradient > .vertical-three-colors(lighten(@navbar-inverse-bg, 8%), lighten(@navbar-inverse-bg, 4%), 60%, darken(@navbar-inverse-bg, 2%));\n filter: none;\n border-bottom: 1px solid darken(@navbar-inverse-bg, 10%);\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n\n .navbar-nav > li > a,\n &-brand {\n text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n }\n}\n\n@media (max-width: @grid-float-breakpoint-max) {\n\n .navbar {\n\n .dropdown-header {\n color: #fff;\n }\n\n .dropdown-menu {\n a {\n color: #fff;\n }\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n\n text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n\n .caret {\n border-top-color: #fff;\n }\n}\n\n.btn-default {\n \n .btn-shadow(@btn-default-bg);\n\n &:hover {\n color: @btn-default-color;\n }\n\n .caret {\n border-top-color: @text-color;\n }\n}\n\n.btn-default {\n .btn-shadow(@btn-default-bg);\n}\n\n.btn-primary {\n .btn-shadow(@btn-primary-bg);\n}\n\n.btn-success {\n .btn-shadow(@btn-success-bg);\n}\n\n.btn-info {\n .btn-shadow(@btn-info-bg);\n}\n\n.btn-warning {\n .btn-shadow(@btn-warning-bg);\n}\n\n.btn-danger {\n .btn-shadow(@btn-danger-bg);\n}\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\n// Navs =======================================================================\n\n// Indicators =================================================================\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.panel-primary,\n.panel-success,\n.panel-warning,\n.panel-danger,\n.panel-info {\n\n .panel-heading,\n .panel-title {\n color: #fff;\n }\n}\n'),(-1322500439400277717,'groups',''),(-1322500439400277717,'users','xwiki:XWiki.Admin'),(-1311799010704417478,'code','#template(\'colorThemeInit.vm\')\n\n#contentmenu, #hierarchy, #document-info, #xdocFooter {\n display: none;\n}\n\n#label_set_as_template, #set_as_template {\n display: inline;\n text-transform: none;\n}\n\n.whatnext {\n margin: 1em;\n}\n\n## Flavor/Template section\n#if (!$services.distribution.hasWikiDefaultUIExtension())\n\n.flavor_template {\n margin-top: 10px;\n}\n\n.xwiki-createwiki-tabs{\n padding-left: 0;\n list-style-type: none;\n}\n\n.xwiki-createwiki-tabs li {\n float: left;\n display: block;\n width: 50%;\n text-align: center;\n padding: 1em;\n border: 1px solid $theme.borderColor;\n}\n\n.xwiki-createwiki-tabs-content {\n border: 1px solid $theme.borderColor;\n border-top: 0;\n clear: both;\n padding: 5px;\n}\n\n.xwiki-createwiki-flavor-picker .xwiki-flavor-picker-results-container{\n height: 220px;\n margin-bottom: 5px;\n}\n\n#end\n'),(-1301678904011064213,'code','// Make sure the XWiki \'namespace\' and the ModalPopup class exist.\nif(typeof(XWiki) == \'undefined\' || typeof(XWiki.widgets) == \'undefined\' || typeof(XWiki.widgets.ModalPopup) == \'undefined\') {\n if (typeof console != \'undefined\' && typeof console.warn == \'function\') {\n console.warn(\'[MessageBox widget] Required class missing: XWiki.widgets.ModalPopup\');\n }\n} else {\n XWiki.widgets.StepPopup = Class.create(XWiki.widgets.ModalPopup, {\n // Default parameters can be added to the custom class.\n defaultInteractionParameters : {\n },\n // Constructor. Registers the key listener that pops up the dialog.\n initialize : function($super, interactionParameters) {\n this.interactionParameters = Object.extend(Object.clone(this.defaultInteractionParameters), interactionParameters || {});\n // call constructor from ModalPopup with params content, shortcuts, options\n $super(\n this.createContent(this.interactionParameters),\n {\n \'show\' : { method : this.showDialog, keys : [] },\n \'close\' : { method : this.closeDialog, keys : [\'Esc\'] }\n },\n {\n displayCloseButton : true, \n verticalPosition : \'top\',\n backgroundColor : \'#FFF\'\n }\n );\n this.showDialog();\n this.setClass(\'my-modal-popup\');\n },\n // Get the content of the modal dialog using ajax\n createContent : function (data) {\n var content = new Element(\'div\', {\'class\': \'modal-popup\'});\n // get page content for the pageURL\n new Ajax.Request(data.pageURL,\n {\n method:\'get\',\n onSuccess: function(transport){\n var response = transport.responseText || \'no response text\';\n content.insert(response);\n },\n onFailure: function() { content.insert(\'Something went wrong...\'); \n }\n });\n return content;\n }\n });\n} // if the parent widget is defined'),(-1238256228475208864,'groups','XWiki.XWikiAdminGroup'),(-1238256228475208864,'users',''),(-1228638631782144431,'groups','XWiki.XWikiAdminGroup'),(-1228638631782144431,'users',''),(-1227989959799315072,'html','<p>Bonjour ${recipientName},</p>\n\n<p><strong>${xwiki.getUserName($xcontext.user)}</strong> a pensé que vous pourriez être intéressé par le document <a href=\"${doc.getExternalURL()}\">$!{escapetool.xml(${doc.displayTitle})}</a> sur <a href=\"${xwiki.getDocument($services.model.resolveDocument(\'\', \'default\', $doc.documentReference.extractReference(\'WIKI\'))).getExternalURL()}\">${request.getServerName()}</a>.</p>\n\n#if (\"$!{message}\" != \'\')\n<p>Voici son message :</p>\n\n<pre style=\"border: 1px solid #000; padding: 10px; font-size: 130%;\">\n$!{escapetool.xml($message)}\n</pre>\n#end\n\n<p>Pour consulter le document, cliquez sur ce lien <a href=\"${doc.getExternalURL()}\">${doc.getExternalURL()}</a> (ou faites un copier / coller dans votre navigateur).</p>\n\n#if ($services.watchlist)\n<p>De plus, vous pouvez <a href=\"${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\">ajouter ce document à votre favoris</a> pour être informé chaque fois que quelqu\'un le modifie.</p>\n#end\n\n#if ($display == \'inline\')\n\n<p>Voici le contenu du document :</p>\n\n<h1>${doc.displayTitle}</h1>\n<div style=\"border: 1px solid #000; padding: 10px;\">\n\n $doc.getRenderedContent()\n</div>\n\n#end\n\n<hr />\n<p>Ce message a été généré par XWiki depuis ${request.serverName} au nom de ${xwiki.getUserName($xcontext.user)}.</p>'),(-1227989959799315072,'text','Bonjour ${recipientName},\n\n${xwiki.getUserName($xcontext.user, false)} a pensé que vous pourriez être intéressé par le document \"$!{escapetool.xml(${doc.displayTitle})}\" (${doc.getExternalURL()}) sur ${request.getServerName()}.\n\n#if (\"$!{message}\" != \'\')\nVoici son message :\n\n-----------------------------------------------------\n$!{escapetool.xml($message)}\n-----------------------------------------------------\n#end\n\nPour consulter le document, cliquez sur ce lien ${doc.getExternalURL()} (ou faites un copier / coller dans votre navigateur).\n\n#if ($services.watchlist)\nDe plus, vous pouvez ajouter ce document à votre favoris pour être informé chaque fois que quelqu\'un le modifie. Pour faire ça, ouvrez le lien suivant dans votre navigateur : ${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\n#end\n\n#if ($display == \'inline\')\n\nVoici le contenu du document :\n\n-----------------------------------------------------\n$doc.getRenderedContent()\n\n#end\n\n-----------------------------------------------------\nCe message a été généré par XWiki depuis ${request.serverName} au nom de ${xwiki.getUserName($xcontext.user, false)}.'),(-1159749759499796768,'async_context',''),(-1159749759499796768,'content',''),(-1159749759499796768,'parameters','tip=$services.localization.render(\'help.tipsPanel.linkAutocompleteWYSIWYGTip\')'),(-1145518572270704199,'code','#template(\'colorThemeInit.vm\')\n#inline .hList {\n font-size: 90%;\n list-style: none outside none;\n margin: 0;\n padding: 0;\n}\n\n#inline .hList li {\n border: 1px solid $theme.borderColor;\n cursor: move;\n display: inline-block;\n margin: 0 0.2em 0.2em 0;\n padding: 0.1em 0.6em;\n}\n\n#inline .hList li:hover {\n background-color: $theme.highlightColor;\n}\n\n#inline .hList li .delete {\n color: $theme.pageContentBackgroundColor;\n cursor: pointer;\n font-size: 70%;\n font-weight: bold;\n position: absolute;\n text-decoration: none !important;\n vertical-align: super;\n}\n\n#inline .hList li:hover .delete {\n color: $theme.textPrimaryColor;\n}\n\n#inline .hList li .delete:hover {\n color: $theme.notificationErrorColor;\n}\n\n#inline .hList li.deprecated {\n border: 1px solid $theme.notificationWarningColor;\n}\n\n#inline .hList li.classField {\n font-weight: bolder;\n}\n\n.columnPicker {\n margin-bottom: .3em;\n}\n\n.columnPicker select {\n width: auto;\n}\n\n.columnPicker a.addColumn {\n margin: 0 .5em;\n padding: 0;\n}\n\n.form-body {\n margin-right: 19em;\n}\n\n.wizard-help {\n background-color: $theme.backgroundSecondaryColor;\n border-bottom: 1px solid $theme.borderColor;\n color: $theme.textSecondaryColor;\n float: right;\n font-size: 0.857em;\n margin: 0 0 2em 2em;\n padding: 1em;\n width: 17em;\n}\n\n.wizard-help dl, .wizard-help p {\n font-size: 0.9em;\n}\n\n.wizard-help dl {\n margin-left: 1em;\n}\n\n.wizard-help dt, .wizard-help strong {\n color: $theme.textColor;\n}\n\n/* Fix WYSIWYG Editor display. */\n#inline .xToolbar div.clearfloats {\n clear: left;\n}'),(-1117586213627746355,'code','require([\'jquery\', \'xwiki-events-bridge\'], function($) {\n var enhanceSearchResultHighlights = function() {\n var highlights = $(this).removeClass(\'hidden\').parent().prev(\'.search-result-highlights\').addClass(\'preview\');\n\n // Workaround for IE8 which doesn\'t support :first-of-type CSS selector.\n highlights.find(\'.search-result-highlight\').first().addClass(\'first\').parent(\'dd\').addClass(\'first\')\n .prev(\'dt\').addClass(\'first\');\n\n $(this).one(\'click\', function(event) {\n event.preventDefault();\n $(event.target).remove();\n highlights.removeClass(\'preview\');\n });\n };\n\n var collapseAllFacets = function(event) {\n event.preventDefault();\n $(event.target).closest(\'.search-facets\').find(\'.search-facet\').removeClass(\'expanded\');\n $(event.target).hide().parent().children(\'.search-facets-action-expandAll\').show();\n };\n\n var expandAllFacets = function(event) {\n event.preventDefault();\n $(event.target).closest(\'.search-facets\').find(\'.search-facet\').addClass(\'expanded\');\n $(event.target).hide().parent().children(\'.search-facets-action-collapseAll\').show();\n };\n\n var updateExpandCollapseAllFacetsState = function(facetsContainer) {\n var facetCount = facetsContainer.find(\'.search-facet\').size();\n var expandedFacetCount = facetsContainer.find(\'.search-facet.expanded\').size();\n if (expandedFacetCount > facetCount / 2) {\n facetsContainer.find(\'.search-facets-action-collapseAll\').show()\n .parent().children(\'.search-facets-action-expandAll\').hide();\n } else {\n facetsContainer.find(\'.search-facets-action-expandAll\').show()\n .parent().children(\'.search-facets-action-collapseAll\').hide();\n }\n };\n\n var addFacetValueCheckbox = function() {\n var checkBox = $(document.createElement(\'input\')).attr(\'type\', \'checkbox\');\n checkBox.prop(\'checked\', $(this).hasClass(\'selected\'));\n // Add the \'checked\' attribute so that it can be easily located with CSS.\n checkBox.prop(\'checked\') && checkBox.attr(\'checked\', \'checked\');\n checkBox.click($.proxy(this, \'click\'));\n // Remove the \'selected\' class because the selected state is marked using the check box.\n $(this).removeClass(\'selected\').before(checkBox);\n };\n\n var enhanceSearchFacets = function() {\n var facetsContainer = $(this);\n\n // Add the ability to collapse the facets pane on extra small screens (phones).\n facetsContainer.find(\'.search-facets-header\').click(function() {\n facetsContainer.toggleClass(\'collapsed-xs\');\n });\n\n // Global Expand/Collapse toggle.\n facetsContainer.find(\'.search-facets-action-collapseAll\').removeClass(\'hidden\').click(collapseAllFacets);\n facetsContainer.find(\'.search-facets-action-expandAll\').removeClass(\'hidden\').click(expandAllFacets);\n updateExpandCollapseAllFacetsState(facetsContainer);\n\n // Expand/Collapse toggle for each facet.\n facetsContainer.find(\'.search-facet-header\').click(function(event) {\n $(event.target).parent(\'.search-facet\').toggleClass(\'expanded\');\n updateExpandCollapseAllFacetsState(facetsContainer);\n });\n\n // Add a check box before each facet value. We do this from JavaScript because the behaviour of a check box inside\n // a link is not consistent across different browsers (some follow the link when the check box is clicked, others\n // don\'t) and having the check box outside the facet value link requires JavaScript to synchronize them.\n facetsContainer.find(\'.search-facet-body a.itemName\').each(addFacetValueCheckbox);\n };\n\n var getQueryString = function(url) {\n var queryIndex = url.indexOf(\'?\');\n return queryIndex < 0 ? \'\' : url.substr(queryIndex + 1);\n };\n\n var getSearchUIState = function() {\n var expandedFacets = [];\n $(\'.search-facet.expanded\').each(function() {\n expandedFacets.push($(this).attr(\'data-name\'));\n });\n return {\n \'expandedFacets\': expandedFacets\n };\n };\n\n var setSearchUIState = function(state) {\n state = state || {};\n var expandedFacets = state.expandedFacets || [];\n $(\'.search-facet\').not(\'.expanded\').each(function() {\n if (expandedFacets.indexOf($(this).attr(\'data-name\')) >= 0) {\n $(this).addClass(\'expanded\');\n }\n });\n };\n\n var updateSearchUI = function(html) {\n $(\'.search-ui\').replaceWith(html);\n enhanceSearchUI();\n $(document).trigger(\'xwiki:dom:updated\', {\'elements\': $(\'.search-ui\').toArray()});\n };\n\n var searchRequest = null;\n\n var pushSearchUIState = function(viewURL) {\n // If there is a request in progress, abort it to prevent its callback from being called.\n searchRequest && searchRequest.abort();\n $(\'.search-ui\').attr(\'aria-busy\', true);\n var getURL = XWiki.currentDocument.getURL(\'get\', getQueryString(viewURL));\n searchRequest = $.get(getURL).done(function(html) {\n var state = getSearchUIState();\n updateSearchUI(html);\n setSearchUIState(state);\n window.history.replaceState && window.history.replaceState(state, document.title);\n // Make sure the browser address bar reflects the new state (and thus the new state can be bookmarked).\n window.history.pushState && window.history.pushState(state, document.title, viewURL);\n });\n };\n\n var reloadSearchUI = function(event) {\n event.preventDefault();\n var anchor = $(event.target).closest(\'a\');\n anchor.size() > 0 && $(document).trigger(\'xwiki:search:update\', anchor.attr(\'href\'));\n };\n\n // Others (e.g. a custom facet) can trigger a search UI update by firing this event.\n $(document).on(\'xwiki:search:update\', function(event, viewURL) {\n pushSearchUIState(viewURL);\n });\n\n $(window).on(\'popstate\', function(event) {\n // If there is a request in progress, abort it to prevent its callback from being called.\n searchRequest && searchRequest.abort();\n $(\'.search-ui\').attr(\'aria-busy\', true);\n var state = event.originalEvent.state;\n var getURL = XWiki.currentDocument.getURL(\'get\', window.location.search.substr(1));\n searchRequest = $.get(getURL).done(function(html) {\n updateSearchUI(html);\n setSearchUIState(state);\n });\n });\n\n // Move the skin extension imports brought by AJAX updates to the head of the page.\n $(document).on(\'xwiki:dom:updated\', function(event, data) {\n // We want to move only the new imports. For this we need to collect the existing imports (once).\n var imports;\n // We don\'t add the imports directly to the document because jQuery will fetch the JavaScript files, including the\n // ones that have been already loaded. We append the imports to a detached element and add to the head of the page\n // only those that are new. See https://api.jquery.com/jQuery.getScript/#caching-requests .\n $(document.createElement(\'div\')).append($(data.elements).find(\'noscript.skin-extension-imports\').text())\n .find(\'link, script\').each(function() {\n // Collect the existing imports once.\n imports = imports || $(\'head\').find(\'link, script\').map(function () {\n return $(this).attr(\'href\') || $(this).attr(\'src\');\n }).get();\n var url = $(this).attr(\'href\') || $(this).attr(\'src\');\n // Move to the head of the page only the new imports.\n if (url && imports.indexOf(url) < 0) {\n $(\'head\').append(this);\n }\n });\n // Make sure this code is not executed twice.\n $(data.elements).find(\'noscript.skin-extension-imports\').remove();\n });\n\n var enhanceSearchUI = function() {\n $(\'.search-result-highlightAll\').each(enhanceSearchResultHighlights);\n $(\'.search-facets\').each(enhanceSearchFacets);\n $([\n \'.search-results-sort a.sort-item\',\n \'.search-options a.options-item\',\n \'.pagination a\',\n \'.controlPagination a\',\n \'a.search-facets-action-reset\',\n \'.search-facet a.itemName\',\n \'.search-facet-body a.more\',\n \'.search-facet-body .selectedLocation a\'\n ].join(\',\')).click(reloadSearchUI);\n };\n\n enhanceSearchUI();\n});'),(-1110678681262197463,'description','If you have limited horizontal space available then you should probably set this to true. The effect is that the node icons and the edges that connect them will be hidden. Some special styles will also be applied to ensure the tree takes less horizontal space while keeping the node labels fully visible.'),(-1075613914677955890,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.header.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.header.contentB\', [\" $services.icon.render(\'menu\') \"])\n{{/velocity}}'),(-1063205143854629421,'lessCode',''),(-1038481214395789088,'javamail_extra_props',''),(-1038481214395789088,'messageBodyTemplate','{{velocity}}\n#set($discard = \"#template(\'colorThemeInit.vm\')\")\n#if(\"$!theme\" == \"\")\n #set($theme = {\"linkColor\":\"#4791BC\"})\n#end\n#set($userName = $xwiki.getUserName($xcontext.getUser(), false))\n#set($wikiName = $xwiki.getRequestURL().replaceAll(\"http://([^/:]*).*$\", \"$1\"))\n#set($guestActionsURL = $xwiki.getDocumentAsAuthor($config.get(\"guestsActionsPage\")).getExternalURL())\n#set($linkStyle = \"color:$theme.get(\'linkColor\');text-decoration:none;\")\n#set($bigText = \"font-size:130%;\")\n#set($joinLink = \"float:left;\")\n#set($declineLink = \"color:#f88;float:right;text-decoration:none;\")\n\n$services.localization.render(\'xe.invitation.emailContent.userHasInvitedYouToJoinWiki\', [$userName, $wikiName])\n\n{{html clean=false}}\n#if(\"$!messageBody\" != \"\")\n <p style=\"$bigText\">\n $!escapetool.xml($!messageBody)\n </p>\n#end\n<p style=\"margin-top:30px\">\n<a href=\"${guestActionsURL}?doAction_accept=y&messageID=$messageID\" style=\"$bigText$joinLink$linkStyle\">\n$services.localization.render(\'xe.invitation.emailContent.joinLink\')\n</a>\n<a href=\"${guestActionsURL}?doAction_decline=y&messageID=$messageID\" style=\"$bigText$declineLink\">\n $services.localization.render(\'xe.invitation.emailContent.declineLink\')\n</a></p>\n<hr style=\"clear:both\" />\n$services.localization.render(\'xe.invitation.emailContent.reportMessage\', [\"<a href=$escapetool.getQ()${guestActionsURL}?doAction_report=y&messageID=$messageID$escapetool.getQ() style=$escapetool.getQ()$linkStyle$escapetool.getQ()>\", \"</a>\"])\n{{/html}}\n{{/velocity}}'),(-1038481214395789088,'messageBodyTemplatePlain','{{velocity}}\n#set($userName = $xwiki.getUserName($xcontext.getUser(), false))#set($wikiName = $xwiki.getRequestURL().replaceAll(\"https?://([^/:]*).*$\", \"$1\"))#set($guestActionsURL = $xwiki.getDocumentAsAuthor($config.get(\'guestsActionsPage\')).getExternalURL())$services.localization.render(\'xe.invitation.emailContent.userHasInvitedYouToJoinWiki\', [$userName, $wikiName])#if(\"$!messageBody\" != \'\') $messageBody#end$services.localization.render(\'xe.invitation.emailContent.joinLink\')${guestActionsURL}?doAction_accept=y&messageID=$messageID$services.localization.render(\'xe.invitation.emailContent.declineLink\')${guestActionsURL}?doAction_decline=y&messageID=$messageID$services.localization.render(\'xe.invitation.emailContent.reportMessage\', [\'\', \"$util.getNewline()${guestActionsURL}?doAction_decline=y&messageID=$messageID\"]){{/velocity}}'),(-1021032347706246727,'code','require([\'jquery\'], function($) {\n var maybeEnhanceCustomDateInterval = function() {\n // Hide the custom date interval form by default.\n var form = $(this).find(\'form\').hide();\n\n // Toggle the form when the user selects the corresponding option. We pass null to prevent animation.\n $(this).find(\'.itemName\').prev(\'input[type=\"checkbox\"]\').removeClass(\'hidden\').click($.proxy(form, \'toggle\', null));\n\n // Use the client TimeZone when searching and displaying dates on the server.\n // Note that we change the sign because Date#getTimezoneOffset() returns (UTC - local time)\n // and we need (local time - UTC) on the server.\n form.find(\'input[name=\"timezoneOffset\"]\').val(-new Date().getTimezoneOffset());\n };\n\n var enhanceDateFacets = function(elements) {\n $(elements).find(\'.search-facet .customDateInterval\').each(maybeEnhanceCustomDateInterval);\n };\n\n $(document).on(\'xwiki:dom:updated\', function(event, data) {\n enhanceDateFacets(data.elements);\n });\n\n enhanceDateFacets(document.body);\n});'),(-985610485491392405,'code','define(\'XWikiNotificationsMacro\', [\'jquery\', \'xwiki-meta\'], function($, xm) {\n /**\n * Construct a XWikiNotificationsMacro.\n *\n * Except the first one, all the parameters are optional in the constructor. If they are not provided, the macro will\n * load them from the DOM element, where they should be present with the \"data-\" attributes.\n *\n * @param macro DOM element that will be uses as container for the notifications.\n * @param userId (optional) full serialization of the current user for who we are loading the notifications-macro\n * @param count (optional) maximum number of notifications to load for each batch\n * @param displayReadStatus (optional) either or not to display if the notifications have been read or notifications\n * @param blackList (optional) the list of the ids of events that have already been displayed and that we don\'t want\n to get again in next batches.\n * @param useUserPreferences (optional) either or not to use the preferences of the user instead of handling the\n * following parameters\n * @param displayOwnEvents (optional) either or not to display the events of the current user\n * @param displayMinorEvents (optional) either or not to display minor update events on documents\n * @param displaySystemEvents (optional) either or not to display events triggered by the system\n * @param displayReadEvents (optional) either or not to display events that have been marked as read by the user\n * @param wikis (optional) list of wikis, comma-separated, to include in the notifications\n * @param spaces (optional) list of spaces, comma-separated, to include in the notifications\n * @param pages (optional) list of pages, comma-separated, to include in the notifications\n * @param users (optional) list of users, comma-separated, to include in the notifications (and only them)\n * @param tags (optional) list of tags, comma-separated, to include in the notifications (and only them)\n */\n return function(macro, userId, count, displayReadStatus, blackList, useUserPreferences,\n displayOwnEvents, displayMinorEvents, displaySystemEvents, displayReadEvents, wikis, spaces, pages, users, tags) {\n var self = this;\n self.macro = $(macro);\n self.userId = userId ? userId : self.macro.attr(\'data-userId\');\n self.notificationsLimit = count ? count : self.macro.attr(\'data-count\');\n self.displayReadStatus = displayReadStatus != undefined\n ? displayReadStatus : self.macro.attr(\'data-displayReadStatus\').toLowerCase() == \'true\' && self.userId != \'\';\n self.blackList = blackList ? blackList : [];\n self.useUserPreferences = useUserPreferences != undefined\n ? useUserPreferences : self.macro.attr(\'data-useuserpreferences\');\n self.displayOwnEvents = displayOwnEvents != undefined ? displayOwnEvents : self.macro.attr(\'data-displayOwnEvents\');\n self.displayMinorEvents = displayMinorEvents != undefined ? displayMinorEvents\n : self.macro.attr(\'data-displayMinorEvents\');\n self.displaySystemEvents = displaySystemEvents != undefined ? displaySystemEvents\n : self.macro.attr(\'data-displaySystemEvents\');\n self.displayReadEvents = displayReadEvents != undefined ? displayReadEvents\n : self.macro.attr(\'data-displayReadEvents\');\n self.wikis = wikis != undefined ? wikis : self.macro.attr(\'data-wikis\');\n self.spaces = spaces != undefined ? spaces : self.macro.attr(\'data-spaces\');\n self.pages = pages != undefined ? pages : self.macro.attr(\'data-pages\');\n self.users = users != undefined ? users : self.macro.attr(\'data-users\');\n self.tags = tags != undefined ? tags : self.macro.attr(\'data-tags\');\n\n /**\n * Function that load notifications.\n *\n * The parameter `untilDate` is used as an \"offset\" to get events in a paginate mode.\n * We cannot rely on an integer offset because new events could have been stored recently and we want to display\n * older ones only.\n */\n self.load = function(untilDate) {\n var params = {\n \'userId\': self.userId,\n \'useUserPreferences\': self.useUserPreferences,\n \'count\': self.notificationsLimit,\n \'displayOwnEvents\': self.displayOwnEvents,\n \'displayMinorEvents\': self.displayMinorEvents,\n \'displaySystemEvents\': self.displaySystemEvents,\n \'displayReadEvents\': self.displayReadEvents,\n \'wikis\': self.wikis,\n \'spaces\': self.spaces,\n \'pages\': self.pages,\n \'users\': self.users,\n \'displayReadStatus\': self.displayReadStatus,\n \'tags\': self.tags,\n \'currentWiki\': xm.documentReference.extractReferenceValue(XWiki.EntityType.WIKI),\n \'async\': true\n };\n if (untilDate) {\n params.untilDate = untilDate;\n params.blackList = self.blackList.join(\',\');\n }\n var promise = $.Deferred();\n self.doLoad(params, untilDate, promise);\n return promise;\n };\n \n self.doLoad = function(params, untilDate, promise) {\n var restURL = \'$!{escapetool.javascript($request.contextPath)}/rest/notifications?media=json\';\n $.ajax(restURL, {cache: false, data: params, method: \'POST\'}).done(function (data, textStatus, jqXHR) {\n switch (jqXHR.status) {\n case 200:\n // 200 means that the search is done, we displayer the received notifications\n self.showNotifications(data, untilDate, promise);\n break;\n case 202:\n // 202 means that the background search is still running, we wait 1 second and ask again if it\'s done this time\n params.asyncId = data.asyncId\n setTimeout(self.doLoad, 1000, params, untilDate, promise);\n break;\n }\n }).fail(function () {\n self.displayNoNotification();\n });\n };\n \n self.showNotifications = function(data, untilDate, promise) {\n // Display the \"nothing!\" message if there is no notification\n if (data.notifications.length == 0 && !untilDate) {\n self.displayNoNotification();\n }\n // Display each entry\n for (var i = 0; i < data.notifications.length; ++i) {\n self.displayEntry(data.notifications[i]);\n }\n self.macro.find(\'.notifications-macro-load-more\').remove();\n // If there is other notifications to load\n if (data.notifications.length == self.notificationsLimit) {\n var loadMore = $(\'<div>\').addClass(\'text-center\').addClass(\'notifications-macro-load-more\');\n var btn = $(\'<button>\');\n btn.text(\"$escapetool.javascript($services.localization.render(\'notifications.menu.more\'))\");\n btn.addClass(\'btn\').addClass(\'btn-default\').addClass(\'btn-block\');\n loadMore.append(btn);\n self.insertElementInMacroContainer(loadMore);\n btn.click(function(event) {\n loadMore.text(\'\').addClass(\'loading\').css(\'height\', \'50px\');\n // We use the date of the last displayed event as an offset to display those that come next\n var lastCompositeEvent = data.notifications[data.notifications.length - 1];\n var lastEventDate = lastCompositeEvent.dates[lastCompositeEvent.dates.length - 1];\n self.load(lastEventDate);\n });\n }\n // Remove loading items\n self.macro.removeClass(\'loading\');\n // Call the listeners\n promise.resolve(data.notifications);\n };\n \n /**\n * Add the given DOM element into the macro container (could be before the RSS link if there is one).\n */\n self.insertElementInMacroContainer = function (domToInsert) {\n var rssLink = self.macro.find(\'.notifications-macro-rss-link\');\n if (rssLink.length > 0) {\n domToInsert.insertBefore(rssLink);\n } else {\n self.macro.append(domToInsert);\n }\n };\n\n /**\n * Display a notification entry\n */\n self.displayEntry = function (entry) {\n // Add the id of the entry to the blacklist\n for (var i = 0; i < entry.ids.length; ++i) {\n self.blackList.push(entry.ids[i]);\n }\n // Create the container\n var notif = $(\'<div>\').addClass(\'notification-event\');\n notif.attr(\'data-eventtype\', entry.type);\n // Put the content\n notif.append(entry.html);\n // Create the \"read\" button\n var readButton = $(\'<button>\');\n if (!entry.read && self.displayReadStatus) {\n notif.addClass(\'notification-event-unread\');\n // Add the \"mark as read\" button\n notif.find(\'.notification-content\').prepend(readButton);\n }\n if (entry.exception) {\n var exceptionBox = $(\'<div>\').addClass(\'box errormessage\');\n exceptionBox.text(entry.exception);\n notif.append(exceptionBox);\n }\n // Store the data in the DOM element so that any javascript code can retrieve it\n notif.data(\'notif\', entry);\n // Add the notification entry\n self.insertElementInMacroContainer(notif);\n // Add the \"mark as read\" button if the notif is not already read\n if (!entry.read) {\n // Style the read button\n readButton.addClass(\'notification-event-read-button\').addClass(\'btn btn-xs\');\n // Insert the cross icon\n readButton.html(\'$services.icon.renderHTML(\"check\")\');\n // On click\n readButton.click(function() {\n var notif = $(this).parents(\'div.notification-event\');\n notif.removeClass(\'notification-event-unread\');\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\',\n XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(url, {\n action: \'read\',\n eventIds: notif.data(\'notif\').ids.join(\',\'),\n read: true\n });\n $(this).remove();\n self.macro.trigger(\'eventMarkedAsRead\', notif);\n });\n }\n // Details\n var details = notif.find(\'.notification-event-details\');\n details.hide();\n var arrow = notif.find(\'.notification-event-arrow\');\n notif.find(\'.toggle-notification-event-details\').click(function() {\n details.toggle();\n arrow.text(arrow.text() == \'â–¸\' ? \'â–¾\' : \'â–¸\');\n });\n };\n\n /**\n * Display a message saying there is no content\n */\n self.displayNoNotification = function () {\n self.macro.removeClass(\'loading\').html($(\'<p>\').addClass(\'text-center noitems\')\n .text(\"$escapetool.javascript($services.localization.render(\'notifications.menu.nothing\'))\"));\n };\n };\n});\n'),(-961982407856130685,'description','Whether to show the document objects or not.'),(-961247130575313556,'code','\'use strict\';\n/**\n * Start the requirejs config.\n */\nrequire.config({\n paths: {\n \'bootstrap-switch\': \'$services.webjars.url(\'bootstrap-switch\', \'js/bootstrap-switch.min\')\'\n },\n shim: {\n \'bootstrap-switch\' : [\'jquery\']\n }\n});\n/**\n * Start the real script.\n */\nrequire([\'jquery\', \'xwiki-meta\', \'ApplicationWidget\', \'bootstrap\', \'bootstrap-switch\', \'xwiki-events-bridge\'], function ($, xm, ApplicationWidget) {\n\n /**\n * Page initialization\n */\n $(document).ready(function() {\n\n var applications = [];\n\n // Create application widgets\n $(\'.applicationElem\').each(function() {\n applications.push(new ApplicationWidget($(this)));\n });\n\n /**\n * Save the current settings\n */\n var save = function() {\n // To avoid having several requests in the same time (which could lead to error 500), we disable all the triggers during the save process\n var toggles = $(\'.bootstrap-switch input\');\n toggles.bootstrapSwitch(\'disabled\', true);\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n var data = [];\n for (var i = 0; i < applications.length; ++i) {\n for (var j = 0; j < applications[i].eventTypes.length; j++) {\n data.push({\n eventType: applications[i].eventTypes[j].eventType,\n format: \'alert\',\n enabled: applications[i].eventTypes[j].getAlertState()\n });\n // Email might be disabled, so we don\'t send info about the email settings if the corresponding buttons are not there\n if ($(\'.notificationTypeCell[data-format=\"email\"]\').length > 0) {\n data.push({\n eventType: applications[i].eventTypes[j].eventType,\n format: \'email\',\n enabled: applications[i].eventTypes[j].getEmailState()\n });\n }\n }\n }\n var url = \"$xwiki.getURL(\'XWiki.Notifications.Code.NotificationPreferenceService\', \'get\', \'outputSyntax=plain\')\";\n $.post(url, {\n action: \'savePreferences\',\n target: $(\'.notifPreferences\').attr(\'data-target\'),\n json: JSON.stringify(data)\n }).done(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n }).error(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.savingfailed\'))\", \'error\');\n }).always(function() {\n // Enable again the triggers\n toggles.bootstrapSwitch(\'disabled\', false);\n });\n };\n\n /**\n * Several changes can be received very closely (for example, when several switches are updated in the same time),\n * so we save only the last received event.\n * For that we postpone the save action (300ms is clone enought for the user) and we cancel it if an other event\n * happens in the meantime.\n */\n var nextSave = 0;\n $($(\'.notifPreferences\')).on(\'switchChange.bootstrapSwitch\', function(event, state) {\n if (nextSave != 0) {\n clearTimeout(nextSave);\n }\n nextSave = setTimeout(save, 300);\n });\n\n // Disable the \"loading\" screens\n $(\'td.notificationTypeCell, td.notificationAppCell\').each(function(){\n $(this).find(\'.hidden\').removeClass(\'hidden\');\n $(this).removeClass(\'loading\');\n });\n\n /**\n * Disable the \"loading\" screens\n */\n $(\'td.notificationTypeCell\').each(function(){\n $(this).find(\'> div.hidden\').removeClass(\'hidden\');\n $(this).removeClass(\'loading\');\n });\n\n });\n});\n'),(-914734144516847954,'groups',''),(-914734144516847954,'users',''),(-907138755454420108,'description','Whether to show activity RSS link or not.'),(-892880999687888266,'code','#template(\"colorThemeInit.vm\")\n#set($tabswidth = \"130px\")\n/* ----- User menu ----- */\n#user-menu-col{\n float: left;\n width: 13em;\n}\n\n#avatar p {\n text-align: center;\n}\n\n#avatar img {\n border: 1px solid $theme.borderColor;\n border-radius: 5px 5px 5px 5px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n margin: 0 auto;\n padding: 0.3em;\n width: 95%;\n}\n\n.profile-menu .category-tab:before{\n float: left;\n margin: 5px 0 0 5px;\n}\n\n.profile-menu .user-menu-profile:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/vcard.png\')\");\n}\n\n.profile-menu .user-menu-preferences:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/wrench.png\')\");\n}\n\n.profile-menu .user-menu-watchlist:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/star.png\')\");\n}\n\n.profile-menu .user-menu-network:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/group.png\')\");\n}\n\n.profile-menu .user-menu-dashboard:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/application_view_tile.png\')\");\n}\n\n.profile-menu .user-menu-wikis:before{\n content: url(\"$xwiki.getSkinFile(\'icons/silk/chart_organisation.png\')\");\n}\n\n.skin-colibri .profile-menu .group.user-menu-title{\n #set ($menuIcon = \"url(${escapetool.S}$xwiki.getSkinFile(\'icons/silk/user.png\')${escapetool.S})\")\n #css3_backgroundIconAndLinearGradient($menuIcon, {\n \'to\': \'bottom\',\n \'colors\': [\n {\'color\':$theme.menuContentGradientColor, \'position\': \'0%\'},\n {\'color\':$theme.menuContentBackgroundColor, \'position\': \'100%\'}\n ]\n }) \n}\n\n.profile-menu .group, .profile-menu .group:hover {\n background-position: 7px 50%,top center;\n}\n\n.user-menu-title a:hover{\n color: $theme.panelHeaderTextColor !important;\n}\n\n/* ----- Page content ---- */\n#user-page-content{\n margin-left: 14em;\n}\n\n.column h1 {\n font-weight:bold;\n font-size:115%;\n margin:10px 0;\n}\n\n.column h2 {\n font-size: 110%;\n}\n\n/* For columns that don\'t adapt well to limited width. */\n.column.min-half {\n min-width: 49.9%;\n}\n\ndiv.profile-section,\ndiv.userInfo, div.userRecentChanges, div.userPreferences, div.passwordManagement, div.watchlistManagement, div.watchlistRss, div.watchlistElements, \ndiv.userDashboard, #dashboardPane .dashboard {\n margin: 5px 10px 10px;\n padding: 5px 10px 10px;\n}\n\n/* ----- Profile ----- */\ntd.recentChangesLeft, .recentChangesMoreActions {\n display:none;\n}\n\ntd.recentChangesRight {\n padding: 0 !important;\n}\n\ndiv.profile-section,\ndiv.userInfo, div.userRecentChanges, div.userPreferences, div.passwordManagement, div.watchlistManagement, div.watchlistRss, div.watchlistElements, \ndiv.userDashboard, #dashboardPane .dashboard {\n margin: 5px 10px 10px;\n padding: 5px 10px 10px;\n}\n\ndiv.highlighted-profile-section,\ndiv.userInfo, div.userPreferences, div.watchlistManagement, div.userDashboard {\n background-color: $theme.backgroundSecondaryColor;\n}\n\n.userInfo {\n -ms-word-break: break-all; /* IE8, IE9 */\n}\n\n.userInfo a {\n word-wrap: break-word;\n}\n\n.userInfo img {\n max-width: 100%;\n}\n\ndiv.userInfo input[type=\"text\"], div.userInfo input[type=\"password\"], div.userInfo textarea, div.userInfo select, div.userPreferences select {\n width: 100%;\n}\n\ndiv.editProfileCategory {\n float:right;\n}\n\ndiv.editProfileCategory a {\n display:block;\n width: 16px;\n height: 16px;\n background: url(\"$xwiki.getSkinFile(\'icons/silk/pencil.png\')\") no-repeat;\n}\n\n/* Watchlist */\n\n#watchlistRssLink {\n background: url(\"$xwiki.getSkinFile(\'icons/xwiki/rss-medium.png\')\") no-repeat;\n padding-left: 18px;\n font-weight: bold;\n}\n\nspan#avatarUpload {\n display:block;\n width:$tabswidth;\n position:absolute;\n font-size: 10px;\n font-weight: bold;\n background-color: white;\n}\n\n\n\n## --------------------------------------\n## Network sections style\n#networkPane .following ul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n#networkPane .following li {\n padding: 2px 20px 2px 2px;\n}\n#networkPane .following li:hover {\n background-color: $theme.highlightColor;\n}\n#networkPane .following img {\n float: left;\n margin-right: 5px;\n}\n#networkPane .following .user-info {\n float: left;\n}\n#networkPane .following .user-id {\n font-size: .8em;\n font-weight: 900;\n}\n#networkPane .following .unfollow {\n float: right;\n margin-right: -16px;\n padding: 0;\n}\n## --------------------------------------\n## Picker style\n.attachment-picker {\n position: relative;\n margin: auto;\n width: 100%;\n}\n.attachment-picker p {\n padding: 0;\n margin: 0;\n}\n\n.attachment-picker .picture {\n z-index: -1;\n}\n.attachment-picker .buttonwrapper {\n margin: 0;\n}\n\n.attachment-picker-start {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/picture_edit.png\')\") no-repeat center center $theme.pageContentBackgroundColor !important;\n border: 0 none !important;\n border-bottom-left-radius: 8px;\n height: 18px;\n position: absolute;\n right: 0;\n text-align: left;\n text-indent: -9999px;\n top: 1px;\n width: 18px !important;\n z-index: 1;\n}\n\n## --------------------------------------\n## Dashboard\n/* prevent the clearfloats between buttons & dashboard gadgets from clearing the tabs as well, only the buttons float */\n.dashboard .clearfloats, \n.dashboard .clearfloats:after, .dashboard .clearfloats:before {\n clear: right;\n}'),(-891003554874154134,'description','The name of the property associated with the picker.'),(-835024709258431825,'groups','XWiki.XWikiAllGroup'),(-835024709258431825,'users','XWiki.XWikiGuest'),(-833706138962351270,'async_context',''),(-833706138962351270,'content','{{velocity}}\n#if ($xwiki.isMultiLingual() || $showEmptyPanels)\n #largepanelheader($services.localization.render(\'panels.translation.title\'))\n #if ($request.language && $request.language != \'default\' && \"$doc.defaultLocale\" != $request.language)\n #set ($forcetrans = $request.language)\n #set ($rlanguage = $request.language)\n #else\n #set ($forcetrans = \'\')\n #set ($rlanguage = \"$tdoc.locale\")\n #end\n ## Some documents have no default language set. This is the case with documents having scripts, which obviously are\n ## not translatable and more importantly are not written in a specific spoken language. In order to be consistent with\n ## the language displayed at the top right corner (global.vm) we use \'default\' when the default language is not\n ## specified. This is a temporary solution.\n #set ($defaultLanguage = \"$!doc.defaultLocale\")\n #if ($defaultLanguage == \'\')\n #set ($defaultLanguage = \"$!doc.locale\")\n #if ($defaultLanguage == \'\')\n #set ($defaultLanguage = \'default\')\n #end\n #end\n #if ((\"$!tdoc.locale\" == \'\' || $tdoc.locale == $doc.defaultLocale) && ($forcetrans == \'\'))\n (% class=\"important\" %)\n **$services.localization.render(\'panels.translation.editingOriginal\', [$defaultLanguage])**\n #if ($!doc.translationList.size() > 0)\n\n $services.localization.render(\'panels.translation.existingTranslations\')##\n #foreach ($translation in $doc.translationList) ##\n [[$translation>>path:$doc.getURL(\'edit\', \"editor=${editor}&language=${translation}\")]]##\n #end\n\n #end\n #else\n (% class=\"important\" %)\n **$services.localization.render(\'panels.translation.editingTranslation\', [${rlanguage}])**\n\n $services.localization.render(\'panels.translation.editOriginalLanguage\', [\"[[$defaultLanguage>>path:$doc.getURL(\'edit\', \"\"editor=${editor}&language=${doc.defaultLocale}\"\")]]\"])\n #if ($doc.translationList.size() > 1)\n\n $services.localization.render(\'panels.translation.otherTranslations\')##\n #foreach ($translation in $doc.translationList)\n #if ($translation != \"$tdoc.locale\") ##\n [[$translation>>path:$doc.getURL(\'edit\', \"editor=${editor}&language=${translation}\")]]##\n #end\n #end\n\n #end\n #end\n #set ($elangs = $doc.translationList)\n #set ($extraTranslations = \'\')\n #foreach ($olang in $xwiki.getXWikiPreference(\'languages\').split(\'\\s*[|, ]\\s*\'))\n #if (!$elangs.contains($olang) && $olang != \"$doc.defaultLocale\" && $olang != $forcetrans)\n #set ($extraTranslations = \"${extraTranslations}[[$olang>>path:${doc.getURL(\'edit\', \"\"editor=${editor}&language=${olang}\"\")}]] \")\n #end\n #end\n #if ($extraTranslations != \'\')\n\n $services.localization.render(\'panels.translation.translate\') $extraTranslations\n #end\n #panelfooter()\n#end\n{{/velocity}}'),(-833706138962351270,'description','Information about the translation being edited and links to other translations.'),(-822908623785440711,'groups',''),(-822908623785440711,'users',''),(-821152247863515913,'description','Whether to show modifications that create minor versions or not.'),(-742676475097111767,'description','DOM id of the input field where the picker will apply'),(-692458536091278653,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\nXWiki.MessageStream = Class.create({\n initialize : function() {\n this.prepareForms();\n this.enhanceSelect();\n },\n prepareTargetInput : function(event, element) {\n var targetType = element.options[element.selectedIndex].value;\n element.className = targetType;\n var messageStream = element.up(\'.messagestream\');\n var targetInputContainer = messageStream.down(\'.message-target-\' + targetType);\n if (!targetInputContainer) {\n targetInputContainer = messageStream.down(\'.message-target-default\');\n }\n messageStream.select(\'.message-target\').forEach(function(messageTargetContainer) {\n var fields = messageTargetContainer.select(\'input, select, textarea\');\n if (messageTargetContainer === targetInputContainer) {\n messageTargetContainer.removeClassName(\'hidden\');\n fields.forEach(function(field) {\n field.enable();\n field.hasClassName(\'selectized\') && field.selectize.enable();\n });\n } else {\n messageTargetContainer.addClassName(\'hidden\');\n fields.forEach(function(field) {\n field.disable();\n field.hasClassName(\'selectized\') && field.selectize.disable();\n });\n }\n });\n },\n enhanceSelect: function () {\n $$(\'.messagestream select[name=\"visibilityLevel\"]\').each(function(element) {\n element.observe(\'change\', this.prepareTargetInput.bindAsEventListener(this, element));\n this.prepareTargetInput(null, element);\n }.bind(this));\n },\n prepareForms: function() {\n $$(\'.messagestream form\').each(function(msForm) {\n msForm.action = msForm.action.replace(/xredirect=.*$/, \'xpage=plain\')\n msForm.observe(\'submit\', function(event) {\n event.stop();\n if (msForm._disabled == true || msForm.down(\'textarea\').value.strip() == \'\') {\n return;\n }\n new Ajax.Request(\n msForm.action, {\n parameters: msForm.serialize(true),\n onCreate: function() {\n msForm._disabled = true;\n msForm._notification = new XWiki.widgets.Notification(\"$services.localization.render(\'xe.activity.messages.submit.inProgress\')\", \'inprogress\');\n },\n onSuccess: function() {\n if (msForm) {\n msForm.messagestream_message.value = \'\';\n }\n if (msForm && msForm._notification) {\n msForm._notification.hide();\n }\n msForm._notification = new XWiki.widgets.Notification(\"$services.localization.render(\'xe.activity.messages.submit.success\')\", \'done\');\n\n document.fire(\'xwiki:activity:newActivity\', msForm);\n },\n onFailure: function(response) {\n var failureReason = \'\';\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n } else {\n failureReason = response.statusText;\n }\n if (msForm) {\n msForm._disabled = false\n if (msForm._notification) {\n msForm._notification.hide();\n }\n msForm._notification = new XWiki.widgets.Notification(\"$services.localization.render(\'xe.activity.messages.submit.failed\'): \" + failureReason, \'error\');\n }\n },\n on1223 : function(response) { /*SUCCESS*/\n response.request.options.onSuccess(response);\n },\n on0 : function(response) { /*FAILURE*/\n response.request.options.onFailure(response);\n },\n onComplete: function() {\n msForm._disabled = false;\n }.bind(this)\n }\n );\n }.bindAsEventListener(this));\n }.bind(this));\n }\n});\n\nvar init = function() {\n return new XWiki.MessageStream();\n};\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));'),(-675676864950081564,'description','Set this parameter to false if you want to include the hidden documents in the tree. Otherwise, if the value is true, the hidden documents are excluded or included based on current user\'s preferences.'),(-621432015853853824,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\n/**\n * Displays the title (tool tip) inside the text input when there\'s no value and the text input is not focused.\n */\nXWiki.InputWithTitle = Class.create({\n initialize : function(input) {\n this.input = input;\n this.input.observe(\'focus\', this._onFocus.bindAsEventListener(this));\n this.input.observe(\'blur\', this._onBlur.bind(this));\n\n // We have to listen to the save event because \'Save & Continue\' doesn\'t trigger a form submit event.\n document.observe(\'xwiki:class:save\', this._onSave.bind(this));\n\n this._onBlur();\n },\n _onFocus : function(event) {\n if (this.input.hasClassName(\'unset\')) {\n this.input.value = \'\';\n this.input.removeClassName(\'unset\');\n }\n },\n _onBlur : function() {\n if (this.input.value == \'\') {\n this.input.addClassName(\'unset\');\n this.input.value = this.input.title;\n }\n },\n _onSave : function() {\n this._onFocus();\n this._onBlur.bind(this).defer();\n }\n});\n\n/**\n * A text input that is automatically resized to fit its value.\n */\nXWiki.AutoResizeInput = Class.create({\n initialize : function(input) {\n this.input = input;\n var resizeEvents = [\'blur\', \'change\', \'cut\', \'keyup\', \'paste\'];\n for(var i = 0; i < resizeEvents.length; i++) {\n this.input.observe(resizeEvents[i], this._resize.bindAsEventListener(this));\n }\n this.input.observe(\'keypress\', this._reserveSpace.bindAsEventListener(this));\n\n this.meter = new Element(\'pre\', {\'class\': \'autoResize-meter inherit\'});\n this.meter.appendChild(document.createTextNode(\'\'));\n this.input.addClassName(\'inherit\').insert({after: this.meter});\n\n this._resize();\n },\n _resize : function(event) {\n if (event) {\n this._resize.bind(this).defer();\n } else {\n // Make sure the meter text is not set to the empty string because otherwise the meter offset width is wrongly\n // computed in Chrome. See http://code.google.com/p/chromium/issues/detail?id=105573 .\n this.meter.firstChild.data = this.input.value || \' \';\n this.input.setStyle({width: (this.meter.offsetWidth + 6) + \'px\'});\n }\n },\n _reserveSpace : function(event) {\n /* Ignore: Backspace, Delete, End, Home, Left, Up, Right, Down. */\n var ignored = [8, 46, 35, 36, 37, 38, 39, 40];\n for(var i = 0; i < ignored.length; i++) {\n if (event.keyCode == ignored[i]) {\n return;\n }\n }\n this.input.setStyle({width: (this.input.offsetWidth + 6) + \'px\'});\n }\n});\n\n/**\n * A toggle button backed by a select with two options.\n */\nXWiki.ToggleSelect = Class.create({\n initialize : function(select) {\n this.select = select;\n this.select.hide();\n\n this.off = select.options[0];\n this.on = select.options[1];\n\n this.switcher = new Element(\'span\', {\'class\': this.select.className, title: this.select.title});\n this.switcher.removeClassName(\'toggle\').addClassName(\'toggle-switcher\');\n this.switcher.appendChild(document.createTextNode(\'\'));\n this.switcher.observe(\'click\', this._toggle.bind(this));\n this.select.insert({after: this.switcher});\n\n this._update();\n },\n _toggle : function() {\n if (this.on.selected) {\n this.off.selected = true;\n } else {\n this.on.selected = true;\n }\n this._update();\n },\n _update : function() {\n this.switcher.firstChild.nodeValue = this.select.options[this.select.selectedIndex].text;\n }\n});\n\n// Allow widgets to catch the save event before the form is submitted when the \'Save & Continue\' button is clicked. We\n// need this hack because the \'Save & Continue\' handler from actionbuttons.js is added right after the page is loaded,\n// before any other code can register its own listener.\ndocument.observe(\'xwiki:actions:save\', function(event) {\n document.fire(\'xwiki:class:save\', {originalEvent: event});\n}.bindAsEventListener(window));\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));'),(-614498398768250718,'javamail_extra_props',''),(-614498398768250718,'ldap_fields_mapping',''),(-614498398768250718,'ldap_group_mapping',''),(-567059199559061512,'code','#template(\'colorThemeInit.vm\')\n\n.solrQueueSize.loading {\n background-position: right center;\n padding-right: 18px;\n}\n\n.estimatedTimeRemaining {\n color: $theme.textSecondaryColor;\n font-style: italic;\n margin-left: 1em;\n}'),(-535002053424351806,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.pageContent.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.pageContent.contentB\')\n{{/velocity}}'),(-528946118605285988,'groups','XWiki.XWikiAdminGroup'),(-528946118605285988,'users',''),(-369853542195964755,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.pageTabs.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.pageTabs.contentB\')\n{{/velocity}}'),(-318184787905212582,'code','require([\'jquery\', \'xwiki-events-bridge\'], function ($) {\n \'use strict\';\n \n /**\n * Add a \'launch tour\' button into the \'actions\' columns.\n */\n var addLaunchButton = function (row) {\n // Do not add the button if the tour is not active or if the target page is not set\n if (row.find(\'.targetPage\').text() == \'-\' || row.find(\'.isActive\').text() != \'$escapetool.javascript($services.localization.render(\"yes\"))\') {\n return;\n }\n var targetPage = XWiki.Model.resolve(row.find(\'.targetPage\').text(), XWiki.EntityType.DOCUMENT);\n var targetPageDocument;\n // Two behaviours depending of the handling of the Nested Pages feature.\n if (XWiki.Document.initializeFromReference) {\n targetPageDocument = new XWiki.Document(targetPage);\n } else {\n targetPageDocument = new XWiki.Document(targetPage.name,\n targetPage.extractReferenceValue(XWiki.EntityType.SPACE));\n }\n \n // Add a launch tour link to the actions column.\n if (row.find(\'.actionLaunch\').length == 0) {\n $(\'<a class=\"action actionLaunch\">$services.icon.renderHTML(\"play\") $escapetool.javascript($escapetool.xml($services.localization.render(\"tour.livetable._actions.launch\")))</a>\')\n .attr(\'href\', targetPageDocument.getURL(\'view\', \'startTour=true\'))\n .css(\'padding-left\', \'1px\').appendTo(row.find(\'.actions\'));\n }\n }\n \n /**\n * Add the launch button into each livetable raw.\n */\n var initLivetableResults = function () {\n $(\'#tour tr\').each( function() {\n addLaunchButton($(this));\n });\n }\n $(document).on(\'xwiki:livetable:ready\', initLivetableResults);\n $(document).ready(initLivetableResults);\n \n /**\n * Add the launch button into each new livetable raw.\n */\n $(document).on(\'xwiki:livetable:newrow\', function (event, data) {\n // It only concerns the \'tour\' livetable\n if (data.tableId != \'tour\') {\n // This is to be extra sure, but there should not be other livetables in that page...\n return;\n }\n addLaunchButton($(data.row));\n });\n \n});\n'),(-290433136403775361,'description','Whether to show the space nodes or not. The documents are grouped by space if the space nodes are displayed.'),(-237241165128514183,'description','Whether to show the edges that connect the sibling tree nodes between themselves and with their parent.'),(-231164103462346209,'async_context',''),(-231164103462346209,'content',''),(-231164103462346209,'parameters','tip=$services.localization.render(\'help.tipsPanel.advancedHiddenShortcutTip\')'),(-164837888023059193,'javamail_extra_props',''),(-164837888023059193,'ldap_fields_mapping',''),(-164837888023059193,'ldap_group_mapping',''),(-132542625321392260,'description','Whether to allow the user to enter a version summary that will be recorded in the history. An automatic message is used when no version summary is provided or if the version summary input is not displayed.'),(-22827029092784258,'groups',''),(-22827029092784258,'users','XWiki.XWikiGuest'),(-20449174920798045,'description','Whether to show the class properties for documents that define classes.'),(9577210324463104,'lessCode','/* Administration: Vertical Menus */\n@list-group-active-border: @list-group-border;\n\n/* Drawer */\n@xwiki-drawer-menu-item-hover-bg: @list-group-hover-bg;\n@xwiki-drawer-menu-item-hover-color: @list-group-link-hover-color;\n\n/* Other */\n@well-bg: @body-bg;\n\n\n'),(65664463632695976,'code','\'use strict\';\nrequire([\'jquery\', \'XWikiNotificationsMacro\'], function ($, XWikiNotificationsMacro) {\n $(document).ready(function() {\n $(\'.notifications-macro\').each(function () {\n var macro = new XWikiNotificationsMacro(this);\n macro.load();\n });\n });\n});\n'),(85942573886961652,'async_context',''),(85942573886961652,'content','{{velocity}}\n#set ($query = $services.query.xwql(\'order by doc.date desc\'))\n#set ($recentlyModified = $query.addFilter(\'hidden\').setLimit(5).execute())\n#if ($recentlyModified.size() > 0 || $showEmptyPanels)\n #panelheader($services.localization.render(\'panels.recentlyModified.title\'))\n #foreach ($docName in $recentlyModified)\n #if ($xwiki.hasAccessLevel(\'view\', $docName))\n #set ($recentDoc = $xwiki.getDocument($docName).getTranslatedDocument())\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in document title.\n * {{html}}<a href=\"$recentDoc.getURL()\">$escapetool.xml($recentDoc.plainTitle)</a>{{/html}}\n #end\n #end\n#panelfooter()\n#end\n{{/velocity}}'),(85942573886961652,'description','List the last 5 documents modified.'),(154209409237987168,'codeToExecute','{{display reference=\"XWiki.Authentication.Administration\" /}}'),(166204058432385994,'code','#template(\'colorThemeInit.vm\')\n.theme {\n border: 1px dotted $theme.borderColor;\n float: left;\n margin: 0 1em 1em 0;\n padding: 2px 4px;\n width: 300px;\n}\n\n.current-theme {\n background-color: $theme.highlightColor;\n}\n\n.theme-info {\n margin-left: 60px;\n color: $theme.textSecondaryColor;\n font-size: .9em;\n}\n\n.theme-info h3{\n margin-top: 0;\n border-bottom: 1px solid $theme.borderColor;\n}\n\n/* Clear the floatting strategy after the display of all themes */\n.theme-viewer h2, .theme-creation-form {\n clear: both;\n}\n\n.mockup-page {\n border: 1px solid #aaa;\n float: left;\n height: 47px;\n margin: 0 4px;\n position: relative;\n width: 50px;\n}\n\n.mockup-page * {\n line-height: 1px;\n overflow: hidden;\n position: absolute;\n}\n\n/* Pretend to be the navbar */\n.mockup-navbar {\n left: 0;\n height: 3px;\n top: 0;\n width: 49px;\n}\n\n/* Pretend to be a logo */\n.mockup-logo {\n background-color: orange;\n top: 1px;\n left: 1px;\n height: 1px;\n width: 6px;\n}\n\n/* Pretend to be menu inside the navbar */\n.mockup-navbar-menu {\n width: 16px;\n height: 1px;\n border-style: dashed;\n border-width: 1px;\n left: 12px;\n}\n\n/* Pretend to be the add button */\n.mockup-add-button {\n left: 30px;\n height: 2px;\n width: 5px;\n top: 0px;\n}\n\n/* Pretend to be the page content */\n.mockup-page-content {\n height: 40px;\n left: 6px;\n overflow: hidden;\n top: 3px;\n width: 32px;\n}\n\n.mockup-title, .mockup-text1, .mockup-text2, .mockup-text3, .mockup-text4, .mockup-text5{\n left: 2px;\n height: 1px;\n width: 28px;\n border-style: dotted;\n border-width: 1px;\n}\n\n.mockup-title {\n top: 4px;\n}\n\n.mockup-text1 {\n top: 10px;\n}\n\n.mockup-text2 {\n top: 13px;\n}\n\n.mockup-text3 {\n top: 16px;\n}\n\n.mockup-text4 {\n top: 19px;\n}\n\n.mockup-text5 {\n top: 22px;\n}\n\n/* Pretend to be the app bar */\n.mockup-left-panel, .mockup-left-panel:before{\n height: 40px;\n top: 3px;\n width: 4px;\n left: 2px;\n}\n\n.mockup-left-panel:before{\n content: \"@ @ @ @ @\";\n font-size: 2px;\n}\n\n/* Pretend to be the right panel */\n.mockup-right-panel {\n height: 24px;\n top: 7px;\n width: 7px;\n right: 2px;\n}\n\n.mockup-right-panel-header-text, .mockup-right-panel-text1, .mockup-right-panel-text2, .mockup-right-panel-text3 {\n height: 1px;\n left: 2px;\n top: 1px;\n width: 8px;\n border-style: dotted;\n border-width: 1px;\n}\n\n.mockup-right-panel-header {\n border-bottom: 1px dotted;\n width: 12px;\n}\n\n.mockup-right-panel-contents{\n top: 5px;\n width: 8px;\n height: 20px;\n}\n\n.mockup-right-panel-text1 {\n top: 0px;\n}\n\n.mockup-right-panel-text2 {\n top: 3px;\n}\n\n.mockup-right-panel-text3 {\n top: 6px;\n}\n\n/* Pretend to be the footer */\n.mockup-footer {\n top: 43px;\n height: 3px;\n width: 49px;\n left: 0px;\n}\n\n.mockup-footer-content {\n width: 25px;\n height: 1px;\n border-style: dashed;\n border-width: 1px;\n left: 12px;\n}\n\n.theme-creation-form form {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/add.png\')\") no-repeat .2em center $theme.backgroundSecondaryColor;\n border: 1px dotted $theme.borderColor;\n display: inline-block;\n padding: .5em .5em .5em 22px;\n margin-bottom: 1em;\n}\n\n'),(172253875335663924,'async_context','doc.reference|locale|wiki'),(172253875335663924,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.navigation\'))\n## Escape special characters in macro parameter values.\n#set ($openToDoc = $doc.documentReference.toString().replaceAll(\'([~\"])\', \'~$1\'))\n## Apply the configured page exclusions.\n#set ($config = $xwiki.getDocument(\'PanelsCode.NavigationConfiguration\'))\n#set ($exclusions = $collectionstool.set)\n#set ($defaultDocumentName = $services.model.getEntityReference(\'DOCUMENT\', \'default\').name)\n## Exclude top level extension pages.\n#if ($config.getValue(\'excludeTopLevelExtensionPages\') == 1)\n #set ($query = $services.query.hql(\'select space.name from XWikiSpace space where space.parent is null\'))\n #set ($discard = $query.addFilter(\'hidden/space\'))\n #foreach ($result in $query.execute())\n #set ($documentReference = $services.model.createDocumentReference($NULL, $result, $defaultDocumentName))\n #set ($installedExtensions = $services.extension.xar.getInstalledExtensions($documentReference))\n #if ($installedExtensions && $installedExtensions.size() > 0\n && !$services.extension.xar.isEditAllowed($documentReference))\n #set ($discard = $exclusions.add(\"document:$documentReference\"))\n #end\n #end\n#end\n## Exclude top level application pages.\n#if ($config.getValue(\'excludeTopLevelApplicationPages\') == 1)\n #set ($statement = \'select space.name \'\n + \'from XWikiSpace as space, Document as doc, doc.object(AppWithinMinutes.LiveTableClass) as app \'\n + \'where space.parent is null and doc.space = space.reference\')\n #set ($query = $services.query.xwql($statement).addFilter(\'hidden/space\'))\n #foreach ($result in $query.execute())\n #set ($documentReference = $services.model.createDocumentReference($NULL, $result, $defaultDocumentName))\n #set ($discard = $exclusions.add(\"document:$documentReference\"))\n #end\n#end\n## Inclusions are treated as exceptions to the dynamic exclusion filters.\n#if ($config.getValue(\'excludeTopLevelExtensionPages\') == 1 || $config.getValue(\'excludeTopLevelApplicationPages\') == 1)\n ## FIXME: This panel is cached and the cache is not invalidated by default when an extension is installed or\n ## uninstalled and neither when an application is created, deleted or renamed. Ideally we should invalidate the cache\n ## whenever a top level page is created or modified but we can\'t do this ATM so the next best thing is to invalidate\n ## the cache whenever a page (anywhere in the page hierarchy) is modified.\n #set ($discard = $services.async.useEntity(\"wiki:$xcontext.database\"))\n #foreach ($inclusion in $config.getValue(\'inclusions\'))\n #set ($documentReference = $services.model.resolveDocument($inclusion))\n #set ($discard = $exclusions.remove(\"document:$documentReference\"))\n #end\n#end\n## Other page exclusions.\n#foreach ($exclusion in $config.getValue(\'exclusions\'))\n #set ($documentReference = $services.model.resolveDocument($exclusion))\n #set ($discard = $exclusions.add(\"document:$documentReference\"))\n#end\n#set ($exclusions = $stringtool.join($exclusions, \',\'))\n{{documentTree showTranslations=\"false\" showAttachments=\"false\" compact=\"true\" openTo=\"document:$openToDoc\"\n exclusions=\"$exclusions\" /}}\n#panelfooter()\n{{/velocity}}'),(172253875335663924,'description','Displays the page tree, taking into account the page access rights, the \"show hidden pages\" user preference and the configured page exclusions.'),(173995775158485649,'groups','XWiki.XWikiAdminGroup'),(173995775158485649,'users',''),(215861585402423156,'code','define(\'xwiki-awm-class-field-enhancer\', [\'jquery\', \'xwiki-events-bridge\'], function($) {\n var maybeEnhanceClassField = function(field, fieldEnhancer) {\n var fieldContainer = field.getContainer();\n var enhancedFlag = \'_enhanced\' + fieldEnhancer.id;\n // Enhance the field if it\'s not already enhanced and if it matches the template.\n if (!fieldContainer[enhancedFlag] && $(\'#\' + \'template-\' + field.getName()).val() === fieldEnhancer.fieldTemplate) {\n fieldContainer[enhancedFlag] = true;\n fieldEnhancer.enhance(field);\n }\n };\n\n return function(fieldEnhancer) {\n // Enhance the class fields right after they are displayed.\n $(document).on(\'xwiki:class:displayField\', function(event, data) {\n maybeEnhanceClassField(data.field, fieldEnhancer);\n });\n\n // Enhance the class fields that have been already displayed.\n $(\'#fields\').children().each(function() {\n var field = new XWiki.FormField(this);\n if (field.getConfig()) {\n maybeEnhanceClassField(field, fieldEnhancer);\n }\n });\n };\n});\n\ndefine(\'xwiki-awm-list-enhancer\', [\'jquery\', \'xwiki-awm-class-field-enhancer\'], function($, classFieldEnhancer) {\n var enhance = function(field) {\n enhanceMultiSelect(field);\n enhanceDisplayType(field);\n };\n\n var maybeUpdateListSize = function(field) {\n var multiSelectField = $(\'#\' + field.getPropertyId(\'multiSelect\'));\n var displayTypeField = $(\'#\' + field.getPropertyId(\'displayType\'));\n if (multiSelectField.prop(\'checked\') && displayTypeField.val() === \'select\') {\n // Select box with multiple selection enabled should be displayed as an expanded list box so we have to adjust the\n // size (size 1 means drop down list box).\n var sizeField = $(\'#\' + field.getPropertyId(\'size\'));\n if (parseInt(sizeField.val()) < 2) {\n sizeField.val(5);\n }\n }\n };\n\n var enhanceMultiSelect = function(field) {\n var relationalStorageField = $(\'#\' + field.getPropertyId(\'relationalStorage\'));\n\n // Hide the \"relational storage\" meta property because it\'s too technical and because the recommendation is to use\n // relational storage if multiple selection is on.\n relationalStorageField.closest(\'dt\').hide();\n\n $(\'#\' + field.getPropertyId(\'multiSelect\')).click(function(event) {\n if ($(this).prop(\'checked\')) {\n // Enable relational storage whenever multiple selection is enabled.\n relationalStorageField.prop(\'checked\', true);\n\n // Synchronize multiple selection with display type.\n var displayTypeField = $(\'#\' + field.getPropertyId(\'displayType\'));\n if (displayTypeField.val() === \'radio\') {\n // Radio display type doesn\'t support multiple selection.\n displayTypeField.val(\'checkbox\');\n }\n }\n\n maybeUpdateListSize(field);\n });\n };\n\n var enhanceDisplayType = function(field) {\n var displayTypeField = $(\'#\' + field.getPropertyId(\'displayType\'));\n var useSuggestField = $(\'#\' + field.getPropertyId(\'picker\'));\n var sizeField = $(\'#\' + field.getPropertyId(\'size\'));\n\n // Hide the \"Use suggest\" meta property because it makes sense only for the input display type.\n useSuggestField.closest(\'dt\').hide();\n\n // Initialize the state of the size meta property.\n sizeField.prop(\'readOnly\', displayTypeField.val() !== \'select\');\n\n displayTypeField.change(function(event) {\n // Use suggest picker whenever input display type is selected.\n useSuggestField.prop(\'checked\', $(this).val() === \'input\');\n\n // The size meta property makes sense only when display type is select.\n sizeField.prop(\'readOnly\', $(this).val() !== \'select\');\n\n // Radio display type doesn\'t support multiple selection.\n if ($(this).val() === \'radio\') {\n $(\'#\' + field.getPropertyId(\'multiSelect\')).prop(\'checked\', false);\n }\n\n maybeUpdateListSize(field);\n });\n }\n\n return function(fieldTemplate) {\n classFieldEnhancer({\n id: \'List\',\n fieldTemplate: fieldTemplate,\n enhance: enhance\n });\n };\n});\n\n// Database List Class Field Enhancer\nrequire([\'jquery\', \'xwiki-awm-list-enhancer\'], function($, listEnhancer) {\n listEnhancer($jsontool.serialize($doc.fullName));\n});'),(223705195768339210,'code','require([\'jquery\'], function($) {\n \'use strict\';\n\n /**\n * Customize Button class.\n * @param button the \"customize\" button\n * @param input the input field corresponding to the button\n * @param action the action to use in the URL to go to the page linked by the input\n */\n var CustomizeButton = function(button, input, action) {\n var self = this;\n self.button = button;\n self.input = input;\n self.action = action;\n\n /**\n * Initialization\n */\n self.init = function () {\n self.update();\n // Update the button everytime the value of the input changes\n self.input.change(function () {\n self.update();\n });\n self.input.keyup(function () {\n self.update();\n });\n };\n\n /**\n * Update the button\n */\n self.update = function () {\n var inputValue = self.input.val();\n // We consider a color theme or a skin must be written with an absolute reference, so if there is no \"dot\", the\n // value is wrong.\n if (typeof inputValue === \'string\' && inputValue.indexOf(\'.\') > 0) {\n // TODO: verify that the page exists (?)\n var pageReference = XWiki.Model.resolve(inputValue, XWiki.EntityType.DOCUMENT);\n var url = new XWiki.Document(pageReference).getURL(self.action);\n self.button.attr(\'href\', url);\n self.button.removeClass(\'hidden\');\n } else {\n self.button.attr(\'href\', \'#\');\n self.button.addClass(\'hidden\');\n }\n };\n\n // Call initialization\n self.init();\n }\n\n /**\n * Handle customize color theme.\n */\n var customizeColorTheme = new CustomizeButton(\n $(\'label.colorTheme a\'),\n $(\'select[name=\"XWiki.XWikiPreferences_0_colorTheme\"]\'),\n \'edit\'\n );\n\n /**\n * Handle customize skin.\n */\n var customizeSkin = new CustomizeButton(\n $(\'label.skin a\'),\n $(\'select[name=\"XWiki.XWikiPreferences_0_skin\"]\'),\n \'view\'\n );\n});\n'),(314125244919345433,'description','Tour that presents the Homepage.'),(395301560807013873,'jobDescription',''),(395301560807013873,'script',''),(520648408671764849,'code','require([\'jquery\'], function($) {\n var displayTimeDelta = function(millis) {\n millis = Math.floor(millis);\n if (millis < 1000) {\n return Math.floor(millis) + \'ms\';\n } else if (millis < 60000) {\n return Math.floor(millis / 1000) + \'s \' + (millis % 1000) + \'ms\';\n } else if (millis < 3600000) {\n return Math.floor(millis / 60000) + \'m \' + Math.floor((millis % 60000) / 1000) + \'s\';\n } else {\n return Math.floor(millis / 3600000) + \'h \' + Math.floor((millis % 3600000) / 60000) + \'m\';\n }\n };\n\n var estimateRemainingTime = function(data) {\n if (this._previousData) {\n var sizeDelta = this._previousData.queueSize - data.queueSize;\n if (data.queueSize > 0 && sizeDelta > 0) {\n var timeDelta = data.timestamp - this._previousData.timestamp;\n var etr = (timeDelta / sizeDelta) * data.queueSize;\n $(this).next().text(\'(Estimated time remaining: \' + displayTimeDelta(etr) + \')\');\n } else {\n $(this).next().html(\'\');\n }\n }\n this._previousData = data;\n };\n\n var updateQueueSize = function(data) {\n $(this).text(data.queueSize);\n if (data.queueSize > 0) {\n $(this).addClass(\'loading\');\n } else {\n $(this).removeClass(\'loading\');\n }\n estimateRemainingTime.call(this, data);\n scheduleQueueSizeUpdate.call(this);\n };\n\n var requestQueueSizeUpdate = function() {\n var queueSizeContainer = this;\n $.ajax({\n url: \"$xwiki.getURL(\'XWiki.SolrSearchAdmin\', \'get\', \'outputSyntax=plain\')\",\n data: {action: \'getQueueSize\'}\n }).done(function(data) {\n updateQueueSize.call(queueSizeContainer, data);\n });\n };\n\n var scheduleQueueSizeUpdate = function() {\n var queueSize = parseInt($(this).text());\n // Wait more if the queue size is 0 or not a number.\n var delay = isNaN(queueSize) || queueSize <= 0 ? 60 : 5;\n var queueSizeContainer = this;\n setTimeout(function() {\n requestQueueSizeUpdate.call(queueSizeContainer);\n }, delay * 1000);\n };\n\n $(\'.solrQueueSize\').after(\'<span class=\"estimatedTimeRemaining\"/>\').each(scheduleQueueSizeUpdate);\n})'),(554319480132355901,'async_context','request.wiki|wiki|locale|user'),(554319480132355901,'content','{{velocity}}\n#set ($void = $services.async.useEntity(\"wiki:$xcontext.database\"))\n#set ($query = $services.query.xwql(\'select doc.fullName, doc.language from Document doc where doc.author = :author order by doc.date desc\'))\n#set ($recentDocs = $query.addFilter(\'hidden\').addFilter(\'unique\').bindValue(\'author\', $xcontext.user).setLimit(5).execute())\n## We count the occurence of a document to specify the document language when there are duplicates\n#set ($docNamesCounter = {})\n#foreach ($doc in $recentDocs)\n #if ($docNamesCounter.containsKey($doc[0]))\n #set ($docNamesCounter[$doc[0]] = $docNamesCounter[$doc[0]] + 1)\n #else\n #set ($docNamesCounter[$doc[0]] = 1)\n #end\n#end\n#if ($recentDocs.size() > 0 || $showEmptyPanels)\n #panelheader($services.localization.render(\'xe.panels.modifications.my\'))\n #foreach ($recentDocResult in $recentDocs)\n #set ($recentDoc = $xwiki.getDocument($recentDocResult[0]).getTranslatedDocument($recentDocResult[1]))\n #if ($recentDoc)\n #set ($docLocale = $recentDoc.locale)\n #if (\"$docLocale\" == \'\')\n #set ($docLocale = $recentDoc.defaultLocale)\n #end\n #if (\"$docLocale\" != \'\' && $docLocale != $xcontext.locale)\n #set ($docUrl = $recentDoc.getURL(\'view\', \"language=${docLocale}\"))\n #else\n #set ($docUrl = $recentDoc.getURL())\n #end\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in document title.\n * {{html}}<a href=\"${docUrl}\">$escapetool.xml($recentDoc.plainTitle)#if ($docNamesCounter[$recentDocResult[0]] > 1) <em>($docLocale)</em>#end</a>{{/html}}\n #end\n #end\n #panelfooter()\n#end\n{{/velocity}}'),(554319480132355901,'description','List the last 5 documents modified by the current user.'),(667090330227159270,'async_context',''),(667090330227159270,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'welcome\'))\n$services.localization.render(\'welcometoobjecteditor\')\n#panelfooter()\n{{/velocity}}'),(667090330227159270,'description','Object Editor welcome message.'),(717930935362421556,'description',''),(722116165808455315,'codeToExecute',''),(766512216770901820,'code','/* Extend the custom engine input to the right. */\ndiv.custom {\n display: flex;\n align-items: center;\n}\n.customEngine {\n flex-grow: 1;\n margin-left: .5em;\n}\n\n/* Make sure we have a margin-top for the engines, even when the first ones are hidden. */\n.jcaptcha .hidden + .radio, .jcaptcha .radio:first-of-type {\n margin-top: 10px;\n}'),(771094098479979128,'code','// Sometimes IE8 loads the font *after* the rendering of the page so it does not display the icon correctly.\n// To fix this, we reload the stylesheet when we receive the \'document ready\' event so that the browser recomputes\n// the display. Although, it does not solve everything (see https://jira.xwiki.org/browse/XWIKI-10813).\nrequire([\'jquery\'], function($) {\n // This hack concerns IE8 only\n if (navigator.userAgent.indexOf(\'MSIE 8.0\') > -1) {\n $(function() {\n var link = $(\"link[href*=\'IconThemes/FontAwesome\']\");\n link[0].href = link[0].href;\n });\n }\n});\n'),(794731092566145958,'codeToExecute','{{include reference=\"Mail.SendMailStatus\" /}}'),(796719232527224876,'code','// FIXME: This code duplicates XWiki.TemplateProviderSheet\'s JSX except for the tree and data element locators.\n\nrequire([\"$!services.webjars.url(\'org.xwiki.platform:xwiki-platform-tree-webjar\', \'require-config.min.js\', {\'evaluate\': true})\"], function() {\n\n // Reminder: \'tree\' is a jQuery plugin and returns the jQuery instance itself when required.\n require([\'tree\', \'xwiki-meta\', \'xwiki-events-bridge\'], function($, xm) {\n /**\n * Initialization method.\n */\n function initialize() {\n addEnabledSpacesTreeExtraConfiguration();\n }\n\n /**\n * Configures the jsTree generated by the documentTree macro, initializes the checked values and adds the handlers\n * for checking and unchecking tree nodes (documents).\n */\n function addEnabledSpacesTreeExtraConfiguration() {\n var treeElement = $(\'.xtree\');\n var dataElement = $(\'#AnnotationCode\\\\.AnnotationConfig_0_exceptionSpaces\');\n\n // Extract the list of initially checked elements.\n var savedIds = readSavedValues(dataElement.val());\n\n // Wait for the tree to be ready (root children loaded).\n treeElement.on(\'ready.jstree\', function(event, data) {\n var tree = $.jstree.reference(treeElement);\n\n // Configure the tree to not cascade the check status when checking nodes.\n // tree.settings.checkbox.three_state = false;\n tree.settings.checkbox.cascade = \'\';\n\n // Expand into view and check all tree nodes that are initially supposed to be checked.\n for (var i=0; i<savedIds.length; i++) {\n var savedId = savedIds[i];\n // Load and expand to the node.\n tree.openTo(savedId, function(idToCheck) {\n // Once the node is loaded, check it, if possible.\n // If the node did not load (lack of permissions, hidden document, etc.), nothing happens.\n tree.check_node(idToCheck);\n }.bind(this, savedId));\n }\n });\n\n // Listen to tree nodes being checked/unchecked and save the changes in the DOM to be saved on submit.\n treeElement.on(\'changed.jstree\', function(event, data) {\n var node = data.node;\n var initialNrOfNodes = savedIds.length;\n\n // Update the savedIds list.\n var savedIdIndex = savedIds.indexOf(node.id);\n if (data.action == \'select_node\') {\n // If it\'s not in the list, add it.\n if (savedIdIndex == -1) {\n savedIds.push(node.id);\n }\n } else if (data.action == \'deselect_node\') {\n // If it\'s in the list, remove it.\n if (savedIdIndex > -1) {\n savedIds.splice(savedIdIndex, 1);\n }\n }\n\n // Save the list in the DOM, if nodes were added/removed.\n if (initialNrOfNodes != savedIds.length) {\n var serializedValues = serializeValues(savedIds);\n dataElement.val(serializedValues);\n }\n });\n }\n\n function readSavedValues(savedValuesString) {\n // Extract the list and transform local space references to space webhome references as IDs in the tree.\n //\n // When splitting by the separator char (\'), we want to avoid values that contain the spliting char inside them, escaped.\n // Trick: Since JavaScript does not support negative lookbehind regex \"(?<!\\\\),\" we apply a negative lookahead \",(?!\\\\)\" on the reversed string to properly split.\n return reverseString(savedValuesString).split(/\\s*,(?!\\\\)\\s*/).map(function(refString) {\n if (!refString) {\n return refString;\n }\n\n // Unescape any input separator that might be part of the value and that was previously escaped when serialized in the hidden input element.\n // Trick: Remember that we previously reverset the savedValuesString, so individual values need to be reversed back to make sense before unescaping.\n refString = reverseString(refString).replace(\'\\\\,\', \',\');\n\n // Transform the local space reference to an absolute document reference, for the Nested Pages tree to use as node ID.\n refString = refString + \'.WebHome\';\n var defaultValues = {};\n defaultValues[XWiki.EntityType.WIKI] = xm.wiki;\n var resolvedSpaceRef = XWiki.Model.resolve(refString, XWiki.EntityType.DOCUMENT, defaultValues);\n var serializedSpaceRef = XWiki.Model.serialize(resolvedSpaceRef);\n\n // Complete the tree node ID by adding the reference type prefix.\n return \'document:\' + serializedSpaceRef;\n }).filter(function(id) {\n return id;\n });\n }\n\n function reverseString(initialString) {\n return initialString.split(\'\').reverse().join(\'\');\n }\n\n function serializeValues(savedIds) {\n return savedIds.map(function (id) {\n // Transform the ID back to a local space reference string.\n var refString = id.substring(\'document:\'.length);\n var reference = XWiki.Model.resolve(refString, XWiki.EntityType.DOCUMENT);\n var wikiReference = reference.extractReference(XWiki.EntityType.WIKI);\n var spaceReference = reference.extractReference(XWiki.EntityType.SPACE);\n var localSpaceReference = spaceReference.relativeTo(wikiReference);\n\n // Remember to escape the separator char \",\" from the serialized individual value.\n return XWiki.Model.serialize(localSpaceReference).replace(/,/g, \'\\\\,\');\n }).sort().join(\',\');\n }\n\n (XWiki.isInitialized ? initialize() : document.on(\'xwiki:dom:loaded\', initialize));\n });\n\n});'),(887464778070815982,'async_context','doc.reference|wiki|locale|user'),(887464778070815982,'content','{{velocity}}\n{{html clean=\"false\"}}\n#if ($xcontext.user != \'XWiki.XWikiGuest\')\n <li class=\"navbar-avatar\">\n <a href=\"$xwiki.getURL($xcontext.user)\" class=\"icon-navbar\">\n <span class=\"sr-only\">$services.localization.render(\'homepage\')</span>\n ## Use a mix of server side and client side resizing to improve the page loading time without affecting too\n ## much the image quality.\n #mediumUserAvatar($xcontext.user)\n </a>\n </li>\n#end\n{{/html}}\n{{/velocity}}'),(887464778070815982,'parameters','order=10000'),(985863333769389935,'code','.draggableApp {\n cursor: grab;\n width: 100px;\n}\n\n.appsPanel .applicationsPanel {\n min-height: 100px;\n}'),(1006997095038667836,'async_context',''),(1006997095038667836,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'chooseeditor\'))\n###\n### Edit mode tabs\n###\n###\n#if (\"$!formname\" != \'\')\n{{html}}\n<ul>\n<li id=\"xwikieditwysiwyg\"#if (\"$!editor\" == \'wysiwyg\') class=\"active\"#end><a href=\"$doc.getURL(\'edit\', \"editor=wysiwyg&$!param\")\" onclick=\"if (checkAdvancedContent(\'$services.localization.render(\'checkadvancedcontent\')\')==false) return false; return Try.these(function() {document.forms.${formname}.action=\'$doc.getURL(\'edit\', \"editor=wysiwyg&$languageparams&$!param\")\'; document.forms.${formname}.submit(); return false;});\">$services.localization.render(\'editVisual\')</a></li>\n<li id=\"xwikieditwiki\"#if (\"$!editor\" == \'wiki\') class=\"active\"#end><a href=\"$doc.getURL(\'edit\', \"editor=wiki&$!param\")\" onclick=\"return Try.these(function() {document.forms.${formname}.action=\'$doc.getURL(\'edit\', \"editor=wiki&$languageparams&$!param\")\'; document.forms.${formname}.submit(); return false;});\">$services.localization.render(\'editWiki\')</a></li>\n#if ($isAdvancedUser)<li id=\"xwikieditobject\"#if (\"$!editor\" == \'object\') class=\"active\"#end><a href=\"$doc.getURL(\'edit\', \"editor=object&$!param\")\">$services.localization.render(\'editObject\')</a></li>#end\n#if ($isAdvancedUser)<li id=\"xwikieditclass\"#if (\"$!editor\" == \'class\') class=\"active\"#end><a href=\"$doc.getURL(\'edit\', \"editor=class&$!param\")\">$services.localization.render(\'editClass\')</a></li>#end\n<li id=\"xwikieditrights\"#if (\"$!editor\" == \'rights\') class=\"active\"#end><a href=\"$doc.getURL(\'edit\', \"editor=rights&$!param\")\">$services.localization.render(\'editRights\')</a></li>\n</ul>\n{{/html}}\n#else\n This Panel should only be used in Edit mode.\n#end\n#panelfooter()\n{{/velocity}}'),(1006997095038667836,'description','Panel Description'),(1008896737373567820,'description',''),(1064670027963207987,'async_context',''),(1064670027963207987,'content','{{velocity}}\n## Don\'t extend the Edit menu if the user can configure the default WYSIWYG editor.\n#if (!$services.edit.syntaxContent)\n #set ($discard = $xwiki.jsx.use(\'CKEditor.EditMenuEntry\'))\n#end\n{{/velocity}}'),(1064670027963207987,'parameters',''),(1088043216075327214,'javamail_extra_props',''),(1088043216075327214,'ldap_fields_mapping',''),(1088043216075327214,'ldap_group_mapping',''),(1111480059924765500,'description','Comma separated list of wikis to display activity for.'),(1142578425891470903,'spaces',''),(1156940819904410152,'async_context',''),(1156940819904410152,'code','{{velocity}}\n##\n## List all the wikis.\n##\n#set($discard = $xwiki.ssx.use(\'WikiManager.WikisMacro\'))\n##\n#set ($wikis = $services.wiki.all)\n##\n#if (!$wikis || $wikis.size() == 0 )\n{{translation key=\"platform.wiki.macro.noWikis\"/}}\n\n#end\n{{html wiki=\'true\'}}\n<ul class=\'xlist\'>\n ##\n ## List wikis.\n ##\n #foreach($wiki in $wikis)\n ## We check that we have the view right on the wiki\n #if ($xwiki.hasAccessLevel(\'view\', $xcontext.userReference, $wiki.mainPageReference))\n <li class=\'xitem xunderline xhighlight workspace spWorkspaceItem\'>\n <div class=\'xitemcontainer\'>\n <div class=\'spWorkspaceName\'>{{html}}<a href=\"${xwiki.getURL($wiki.mainPageReference)}\">${wiki.prettyName}</a>{{/html}}</div> \n <div class=\'xspacer\'> </div>\n </div>\n </li>\n #end\n #end\n ## Wiki creation.\n ##\n ## Only if the current action is not inline. If it\'s inline, then there is already a form, and if we render the second, nested one, the DOM is messed up in IE.\n #if(!$isGuest && $hasCreateWiki && \"$!xcontext.action\" != \'inline\')\n <li id=\'spWorkspaceCreateItem\' class=\'xitem workspace\'>\n <div class=\'xitemcontainer\'>\n #set ($createWikiDocumentReference = $services.model.createDocumentReference($xcontext.mainWikiName, \'WikiManager\', \'CreateWiki\'))\n <div id=\'spWorkspaceCreateLabel\' class=\'spWorkspaceName\'><a href=\"$xwiki.getURL($createWikiDocumentReference)\">{{translation key=\"platform.wiki.create.title\"/}}</a></div>\n <div class=\'spacer\'> </div>\n </div>\n </li>\n #end\n</ul>\n{{/html}}\n{{/velocity}}'),(1156940819904410152,'contentDescription',''),(1156940819904410152,'contentJavaType',''),(1156940819904410152,'description','List all wikis'),(1182523160336219235,'description','{{translation key=\"menu.description\"/}}'),(1200695772610199455,'javamail_extra_props',''),(1200695772610199455,'ldap_fields_mapping',''),(1200695772610199455,'ldap_group_mapping',''),(1254085549121605392,'async_context',''),(1254085549121605392,'code','{{velocity}}\n{{documentTree root=\"document:$doc.documentReference\" /}}\n{{/velocity}}'),(1254085549121605392,'contentDescription',''),(1254085549121605392,'contentJavaType',''),(1254085549121605392,'description','Displays a tree of children pages of the current page'),(1265889115715036925,'async_context',''),(1265889115715036925,'code','{{velocity output=\"false\"}}\n $xwiki.ssx.use(\'IconThemesCode.IconPicker\')\n ## The icons themes may need some SSX, so we ask for a rendering of an icon of each icon theme, to be able to display\n ## all icon themes in the picker\n ## ToDo: since it is a bit hacky, a better system would be to dynamically load the needed SSX on demand\n #foreach($iconSetName in $services.icon.iconSetNames)\n $services.icon.render(\'wiki\', $iconSetName)\n #end\n{{/velocity}}\n\n{{velocity}}\n{{html clean=\"false\"}}\n<script language=\"javascript\">\n require.config({\n paths: {\n \'xwiki-icon-picker\': \'$xwiki.getURL($services.model.createDocumentReference(\'\', \'IconThemesCode\', \'IconPicker\'), \'jsx\', \"minify=$!{escapetool.url($request.minify)}\")\'\n }\n });\n require([\'jquery\', \'xwiki-icon-picker\'], function($) {\n var options = {};\n #if($xcontext.macro.params.parameterNames.contains(\'prefix\'))\n options[\'prefix\'] = \'$escapetool.javascript($xcontext.macro.params.prefix)\';\n #end\n #if(\"$!xcontext.macro.params.id\" != \'\')\n $(\'#${xcontext.macro.params.id}\').xwikiIconPicker(options);\n #end\n #if(\"$!xcontext.macro.params.get(\'class\')\" != \'\')\n $(\'.${xcontext.macro.params.get(\'class\')}\').xwikiIconPicker(options);\n #end\n });\n</script>\n{{/html}}\n{{/velocity}}'),(1265889115715036925,'contentDescription',''),(1265889115715036925,'contentJavaType',''),(1265889115715036925,'description','Select an icon within the XWiki icon set.'),(1295014250011950196,'code','require([\'jquery\', \'xwiki-ckeditor\', \'xwiki-events-bridge\'], function($, ckeditorPromise) {\n ckeditorPromise.done(function(ckeditor) {\n var createEditors = function(container) {\n container.find(\'.ckeditor-textarea\').each(function() {\n // Wrap in try/catch so that a failure to load one editor doesn\'t affect the other editors.\n try {\n ckeditor.replace(this);\n } catch(e) {\n console.log(e);\n }\n });\n };\n createEditors($(body));\n // Make sure we don\'t register the event listener multiple times (in case this code is loaded multiple times).\n $(document).off(\'xwiki:dom:updated.ckeditor\').on(\'xwiki:dom:updated.ckeditor\', function(event, data) {\n createEditors($(data.elements));\n });\n });\n});'),(1312505187508196868,'async_context',''),(1312505187508196868,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.spaces\'))\n#if ($hasAdmin)\n {{warning}}Deprecated: Replace with [[Navigation>>Panels.Navigation]] Panel{{/warning}}\n#end\n#set ($defaultSpaceHomePage = $services.model.getEntityReference(\'document\', \'default\').name)\n#foreach ($space in $services.query.xwql(\'SELECT DISTINCT doc.space FROM Document doc order by doc.space\').addFilter(\'hidden\').execute())\n #set ($spaceReference = $services.model.resolveSpace($space))\n #set ($spaceHomeReference = $services.model.createDocumentReference($defaultSpaceHomePage, $spaceReference))\n #if ($hasAdmin || ($services.security.authorization.hasAccess(\'view\', $spaceHomeReference) && !$blacklistedSpaces.contains($space)))\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in space name.\n * {{html}}<a href=\"$xwiki.getURL($spaceHomeReference)\"\n #if ($space == $doc.space)class=\"currentspace\"#end>$escapetool.xml($space)</a>{{/html}}\n #end\n#end\n#panelfooter()\n{{/velocity}}'),(1312505187508196868,'description','Displays the spaces available in the wiki.'),(1314300318641197968,'groups','XWiki.XWikiAllGroup'),(1314300318641197968,'users',''),(1393787631504427693,'codeToExecute','{{notificationsEmailPreferences target=\"wiki\" /}}'),(1419839714728922190,'groups','xwiki:XWiki.XWikiAllGroup'),(1419839714728922190,'users',''),(1453799767698074445,'async_context',''),(1453799767698074445,'code','{{template name=\"locationPicker_macros.vm\" /}}\n\n{{include reference=\"XWiki.Notifications.Code.NotificationsPreferencesMacros\" /}}\n\n{{velocity}}\n#if (!$xcontext.userReference)\n {{info}}\n {{translation key=\"notifications.settings.filters.preferences.forGuest\" /}}\n {{/info}}\n#else\n######################################################\n### CSS and JAVASCRIPTS\n######################################################\n#set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.NotificationsFiltersPreferencesMacro\'))\n#set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.NotificationsFiltersPreferencesMacro\'))\n## TODO: replace by $xwiki.sswx.use() or something like this when XWIKI-12788 is closed.\n#set ($discard = $xwiki.linkx.use($services.webjars.url(\'bootstrap-switch\', \'css/bootstrap3/bootstrap-switch.min.css\'), {\'type\': \'text/css\', \'rel\': \'stylesheet\'}))\n######################################################\n### MACRO CONTENT\n######################################################\n{{html clean=\"false\"}}\n<div class=\"filterPreferences xform\" data-user-url=\"$escapetool.xml($services.rest.url($xcontext.userReference))\">\n <div class=\"row\">\n <p class=\"xHint col-xs-12 col-sm-9 col-md-8 col-lg-9\">\n $escapetool.xml($services.localization.render(\'notifications.settings.filters.preferences.hint\'))\n </p>\n <div class=\"col-xs-12 col-sm-3 col-md-4 col-lg-3 text-right\">\n <button type=\"button\" class=\"btn btn-default btn-addfilter\" data-target=\"#modal-add-filter-preference\" data-toggle=\"modal\">\n <span class=\"fa fa-plus\"></span> $escapetool.xml($services.localization.render(\'notifications.settings.addFilter\'))\n </button>\n </div>\n </div>\n #set($collist = [\'name\', \'filterType\', \'eventTypes\', \'notificationFormats\', \'isEnabled\', \'_actions\'])\n #set($colprops = {\n \'name\': { \'sortable\': false, \'html\': true, \'filterable\': false },\n \'filterType\': { \'sortable\': false, \'filterable\': false },\n \'eventTypes\': { \'sortable\': false, \'html\': true, \'filterable\': false },\n \'notificationFormats\': { \'sortable\': false, \'html\': true, \'filterable\': false },\n \'isEnabled\': { \'sortable\': false, \'html\' : true, \'filterable\': false },\n \'_actions\': { \'sortable\': false, \'actions\': [\'delete\'], \'filterable\': false}\n })\n #set($options = {\n \'resultPage\' : \'XWiki.Notifications.Code.NotificationFilterPreferenceLivetableResults\',\n \'rowCount\' : 10,\n \'description\' : \'This table lists every filter registered for the current user.\',\n \'translationPrefix\' : \'notifications.settings.filters.preferences.table.\',\n \'extraParams\' : \"eventType=&format=&user=${services.model.serialize($xcontext.userReference, \'default\')}\",\n \'outputOnlyHtml\' : true\n })\n\n #livetable(\"notificationFilterPreferencesLiveTable\" $collist $colprops $options)\n</div>\n######################################################\n### ADD FILTER MODAL\n######################################################\n<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" id=\"modal-add-filter-preference\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\n <div class=\"modal-title\">$escapetool.xml($services.localization.render(\'notifications.settings.addFilter\'))</div>\n </div>\n <div class=\"modal-body\">\n <div class=\"xform\">\n <dl class=\"location-picker\">\n <dt>\n <label for=\"notificationFilterTypeSelector\">$escapetool.xml($services.localization.render(\'notifications.filters.type.label\'))</label>\n <span class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.filters.type.hint\'))</span>\n </dt>\n <dd>\n <select id=\"notificationFilterTypeSelector\" name=\"notificationFilterTypeSelector\" size=\"1\">\n <option value=\"inclusive\" selected=\"selected\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.filterType.inclusive\'))</option>\n <option value=\"exclusive\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.filterType.exclusive\'))</option>\n </select>\n </dd>\n <dt>\n <label for=\"notificationFilterNotificationFormatSelector\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.notificationFormat.label\'))</label>\n <span class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.notificationFormat.hint\'))</span>\n </dt>\n <dd>\n <select id=\"notificationFilterNotificationFormatSelector\" name=\"notificationFilterNotificationFormatSelector\" size=\"2\" multiple>\n <option value=\"alert\" selected=\"selected\">$escapetool.xml($services.localization.render(\'notifications.format.alert\'))</option>\n <option value=\"email\">$escapetool.xml($services.localization.render(\'notifications.format.email\'))</option>\n </select>\n </dd>\n <dt>\n <label for=\"notificationFilterEventTypeSelector\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.eventType.label\'))</label>\n <span class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.eventType.hint\'))</span>\n </dt>\n <dd>\n <select id=\"notificationFilterEventTypeSelector\" name=\"notificationFilterEventTypeSelector\" size=\"5\" multiple>\n #foreach ($app in $apps)\n #set ($type = $app[0])\n <optgroup label=\"$escapetool.xml($type.applicationName)\">\n #foreach($descriptor in $app)\n <option value=\"$escapetool.xml($descriptor.eventType)\">$escapetool.xml($services.localization.render($descriptor.description))</option>\n #end\n </optgroup>\n #end\n </select>\n </dd>\n <dt>\n <label>$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.location.label\'))</label>\n <span class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.filters.preferences.addPreference.location.hint\'))</span>\n </dt>\n <dd class=\"document-tree\">\n #documentTree({\n \'class\': \'location-tree\',\n \'finder\': true,\n \'showAttachments\': false,\n \'showRoot\': false,\n \'showTerminalDocuments\': true,\n \'showTranslations\': false,\n \'showWikis\': true\n })\n </dd>\n </dl>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-default\" data-action=\"cancel\" data-dismiss=\"modal\">$services.localization.render(\'notifications.filters.cancel\')</button>\n <button type=\"button\" class=\"btn btn-primary\" data-action=\"submit\" disabled=\"disabled\">$services.localization.render(\'notifications.filters.submit\')</button>\n </div>\n </div><!-- /.modal-content -->\n </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->\n{{/html}}\n#end\n{{/velocity}}'),(1453799767698074445,'contentDescription',''),(1453799767698074445,'contentJavaType',''),(1453799767698074445,'description','Display the preferences of the current user about notification filters.'),(1496583465937542272,'code','#includeMacros(\'Macros\')\n\ndefine([\'jquery\'], function ($) {\n var codeMirrors = [];\n var theme = \'default\';\n\n /**\n * Initialize a CodeMirror instance and add it to the list of instances.\n * @param propertyPattern : the CSS selector for the textarea to wrap with a CodeMirror instance.\n * @param codeMirrorMode : the mode that will be used by this CodeMirror instance (\'css\', \'javascript\', etc.)\n */\n var initCodeMirror = function (propertyPattern, codeMirrorMode, parameters) {\n //\n // Attach codeMirrors to all the elements matched with the propertyPattern.\n //\n var textareas = $$(propertyPattern);\n for (var i = 0; i<textareas.length; ++i) {\n var textarea = textareas[i];\n // If the textarea is not visible, like the object editor\'s textareas are when they are not expanded, delay the initialization\n if (textarea.offsetWidth > 0 || textarea.offsetHeight > 0) {\n initSingleCodeMirror(textarea, codeMirrorMode, parameters);\n } else {\n var objectDiv = textarea.up(\'.xobject\');\n if (!objectDiv) {\n // We only know how to handle hidden text areas in the object editor.\n return;\n }\n\n // Hack: since we are not using a static listener, but a custom one for each instance (through the bind method by curry-ing parameter values to it),\n // we`re currying the \"this\" (first) parameter to a dummy object that is empty at curry time, but which is then made the container of the generated\n // listener. This way, the listener will be able to have access to itself, in it\'s curryed form (so that it can unregister itself once it executes);\n var dummy = {};\n var listener = lazyInitObjectEditorCodeMirrors.bindAsEventListener(dummy, objectDiv, textarea, codeMirrorMode);\n dummy.listener = listener;\n\n objectDiv.observe(\'click\', listener);\n }\n }\n }\n\n var initSingleCodeMirror = function (textarea, codeMirrorMode, extraAddons) {\n // FIXME: Until a better way comes up, we`ll just reuse the xwiki 2.1 syntax mode for 2.0 as well.\n // We also have to remove / and . from the mode name because of WIKIEDITOR-29\n if (codeMirrorMode == \'xwiki/2.0\' || codeMirrorMode == \'xwiki/2.1\') {\n codeMirrorMode = \'xwiki21\';\n }\n\n var modeDependency = configureRequireJsPaths(codeMirrorMode);\n\n // Load any configured theme.\n if (theme !== \'default\') {\n var themeCSS = \"theme/\"+theme+\".css\";\n var themeURL = \"${codeMirrorBaseURL}\"+themeCSS;\n loadCSS(themeURL);\n }\n\n var requirePaths = [], extraParameters = {};\n if(extraAddons) {\n requirePaths = extraAddons[0];\n extraParameters = extraAddons[1];\n }\n\n // TODO: Make all these addons requirements configurable and read the global or user configuration when\n // including them in the list of dependencies. i.e. if the user/admin does not need them, do not require them.\n require($.merge([\'SyntaxHighlighting_cm/lib/codemirror\',\n /** Modes **/\n modeDependency,\n /** Addons **/\n // Match highlighting\n \'SyntaxHighlighting_cm/addon/search/match-highlighter\',\n // Enable brackets matching\n \'SyntaxHighlighting_cm/addon/edit/matchbrackets\',\n // Active line highlighting\n \'SyntaxHighlighting_cm/addon/selection/active-line\',\n // Continue C-like block comments on a new line\n \'SyntaxHighlighting_cm/addon/comment/continuecomment\',\n // Auto-close brackets and quotes\n \'SyntaxHighlighting_cm/addon/edit/closebrackets\',\n // Show trailing empty whitespaces\n \'SyntaxHighlighting_cm/addon/edit/trailingspace\',\n // Search support\n \'SyntaxHighlighting_cm/addon/search/search\',\n // Displays search result locations on the scrollbar\n \'SyntaxHighlighting_cm/addon/search/matchesonscrollbar\'\n ], requirePaths), function (CodeMirror) {\n // console.log(\'Initializing CodeMirror instance...\');\n\n // Enable optional autocomplete support.\n var autocompleteSupportModule = new XWiki.Document(\'Autocomplete\', \'SyntaxHighlighting\').getURL(\'jsx\', \"minify=$!{services.debug.minify}\");\n // console.log(\'Loading autocomplete support to module: \' + autocompleteSupportModule);\n\n require([autocompleteSupportModule], function () {\n // console.log(\'Autocomplete support module loaded: \' + autocompleteSupportModule);\n }, function (err) {\n var failedId = err.requireModules && err.requireModules[0];\n if (failedId === autocompleteSupportModule) {\n // console.log(\'Failed to load autocomplete support module: \' + failedId);\n requirejs.undef(failedId);\n } else {\n // Some other error. Maybe show message to the user.\n new XWiki.widgets.Notification(\'Autocompletion failed to load.\', \'error\');\n console.log(err);\n }\n });\n\n // Compute and remember the wrapped textarea\'s width in percentages.\n var textareaWidthPercentage = textarea.getWidth() * 100 / textarea.parentNode.getWidth();\n var textareaHeight = textarea.getHeight();\n\n // Initialize the CodeMirror instance.\n var codeMirror = CodeMirror.fromTextArea(textarea, $.extend(true, {\n \'mode\' : codeMirrorMode,\n \'theme\' : theme,\n \'lineNumbers\' : true,\n \'matchBrackets\' : true,\n // Active line highlighting\n \'styleActiveLine\' : true,\n // Automatically highlight matching words on click.\n \'highlightSelectionMatches\': {showToken: /\\w+/},\n // Continue C-like block comments on a new line.\n \'continueComments\' : true,\n // Auto-close brackets and quotes\n \'autoCloseBrackets\' : true,\n // Show trailing empty whitespaces\n \'showTrailingSpace\' : true,\n extraKeys : {\n // Autocomplete support\n \'Ctrl-Space\' : \'autocomplete\',\n // Mac friendly autocomplete binding\n \'Shift-Ctrl-Space\' : \'autocomplete\',\n // Use whitespaces instead of tabs.\n \'Tab\' : whitespaceIndentation,\n // Fix for findNext because Ctrl-G is not available (already taken by the go to page feature).\n \'F3\' : \'findNext\',\n // Enable persistent search\n \'Alt-F\': \'findPersistent\'\n }\n }, extraParameters));\n\n // Disable the XWiki \"Ctrl+G\" shortcut in input fields so that it can be used in the search box to find the next result\n if(Object.keys(shortcut.all_shortcuts).indexOf(\'ctrl+g\') > 0) {\n var callback = shortcut.all_shortcuts[\'ctrl+g\'].callback;\n shortcut.remove(\'ctrl+g\');\n shortcut.add(\'ctrl+g\', callback, {\n \'disable_in_input\' : true\n });\n }\n\n // Trigger autocomplete while typing, without having to press Ctrl+Space\n codeMirror.on(\'keyup\', function(editor , event) {\n if (event.key == \'.\' || event.key == \'$\') {\n editor.execCommand(\'autocomplete\');\n }\n });\n\n // Save the CodeMirror\'s content to the augmented textarea whenever it looses focus, to keep it up to date.\n codeMirror.on(\'blur\', function(cm) {\n cm.save();\n });\n\n // Listen to changes of the underlying textarea and update the editor to display them to the user.\n $(textarea).on(\'change\', function (event) {\n codeMirror.getDoc().setValue(textarea.value);\n });\n\n // Set the width of the codemirror editor equal to the one of the wrapped textarea. Value is computed before\n // attaching the codemirror instance, otherwise it will not report it correctly since the textarea will be hidden.\n codeMirror.setSize(textareaWidthPercentage + \"%\", textareaHeight);\n\n // console.log(\'CodeMirror instance initialized for mode: \' + codeMirrorMode);\n\n // Track this new instance by adding it to the list of instances.\n codeMirrors.push(codeMirror);\n }, function (err) {\n // Some other error. Log it and notify the user.\n console.log(err);\n new XWiki.widgets.Notification(\'Syntax Highlighting and/or Autocompletion failed to load.\', \'error\');\n });\n }\n\n /**\n * Handles all the wiring needed by requirejs to properly locate codemirror\'s library, modules and the dependencies of those modules.\n *\n * For codeMirror modes, we will be checking 2 locations: the codeMirror directory and wiki pages named by the pattern \"SyntaxHighlighting.HighlightingMode<capitalizedModeName>\"\n *\n * @param codeMirrorMode the mode to configure\n * @returns the configured mode dependency path to use wih requirejs to load the specified codeMirror mode\n */\n var configureRequireJsPaths = function(codeMirrorMode) {\n var codeMirrorWebjarHome = \"$codeMirrorBaseURL\";\n\n // Clear any trailing slash to avoid double slashes in the URL of the webjar\'s dependency paths that may\n // cause problems on sensitive containers.\n if (codeMirrorWebjarHome.match(/\\/$/)) {\n codeMirrorWebjarHome = codeMirrorWebjarHome.substr(0, codeMirrorWebjarHome.length - 1);\n }\n\n // The general path to be used in our modules.\n var pathsConfig = {\n SyntaxHighlighting_cm : codeMirrorWebjarHome\n };\n\n // The location of a mode implementaion in the codemirror package is \"/mode/<modeName>/<modeName>.js\"\n var modeDependency = \'SyntaxHighlighting_cm/mode/\' + codeMirrorMode + \'/\' + codeMirrorMode;\n // console.log(\"Mode dependency: \" + modeDependency);\n\n // Compute a fallback for custom modes defined by us in wiki pages.\n var capitalizedModeName = codeMirrorMode.charAt(0).toUpperCase() + codeMirrorMode.substring(1);\n var modeDocName = \'HighlightingMode\' + capitalizedModeName;\n // Note: Remember to always pass a query parameter (even a fake \'discard\' one) just to make sure requirejs does not add any .js suffix to the module\'s path.\n var modeDependencyFallback = new XWiki.Document(modeDocName, \'SyntaxHighlighting\').getURL(\'jsx\', \"minify=$!{services.debug.minify}\");\n\n /*\n * Configure a path for the current mode.\n */\n\n // Start by adding the fallback.\n pathsConfig[modeDependency] = [modeDependencyFallback];\n // This is a hack to improve performance and avoid useless failures for the xwiki mode, which we will be using a lot.\n // Basically, the XWiki mode is defined in the fallback location (wiki page) so no need to look in the codemirror directory.\n if (codeMirrorMode != \'xwiki21\') {\n // Any other mode has to go through a fallback mechanism.\n var codeMirrorModeDependency = codeMirrorWebjarHome + \'/mode/\' + codeMirrorMode + \'/\' + codeMirrorMode;\n // We have already added the fallback, now we are prepeding the list of lookup locations with the codeMirror directory, since it should be checked first.\n pathsConfig[modeDependency].unshift(codeMirrorModeDependency);\n }\n\n // Set the configured paths.\n require.config({\n paths: pathsConfig,\n // At least until http://jira.xwiki.org/browse/WIKIEDITOR-21 is fixed, a greater wait time should avoid timeouts.\n waitSeconds: 60\n });\n\n return modeDependency;\n }\n\n /* Inject an extra stylesheet into the current DOM using the given location. */\n var loadCSS = function(url) {\n // Stop here if the stylesheet is already loaded\n if ($$(\"head link[href=\'\" + url + \"\']\").length != 0) {\n return;\n }\n\n var link = document.createElement(\'link\');\n link.type = \"text/css\";\n link.rel = \"stylesheet\";\n link.href = url;\n\n document.getElementsByTagName(\'head\')[0].appendChild(link);\n }\n\n /*\n * Listener that initializes a CodeMirror instance only once and then unregistes itself.\n */\n var lazyInitObjectEditorCodeMirrors = function (event, observedElement, textarea, codeMirrorMode) {\n initSingleCodeMirror(textarea, codeMirrorMode);\n\n /* Remove the listener so that it is triggered only once */\n observedElement.stopObserving(\'click\', this.listener);\n }\n\n /* Uses whitespaces instead of tabs for indentation. */\n // See https://github.com/codemirror/CodeMirror/issues/988#issuecomment-14921785\n // TODO: see if there is a better way to do this in the new 5.1 version since this solution is old (3.14).\n var whitespaceIndentation = function(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.replaceSelection(cm.getOption(\"indentWithTabs\") ? \"\\t\" : Array(cm.getOption(\"indentUnit\") + 1).join(\" \"), \"end\", \"+input\");\n }\n }\n\n /* Change the theme used by CodeMirror */\n var setTheme = function(newTheme) {\n theme = newTheme;\n }\n\n return {\n codeMirrors : codeMirrors,\n setTheme : setTheme,\n initCodeMirror : initCodeMirror\n }\n});'),(1584035942069553573,'groups','XWiki.XWikiAllGroup'),(1584035942069553573,'users',''),(1590658503135771569,'code','.users .itemName .user {\n display: block;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}'),(1624299346984804931,'longText1','[[image:poster.png||width=\"64\"]]'),(1624299346984804931,'staticList1','comedy|drama'),(1638914130868764853,'spaces',''),(1741270459132428756,'html','<p>Guten Tag ${recipientName},</p>\n\n <p><strong>${xwiki.getUserName($context.user)}</strong> möchte Sie auf das Dokument <a href=\"${doc.getExternalURL()}\">$!{escapetool.xml(${doc.displayTitle})}</a> hinweisen.</p>\n\n #if (\"$!{message}\" != \'\')\n <p>Nachricht von $xwiki.getUserName($context.user, false):</p>\n\n <pre style=\"border: 1px solid #000; padding: 10px; font-size: 130%;\">\n $!{escapetool.xml($message)}\n </pre>\n #end\n\n <p>Um das Dokument online zu sehen, öffnen Sie <a href=\"${doc.getExternalURL()}\">${doc.getExternalURL()}</a> in Ihrem Browser.</p>\n\n #if ($services.watchlist)\n <p>Darüber hinaus können Sie <a href=\"${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\">dieses Dokument in die Abonnementsliste hinzufügen</a> und benachrichtigt werden, wenn jemand es modifiziert.</p>\n #end\n\n #if ($display == \'inline\')\n\n <p>Inhalt des Dokumentes:</p>\n\n <h1>${doc.displayTitle}</h1>\n <div style=\"border: 1px solid #000; padding: 10px;\">\n\n $doc.getRenderedContent()\n </div>\n\n #end\n\n <hr />\n <p>Dies Nachricht ist generiert worden vom Wiki ${request.serverName} im Auftrag von ${xwiki.getUserName($context.user)}.</p>'),(1741270459132428756,'text','Guten Tag ${recipientName},\n\n ${xwiki.getUserName($context.user, false)} möchte Sie auf das Dokument \"$!{escapetool.xml(${doc.displayTitle})}\" (${doc.getExternalURL()}) hinweisen.\n\n #if (\"$!{message}\" != \'\')\n Nachricht von $xwiki.getUserName($context.user, false):\n\n -----------------------------------------------------\n $!{escapetool.xml($message)}\n -----------------------------------------------------\n #end\n\n Um das Dokument online zu sehen, öffnen Sie ${doc.getExternalURL()} in Ihrem Browser.\n\n #if ($services.watchlist)\n Darüber hinaus können Sie dieses Dokument in die Abonnementsliste hinzufügen und benachrichtigt werden, wenn jemand es modifiziert. Um dies zu tun, öffnen Sie den folgenden Link in Ihren Browser: ${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\n #end\n\n #if ($display == \'inline\')\n\n Inhalt des Dokumentes:\n\n -----------------------------------------------------\n $doc.getRenderedContent()\n\n #end\n\n -----------------------------------------------------\n Dies Nachricht ist generiert worden vom Wiki ${request.serverName} im Auftrag von ${xwiki.getUserName($context.user, false)}.'),(1753171906586447188,'code','.videoCard {\n box-shadow: 0 1px 2px 0 rgba(0,0,0,0.3);\n margin: 1px 0 29px;\n\n iframe {\n border: 0 none;\n width: 100%;\n }\n\n ul {\n font-size: .8em;\n list-style-position: inside;\n margin: 6px 0;\n padding-left: 0;\n }\n}\n\n.videoCard-body {\n padding: 6px 10px;\n}\n\n.videoCard-footer {\n border-top: 1px solid #eaeaea;\n font-size: .9em;\n padding: 8px 10px;\n}\n\n.videoCard-duration {\n border-left: 1px solid #eaeaea;\n color: @text-muted;\n float: right;\n padding-left: 10px;\n}'),(1800063283134831070,'async_context',''),(1800063283134831070,'content',''),(1800063283134831070,'parameters','tip=$services.localization.render(\'help.tipsPanel.jumpToPageTip\')'),(1831164144256247330,'code','#template(\'colorThemeInit.vm\')\n/***********************************************\n * Notifications Header\n ***********************************************/\n.notifications-count {\n background-color: red;\n opacity: 0.9;\n position: absolute;\n margin-left: 1.6em;\n top: 0;\n}\n\n@media (min-width: 768px) {\n .notifications-count {\n top: 3px;\n }\n}\n\n.notifications-header-uix {\n text-align: right;\n padding-bottom: 0.8em;\n}\n\n.notifications-header-link {\n white-space: nowrap;\n}\n\n/***********************************************\n * Notification Toggles\n ***********************************************/\n.notifications-toggles {\n text-align: center;\n max-width: 320px;\n}\n\n.notifications-toggles .bootstrap-switch {\n margin: 0 3px 0 3px;\n}\n\n.notifications-toggles .bootstrap-switch .bootstrap-switch-label {\n background-image: linear-gradient($theme.buttonSecondaryGradientColor, $theme.buttonSecondaryBackgroundColor 50%);\n color: $theme.buttonSecondaryTextColor;\n}\n\n/***********************************************\n * Notification Area\n ***********************************************/\n.notifications-area {\n margin-top: 10px;\n max-height: 600px;\n min-height: 20px;\n overflow-x: hidden;\n overflow-y: scroll;\n /* 320px is the width of the smallest smartphones right now, so we don\'t use a larger width */\n width: 320px;\n}'),(1861998981286238802,'async_context',''),(1861998981286238802,'content',''),(1861998981286238802,'parameters','label=$services.localization.render(\'tour.app.name\')\ntarget=Tour.WebHome\nicon=icon:information'),(1863209619509869037,'description','Show only the wiki, space and document nodes for which the current user has view right. If this is set to false then the wiki, space and document nodes that are not viewable by the current user are listed in the tree using their names. The user won\'t be able to see their content by following their links though (the user will just be aware of their existence).'),(1973129881598280281,'codeToExecute','{{include reference=\"WikiManager.AdminWikisRightsSheet\" /}}'),(2022573344469648541,'query','fq=type:DOCUMENT\nfq=hidden:true\nfq=class:XWiki.XWikiServerClass\nqf=property.XWiki.XWikiServerClass.wikiprettyname'),(2036016232511369219,'codeToExecute','{{include reference=\"Mail.GeneralMailConfigSheet\" /}}'),(2045939008902031882,'async_context',''),(2045939008902031882,'content','{{velocity}}\n#panelheader($services.localization.render(\'panels.children.title\'))\n## Escape special characters in macro parameter values.\n#set ($openTo = $services.model.serialize($doc.documentReference, \'default\').replaceAll(\'([~\"])\', \'~$1\'))\n{{documentTree showTranslations=\"false\" showAttachments=\"false\" compact=\"true\" root=\"document:$openTo\" /}}\n#panelfooter()\n{{/velocity}}'),(2045939008902031882,'description','Displays all Child pages of the current page'),(2065499440476739869,'description','Only lists documents found in the passed space'),(2078775879480085453,'code','#template(\'colorThemeInit.vm\')\n#fields .staticListEditor {\n position: relative;\n}\n\n#fields .staticListEditor ul {\n font-size: 90%;\n margin: 0;\n}\n\n#fields .staticListEditor li {\n background-color: #F7F7F7;\n border: 1px solid $theme.borderColor;\n cursor: move;\n display: inline-block;\n margin: 0 0.2em 0.2em 0;\n min-height: 0;\n padding: 0.1em 0.6em;\n}\n\n#fields .staticListEditor li:hover {\n background-color: $theme.highlightColor;\n}\n\n#fields .staticListEditor li .delete {\n color: $theme.pageContentBackgroundColor;\n cursor: pointer;\n font-size: 70%;\n font-weight: bold;\n position: absolute;\n text-decoration: none !important;\n vertical-align: super;\n}\n\n#fields .staticListEditor li:hover .delete {\n color: $theme.textPrimaryColor;\n}\n\n#fields .staticListEditor li .delete:hover {\n color: $theme.notificationErrorColor;\n}\n\n#fields .staticListEditor .inputLine {\n line-height; normal;\n margin-right: 16px;\n}\n\n#fields .staticListEditor .inputLine .xHint {\n margin-bottom: 0.2em;\n}\n\n#fields .staticListEditor .inputLine .half {\n display: inline-block;\n width: 49.5%;\n}\n\n#fields .staticListEditor .inputLine .second.half {\n margin-left: 0.5%;\n}\n\n#fields .staticListEditor .add {\n bottom: 0;\n margin-bottom: 2px;\n position: absolute;\n right: 0;\n}'),(2128030505550547222,'code','ul.followed-users {\n list-style-type: none;\n padding: 0;\n}'),(2167943413273420399,'async_context',''),(2167943413273420399,'content',''),(2167943413273420399,'parameters','label=#if ($hasAdmin)$services.localization.render(\'invitation.applicationsPanelEntryLabel\')#end\ntarget=Invitation.WebHome\nicon=icon:drink'),(2229833084426993917,'codeToExecute','{{include reference=\"AnnotationCode.AnnotationConfigSheet\" /}}'),(2271655599196492786,'async_context',''),(2271655599196492786,'content',''),(2271655599196492786,'parameters','label=$services.localization.render(\'scheduler.applicationsPanelEntryLabel\')\ntarget=Scheduler.WebHome\nicon=icon:clock'),(2279776107228674949,'groups','xwiki:XWiki.XWikiAllGroup'),(2279776107228674949,'users',''),(2285457351792650533,'description','Whether to show the root node or not. The root node is not shown by default because it is usually implied from the context where the tree is displayed (e.g. a label before the tree). There are some cases though when you may want to display the root node: to be able to create a new node under the root.'),(2327424357301704235,'spaces',''),(2340271235697290149,'description','Specifies whether the node labels should look and behave as links (anchors).'),(2375169284962657693,'async_context',''),(2375169284962657693,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.tagcloud.title\'))\n{{include reference=\"XWiki.TagCloud\"/}}\n#panelfooter()\n{{/velocity}}'),(2375169284962657693,'description',''),(2383816361186873083,'code','{{include reference=\"CKEditor.SyntaxContentEditor\"/}}'),(2411480017114698187,'description',''),(2480508117085841044,'description','The list of nodes to exclude from the tree. The nodes are specified by their id and separated by comma.'),(2565425069674253556,'code','.itemActions .tool {\n width: 16px;\n height: 16px;\n margin: 0 2px;\n float: left;\n text-indent: -1000em;\n overflow: hidden;\n background: transparent no-repeat center center;\n}\n.itemActions .delete {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/cross.png\')\") !important;\n}\n.itemActions .restore {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/arrow_refresh.png\')\") !important;\n}\n.itemActions .cannot-restore {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/page_error.png\')\") !important;\n}'),(2590957635104804674,'codeToExecute','{{include reference=\"WikiManager.AdminWikiDescriptorSheet\" /}}'),(2606437970141537991,'description','The id of the node to open the tree to. All the ancestors of the specified node, up to the root of the tree, will be opened also. The format of the node id is the one used for the root parameter.'),(2675553673466625926,'code','#actionBox {\n width: 13.4em;\n}\n\n#actionBox h1 {\n margin: 0 0 .5em 0;\n}\n\n#actionBox ul {\n list-style: none outside none;\n margin: 0;\n padding: 0;\n}\n\n#actionBox .action {\n background: none no-repeat scroll 0 center transparent;\n display: block;\n font-size: .8em;\n padding: .3em .3em .3em 20px;\n text-transform: uppercase;\n}\n\n#actionBox .action.edit {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/application_edit.png\')\");\n}\n\n#actionBox .action.translate {\n background-image: url(\"$doc.getAttachmentURL(\'locate.png\')\");\n}\n\n#actionBox .action.delete {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/application_delete.png\')\");\n}\n\n#actionBox .action.deleteData {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/application_form_delete.png\')\");\n}\n\n#actionBox .action.add {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/add.png\')\");\n}\n\n#entryNamePopup {\n margin-right: 20px;\n}\n\n#entryNamePopup input[type=text] {\n width: 99%;\n}\n\n#entryNamePopup input[type=image] {\n margin: .3em .5em;\n padding: 0;\n position: absolute;\n}\n\n.xwiki-livetable-container {\n /* Make sure the live table doesn\'t overflow the action panel. */\n clear: right;\n}\n\n/**\n * Rename Application\n */\n#renameAppTitle.loading {\n background-position: right .3em center;\n padding-left: 12px;\n padding-right: 2em;\n}'),(2706750404654345339,'description','Whether to show the wiki nodes or not. This can be used only on the main wiki and if the tree source has been saved with programming rights.'),(2754208025087213645,'codeToExecute',''),(2754224542456970550,'description',''),(2805232388584922743,'code','require([\'jquery\'], function($) {\n // Handler for saving the custom engine\'s value in the \"custom\" select\'s option when submitting\n // the JCaptcha settings form, since the first value is always used when multiple values are given.\n $(\'form.jcaptcha\').submit(function(e) {\n var customOption = $(\'input.customActivator\');\n if (customOption.is(\':checked\')) {\n var customInput = $(\'.customEngine\');\n customOption.val(customInput.val());\n }\n })\n\n // Handler for changing the engine type.\n $(\'#XWiki\\\\.Captcha\\\\.JCaptcha\\\\.ConfigurationClass_0_type\').change(function(e) {\n // Hide all engines except the ones for the new type.\n $(\'.jcaptcha .engine\').addClass(\'hidden\');\n $(\'.jcaptcha .engine.\' + this.value).removeClass(\'hidden\');\n\n // Check the first option for the new type.\n $(\'.jcaptcha .engine:visible:first input\').prop(\'checked\', true);\n\n // Clear the custom value since it will not match the new type.\n $(\'.customEngine\').val(\'\');\n })\n});'),(2818467494595032945,'codeToExecute',''),(2824806279857424438,'javamail_extra_props',''),(2824806279857424438,'ldap_fields_mapping',''),(2824806279857424438,'ldap_group_mapping',''),(2825488342842783933,'content','{{notifications useUserPreferences=\"false\" displayOwnEvents=\"true\" displayRSSLink=\"true\" /}}'),(2832372176651909060,'description','Show only the documents that have an object of the specified type. The value of this parameter is the full name of an XWiki document that holds a class definition. For example, \'Blog.CategoryClass\' can be used to show only the documents that represent blog categories. Leave this parameter empty if you don\'t want to restrict the type of documents shown in the tree.'),(2851495082505687224,'codeToExecute',''),(2859801305721084207,'async_context',''),(2859801305721084207,'content','{{velocity}}\n#set ($backlinks = $doc.getBacklinks())\n#set ($previousDoc = \'\')\n#set ($backlinkDocs = [])\n#foreach ($docname in $backlinks)\n #if ($docname != $previousDoc)\n #set ($backlinkDoc = $xwiki.getDocument($docname).getTranslatedDocument())\n #if ($backlinkDoc && !$blacklistedSpaces.contains($backlinkDoc.space))\n #set ($discard = $backlinkDocs.add($backlinkDoc))\n #end\n #end\n #set ($previousDoc = $docname)\n#end\n#if ($backlinkDocs.size() > 0 || $showEmptyPanels)\n #panelheader($services.localization.render(\'docextra.backlinks\'))\n #foreach ($backlinkDoc in $backlinkDocs)\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in document title.\n * {{html}}<a href=\"$backlinkDoc.getURL()\">$escapetool.xml($backlinkDoc.plainTitle)</a>{{/html}}\n #end\n #panelfooter()\n#end\n{{/velocity}}'),(2859801305721084207,'description','List all pages having links to the page being viewed. Displays nothing if there are no links to the page being viewed.'),(2903437412763351656,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.panels.contentA\')\n\n\n$services.localization.render(\'tour.homepageTour.panels.contentB\')\n{{/velocity}}'),(2907228365993253460,'content','{{velocity}}\n$services.localization.render(\'tour.homepageTour.welcome.content\')\n{{/velocity}}'),(2911929781640231749,'description','Simple application to manage a list of movies. If you want to know where the movie directors are defined, check the [[Contributors>>Help.Applications.Contributors.WebHome]] application.'),(2912476033760597450,'async_context',''),(2912476033760597450,'content',''),(2912476033760597450,'parameters','label=$services.localization.render(\'xe.panels.quicklinks.userdirectory\')\ntarget=Main.UserDirectory\nicon=icon:group'),(2954648587304094412,'description','The alternate text of the displayed image, only taken into account if displayImage=true'),(3009128768694712626,'lessCode','// Yeti 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: #6f6f6f; // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #008cba;\n@brand-success: #43ac6a;\n@brand-info: #5bc0de;\n@brand-warning: #E99002;\n@brand-danger: #F04124;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray-darker;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: 12px; // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.4;\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 300;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 16px;\n@padding-large-horizontal: 20px;\n\n@padding-small-vertical: 8px;\n@padding-small-horizontal: 12px;\n\n@padding-xs-vertical: 4px;\n@padding-xs-horizontal: 6px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 0;\n@border-radius-large: 0;\n@border-radius-small: 0;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: @gray-dark;\n@btn-default-bg: #e7e7e7;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @gray;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: rgba(0,0,0,.2);\n\n//** Dropdown link text color.\n@dropdown-link-color: #555;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: #eee;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 45px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #fff;\n@navbar-default-bg: @gray-dark;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: #272727;\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: #272727;\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-brand-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: transparent;\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-active-color: #fff;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: transparent;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: transparent;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: @table-border-color;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: @table-border-color;\n\n@nav-tabs-justified-link-border-color: @table-border-color;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: transparent;\n@pagination-border: transparent;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: transparent;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: transparent;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: transparent;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 3px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: #fafafa;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: @brand-success;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(@state-success-text, 5%);\n\n@state-info-text: @brand-info;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(@state-info-text, 7%);\n\n@state-warning-text: @brand-warning;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(@state-warning-text, 5%);\n\n@state-danger-text: @brand-danger;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(@state-danger-text, 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: @gray-dark;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: @gray-dark;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: transparent;\n//** Popover fallback border color\n@popover-fallback-border-color: @gray-dark;\n\n//** Popover title background color\n@popover-title-bg: @popover-bg;\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @brand-success;\n@alert-success-text: #fff;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @brand-info;\n@alert-info-text: #fff;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @brand-warning;\n@alert-warning-text: #fff;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @brand-danger;\n@alert-danger-text: #fff;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: @table-border-color;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: @table-border-color;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: @table-border-color;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: #fff;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: #fff;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: #fff;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: #fff;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: @table-border-color;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @jumbotron-bg;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @btn-primary-bg;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: @gray-light;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-dark;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #fff;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @table-border-color;\n//** Page header border color\n@page-header-border-color: @table-border-color;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @table-border-color;\n\n// Yeti 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n border: none;\n font-size: 13px;\n font-weight: 300;\n\n .navbar-toggle:hover .icon-bar {\n background-color: #b3b3b3;\n }\n\n &-collapse {\n border-top-color: @dropdown-divider-bg;\n .box-shadow(none);\n }\n\n .btn {\n padding-top: 6px;\n padding-bottom: 6px;\n }\n\n &-form {\n margin-top: 7px;\n margin-bottom: 5px;\n\n .form-control {\n height: auto;\n padding: @padding-xs-vertical @padding-xs-horizontal;\n }\n }\n\n .dropdown {\n\n &-menu {\n border: none;\n\n > li > a,\n > li > a:focus {\n background-color: transparent;\n font-size: 13px;\n font-weight: 300;\n }\n }\n\n &-header {\n color: rgba(255, 255, 255, 0.5);\n }\n\n }\n\n &-default {\n\n .dropdown-menu {\n background-color: @navbar-default-bg;\n\n > li > a,\n > li > a:focus {\n color: @navbar-default-color;\n }\n\n > li > a:hover,\n > .active > a,\n > .active > a:hover {\n background-color: @navbar-default-link-hover-bg;\n }\n }\n }\n\n &-inverse {\n\n .dropdown-menu {\n background-color: @navbar-inverse-bg;\n\n > li > a,\n > li > a:focus {\n color: @navbar-inverse-color;\n }\n\n > li > a:hover,\n > .active > a,\n > .active > a:hover {\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n padding: @padding-base-vertical @padding-base-horizontal;\n\n &-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n }\n\n &-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n }\n\n &-xs {\n padding: @padding-xs-vertical @padding-xs-horizontal;\n }\n}\n\n.btn-group {\n\n .btn ~ .dropdown-toggle {\n padding-left: 16px;\n padding-right: 16px;\n }\n\n .dropdown-menu {\n border-top-width: 0;\n }\n\n &.dropup .dropdown-menu {\n border-top-width: 1px;\n border-bottom-width: 0;\n margin-bottom: 0;\n }\n\n .dropdown-toggle {\n\n &.btn-default ~ .dropdown-menu {\n background-color: @btn-default-bg;\n border-color: @btn-default-border;\n\n > li > a {\n color: @btn-default-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-default-bg, 8%);\n }\n }\n\n &.btn-primary ~ .dropdown-menu {\n background-color: @btn-primary-bg;\n border-color: @btn-primary-border;\n\n > li > a {\n color: @btn-primary-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-primary-bg, 8%);\n }\n }\n\n &.btn-success ~ .dropdown-menu {\n background-color: @btn-success-bg;\n border-color: @btn-success-border;\n\n > li > a {\n color: @btn-success-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-success-bg, 8%);\n }\n }\n\n &.btn-info ~ .dropdown-menu {\n background-color: @btn-info-bg;\n border-color: @btn-info-border;\n\n > li > a {\n color: @btn-info-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-info-bg, 8%);\n }\n }\n\n &.btn-warning ~ .dropdown-menu {\n background-color: @btn-warning-bg;\n border-color: @btn-warning-border;\n\n > li > a {\n color: @btn-warning-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-warning-bg, 8%);\n }\n }\n\n &.btn-danger ~ .dropdown-menu {\n background-color: @btn-danger-bg;\n border-color: @btn-danger-border;\n\n > li > a {\n color: @btn-danger-color;\n }\n\n > li > a:hover {\n background-color: darken(@btn-danger-bg, 8%);\n }\n }\n }\n}\n\n// Typography =================================================================\n\n.lead {\n color: @gray;\n}\n\ncite {\n font-style: italic;\n}\n\nblockquote {\n border-left-width: 1px;\n color: @gray;\n\n &.pull-right {\n border-right-width: 1px;\n }\n\n small {\n font-size: @font-size-small;\n font-weight: 300;\n }\n}\n\n// Tables =====================================================================\n\ntable {\n font-size: @font-size-small;\n}\n\n// Forms ======================================================================\n\nlabel,\n.control-label,\n.help-block,\n.checkbox,\n.radio {\n font-size: @font-size-small;\n font-weight: normal;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin-top: 1px;\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: transparent;\n }\n}\n\n.nav-tabs {\n > li > a {\n background-color: @btn-default-bg;\n color: @text-color;\n }\n\n .caret {\n border-top-color: @text-color;\n border-bottom-color: @text-color;\n }\n}\n\n.nav-pills {\n font-weight: 300;\n}\n\n.breadcrumb {\n border: 1px solid @table-border-color;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 300;\n text-transform: uppercase;\n}\n\n.pagination {\n font-size: @font-size-small;\n font-weight: 300;\n color: @gray-light;\n\n > li {\n > a,\n > span {\n margin-left: 4px;\n color: @gray-light;\n }\n }\n\n > .active {\n > a,\n > span {\n color: #fff;\n }\n }\n\n > li,\n > li:first-child,\n > li:last-child {\n > a,\n > span {\n border-radius: 3px;\n }\n }\n\n &-lg > li > a,\n &-lg > li > span {\n padding-left: 22px;\n padding-right: 22px;\n }\n\n &-sm > li > a,\n &-sm > li > span {\n padding: 0 5px;\n }\n}\n\n.pager {\n font-size: @font-size-small;\n font-weight: 300;\n color: @gray-light;\n}\n\n.list-group {\n font-size: @font-size-small;\n font-weight: 300;\n}\n\n// Indicators =================================================================\n\n.close {\n opacity: 0.4;\n text-decoration: none;\n text-shadow: none;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n}\n\n.alert {\n font-size: @font-size-small;\n font-weight: 300;\n\n .alert-link {\n font-weight: normal;\n color: #fff;\n text-decoration: underline;\n }\n}\n\n.label {\n padding-left: 1em;\n padding-right: 1em;\n border-radius: 0;\n font-weight: 300;\n\n &-default {\n background-color: @btn-default-bg;\n color: @btn-default-color;\n }\n}\n\n.badge {\n font-weight: 300;\n}\n\n// Progress bars ==============================================================\n\n.progress {\n height: 22px;\n padding: 2px;\n background-color: #f6f6f6;\n border: 1px solid #ccc;\n .box-shadow(none);\n}\n\n// Containers =================================================================\n\n.dropdown {\n\n &-menu {\n padding: 0;\n margin-top: 0;\n font-size: @font-size-small;\n\n > li > a {\n padding: 12px 15px;\n }\n }\n\n &-header {\n padding-left: 15px;\n padding-right: 15px;\n font-size: 9px;\n text-transform: uppercase;\n }\n}\n\n.popover {\n color: #fff;\n font-size: 12px;\n font-weight: 300;\n}\n\n.panel {\n &-heading,\n &-footer {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n &-default {\n .close {\n color: @text-color;\n }\n }\n}\n\n.modal {\n .close {\n color: @text-color;\n }\n}'),(3038297481129711436,'code','// Make sure the XWiki \"namespace\" is valid.\nif (typeof(XWiki) == \'undefined\') {\n XWiki = new Object();\n}\n\n/**\n * When the user switches to a different syntax, this component offers the ability to also convert the document content\n * to the new syntax, if a valid converter is available on the server.\n */\nXWiki.SyntaxConverter = Class.create({\n /**\n * Valid syntaxes as the initial content syntax. If the originally selected syntax is not among these, then a\n * conversion is not proposed.\n *\n * Note that we get the list of parser syntaxes dynamically from the HTML generated by the panel velocity code. If we were\n * not doing this, we would only have a cached list of syntaxes and it wouldn\'t be possible to dynamically register new\n * syntaxes.\n */\n validSourceSyntaxes : JSON.parse($(\'parserSyntaxes\').innerHTML),\n\n /**\n * Valid syntaxes as the target content syntax. If the newly selected syntax is not among these, then a conversion is\n * not proposed.\n *\n * Note that we get the list of renderer syntaxes dynamically from the HTML generated by the panel velocity code. If we were\n * not doing this, we would only have a cached list of syntaxes and it wouldn\'t be possible to dynamically register new\n * syntaxes.\n */\n validTargetSyntaxes : JSON.parse($(\'rendererSyntaxes\').innerHTML),\n\n /**\n * Constructor. If the syntax field is present in the HTML (and it should, as the extension is pulled iff the syntax\n * field is displayed), then adds the custom behavior to that field.\n */\n initialize : function() {\n if ($(\"xwikidocsyntaxinput2\")) {\n this.gatherMembers();\n this.addSyntaxChangeListener();\n }\n },\n\n /**\n * Gather/create the data needed for this component to work.\n */\n gatherMembers : function() {\n this.contentField = $(\'content\');\n this.syntaxField = $(\'xwikidocsyntaxinput2\');\n this.storeNewSyntax();\n var name = $$(\"meta[name=\'document\']\");\n if (name.length > 0) {\n // The meta element holding the document name is present. Use it.\n this.name = name[0].content;\n } else {\n // The metadata is missing, probably an old or custom skin. Try to obtain the document name from the URL.\n if (document.location.pathname.indexOf(\'/edit/\') >= 0) {\n this.name = document.location.pathname.substring(document.location.pathname.indexOf(\'/edit/\') + 6).replace(\"/\", \".\");\n } else {\n // Use the default name, as this is not a critical part.\n this.name = \"Main.WebHome\";\n }\n }\n this.loading = new Element(\"div\").setStyle({backgroundColor: \'#000\', backgroundImage: \'url($xwiki.getSkinFile(\'icons/xwiki/ajax-loader-large.gif\'))\', backgroundPosition: \'center\', backgroundRepeat: \'no-repeat\', opacity: 0.6}).hide();\n document.body.appendChild(this.loading);\n this.loading.absolutize().clonePosition(this.contentField);\n },\n\n /** Add the event listener that triggers the custom behavior when the syntax choice is changed. */\n addSyntaxChangeListener : function() {\n Event.observe(this.syntaxField, \'change\', this.syntaxChanged.bind(this));\n },\n\n /**\n * Callback function triggered when the user selects a new syntax. If the combination of the previously and newly\n * selected syntaxes are a valid combination for converting the content, then send an AJAX request to the server to\n * obtain the converted content from the editor. This data might be newer than what is stored on the server (the user\n * could have made changes), so always convert the current content of the editing area.\n */\n syntaxChanged : function() {\n var syntaxIndex = this.syntaxField.selectedIndex;\n var syntax = this.syntaxField.options.item(syntaxIndex).value;\n if (this.validSourceSyntaxes.indexOf(this.originalSyntax) == -1 || this.validTargetSyntaxes.indexOf(syntax) == -1) {\n // Server does not support this conversion. Simply accept the new syntax.\n } else {\n if (XWiki.editor==\'wysiwyg\') {\n // Conversion in WYSIWYG mode does not yet support conversion of the current content\n if (XWiki.docisnew || confirm(\"$services.localization.render(\'panels.documentInformation.confirmChangeSyntaxWysiwyg\')\")) {\n this.disableEditingArea();\n new Ajax.Request(\n \"$doc.getURL(\'get\')\",\n {\n method: \'post\',\n parameters: {\n action: \'convertSyntax\',\n sheet: \'$doc.fullName\',\n outputSyntax: \'plain\',\n form_token: $$(\'meta[name=form_token]\')[0].content,\n documentName: this.name,\n oldSyntaxId: this.originalSyntax,\n newSyntaxId: syntax\n },\n onSuccess: this.successfulWYSIWYGConversion.bindAsEventListener(this),\n onFailure: this.failedConversion.bindAsEventListener(this),\n onComplete: this.enableEditingArea.bind(this)\n }\n );\n } else {\n this.syntaxField.value = this.originalSyntax;\n }\n } else if (!this.contentField.value.blank()) {\n if (confirm(\"$services.localization.render(\'panels.documentInformation.confirmChangeSyntax\')\")) {\n this.disableEditingArea();\n new Ajax.Request(\n \"$doc.getURL(\'get\')\",\n {\n method: \'post\',\n parameters: {\n action: \'convertSyntax\',\n sheet: \'$doc.fullName\',\n outputSyntax: \'plain\',\n form_token: $$(\'meta[name=form_token]\')[0].content,\n documentName: this.name,\n oldSyntaxId: this.originalSyntax,\n newSyntaxId: syntax,\n content: $(\'content\').value\n },\n onSuccess: this.successfulConversion.bindAsEventListener(this),\n onFailure: this.failedConversion.bindAsEventListener(this),\n onComplete: this.enableEditingArea.bind(this)\n }\n );\n }\n }\n return;\n }\n this.storeNewSyntax();\n },\n\n /**\n * Callback function triggered by a successful response from the server. The converted content should be in the\n * response text. This method re-enables the editing area and sets the new content.\n * \n * @param response The Ajax.Response object, wrapping the HTTP response received from the server.\n */\n successfulConversion : function(response) {\n this.storeNewSyntax();\n var contentField = this.contentField;\n contentField.value = response.responseText.substring(3);\n // Trigger the \'change\' event so that the editor can display changes on the content field.\n // Note: The only way apparently possible for this triggering to work in 2017 is to trigger it with jQuery.\n // Neither PrototypeJS nor standard JavaScript events triggering works from this location (even if it works from the browser\'s console).\n require([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n $(contentField).trigger(\'change\');\n xm.refreshVersion();\n })\n },\n\n /**\n * Callback function triggered by a successful response from the server. The converted content should be in the\n * response text. This method re-enables the editing area and reload the page.\n * \n * @param response The Ajax.Response object, wrapping the HTTP response received from the server.\n * @todo this is a temporary methods waiting for a complete support of synamic unloading/loading of the WYSIWYG.\n */\n successfulWYSIWYGConversion : function(response) {\n this.storeNewSyntax();\n window.location.reload(true);\n },\n\n /**\n * Callback function triggered by a failed response from the server. This method informs the user of the error and\n * re-enables the editing area with the old content and syntax.\n * \n * @param response The Ajax.Response object, wrapping the HTTP response received from the server.\n * @todo The cause of the error should be placed in the context and sent in this response, so that the user can know\n * what exactly prevented the conversion.\n */\n failedConversion : function(response) {\n alert(\"$services.localization.render(\'panels.documentInformation.failedSyntaxConversion\')\");\n this.syntaxField.selectedIndex = this.originalSyntaxIndex;\n },\n\n /**\n * Disable the editing area and the syntax chooser. Also cover the editing area with a busy loading image.\n * \n * @todo How to disable the WYSIWYG editor?\n */\n disableEditingArea : function() {\n this.syntaxField.disabled = true;\n this.contentField.disabled = true;\n this.loading.show();\n },\n\n /**\n * Re-enable the editing area and the syntax chooser.\n * \n * @todo How to enable the WYSIWYG editor?\n */\n enableEditingArea : function() {\n this.syntaxField.disabled = false;\n this.loading.hide();\n this.contentField.disabled = false;\n },\n\n /**\n * Store the new syntax as the source syntax. This allows to change the syntax more than once in the same editing\n * session, and to perform the proper chained conversions.\n */\n storeNewSyntax : function() {\n this.originalSyntaxIndex = this.syntaxField.selectedIndex;\n this.originalSyntax = this.syntaxField.options.item(this.originalSyntaxIndex).value;\n }\n});\n\n// Create the component when the HTML tree is fully loaded.\ndocument.observe(\"xwiki:dom:loaded\", function() { new XWiki.SyntaxConverter(); });'),(3071263456201148754,'description','Show a text input that can be used to find tree nodes. The input is displayed above the tree and offers suggestions as you type based on the content of the tree. When a suggestion is selected the tree is expanded up to the corresponding node.'),(3138020194500855467,'description',''),(3221820786499079656,'code','#notificationFilterPreferencesLiveTable select.pagesizeselect {\n width: auto;\n}'),(3238190113769851441,'code','define([\'SyntaxHighlighting_cm/lib/codemirror\'], function (CodeMirror) {\n CodeMirror.defineMode(\"xwiki21tags\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1;\n\n var Kludges = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false\n };\n\n // Return variables for tokenizers\n var tagName, type;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"{\" && stream.eat(\"{\")) {\n var isClose = stream.eat(\"/\");\n tagName = \"\";\n var c;\n while ((c = stream.eat(/[^\\s\\u00a0={}\\\"\\\'\\/?]/))) tagName += c;\n if (!tagName) return \"error\";\n type = isClose ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag\";\n } else {\n // Wiki syntax parsing should go here.\n\n stream.eatWhile(/[^&{]/);\n return null;\n }\n }\n\n function inTag(stream, state) {\n var ch = stream.next();\n if ( (ch == \"}\" && stream.eat(\"}\")) || (ch == \"/\" && stream.eat(\"}\") && stream.eat(\"}\")) ) {\n state.tokenize = inText;\n type = ch == \"}\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"{\") {\n return \"error\";\n } else if (/[\\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n return state.tokenize(stream, state);\n } else {\n stream.eatWhile(/[^\\s\\u00a0={}\\\"\\\'\\/?]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n };\n }\n\n var curState, curStream, setStyle;\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n\n function pushContext(tagName, startOfLine) {\n var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) || (curState.context && curState.context.noIndent);\n curState.context = {\n prev: curState.context,\n tagName: tagName,\n indent: curState.indented,\n startOfLine: startOfLine,\n noIndent: noIndent\n };\n }\n function popContext() {\n if (curState.context) curState.context = curState.context.prev;\n }\n\n function element(type) {\n if (type == \"openTag\") {\n curState.tagName = tagName;\n curState.tagStart = curStream.column();\n return cont(attributes, endtag(curState.startOfLine));\n } else if (type == \"closeTag\") {\n var err = false;\n if (curState.context) {\n if (curState.context.tagName != tagName) {\n if (Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase())) {\n popContext();\n }\n err = !curState.context || curState.context.tagName != tagName;\n }\n } else {\n err = true;\n }\n if (err) setStyle = \"error\";\n return cont(endclosetag(err));\n }\n return cont();\n }\n function endtag(startOfLine) {\n return function(type) {\n var tagName = curState.tagName;\n curState.tagName = curState.tagStart = null;\n if (type == \"selfcloseTag\" ||\n (type == \"endTag\" && Kludges.autoSelfClosers.hasOwnProperty(tagName.toLowerCase()))) {\n maybePopContext(tagName.toLowerCase());\n return cont();\n }\n if (type == \"endTag\") {\n maybePopContext(tagName.toLowerCase());\n pushContext(tagName, startOfLine);\n return cont();\n }\n return cont();\n };\n }\n function endclosetag(err) {\n return function(type) {\n if (err) setStyle = \"error\";\n if (type == \"endTag\") { popContext(); return cont(); }\n setStyle = \"error\";\n return cont(arguments.callee);\n };\n }\n function maybePopContext(nextTagName) {\n var parentTagName;\n while (true) {\n if (!curState.context) {\n return;\n }\n parentTagName = curState.context.tagName.toLowerCase();\n if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) ||\n !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext();\n }\n }\n\n function attributes(type) {\n if (type == \"word\") {setStyle = \"attribute\"; return cont(attribute, attributes);}\n if (type == \"endTag\" || type == \"selfcloseTag\") return pass();\n setStyle = \"error\";\n return cont(attributes);\n }\n function attribute(type) {\n if (type == \"equals\") return cont(attvalue, attributes);\n if (!Kludges.allowMissing) setStyle = \"error\";\n else if (type == \"word\") setStyle = \"attribute\";\n return (type == \"endTag\" || type == \"selfcloseTag\") ? pass() : cont();\n }\n function attvalue(type) {\n if (type == \"string\") return cont(attvaluemaybe);\n if (type == \"word\" && Kludges.allowUnquoted) {setStyle = \"string\"; return cont();}\n setStyle = \"error\";\n return (type == \"endTag\" || type == \"selfCloseTag\") ? pass() : cont();\n }\n function attvaluemaybe(type) {\n if (type == \"string\") return cont(attvaluemaybe);\n else return pass();\n }\n\n return {\n startState: function() {\n return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, tagStart: null, context: null};\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol()) {\n state.startOfLine = true;\n state.indented = stream.indentation();\n }\n if (stream.eatSpace()) return null;\n\n setStyle = type = tagName = null;\n var style = state.tokenize(stream, state);\n state.type = type;\n if ((style || type) && style != \"comment\") {\n curState = state; curStream = stream;\n while (true) {\n var comb = state.cc.pop() || element;\n if (comb(type || style)) break;\n }\n }\n state.startOfLine = false;\n return setStyle || style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n if ((state.tokenize != inTag && state.tokenize != inText) ||\n context && context.noIndent)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n if (state.tagName) return state.tagStart + indentUnit * multilineTagIndentFactor;\n if (context && /^\\{\\{\\//.test(textAfter))\n context = context.prev;\n while (context && !context.startOfLine)\n context = context.prev;\n if (context) return context.indent + indentUnit;\n else return 0;\n },\n\n compareStates: function(a, b) {\n if (a.indented != b.indented || a.tagName != b.tagName) return false;\n for (var ca = a.context, cb = b.context; ; ca = ca.prev, cb = cb.prev) {\n if (!ca || !cb) return ca == cb;\n if (ca.tagName != cb.tagName) return false;\n }\n },\n\n electricChars: \"/\",\n blockCommentStart: \"{{comment}}\",\n blockCommentEnd: \"{{/comment}}\",\n };\n });\n});'),(3331888260922603525,'edit.vm',''),(3331888260922603525,'footer.vm',''),(3331888260922603525,'header.vm',''),(3331888260922603525,'style.css',''),(3331888260922603525,'view.vm',''),(3331888260922603525,'viewheader.vm',''),(3364239105766980654,'codeToExecute',''),(3379046530607107398,'code','\n#if (!$services.distribution.hasWikiDefaultUIExtension())\n/**************************************************************\n * Code to make the dynamic \"flavor/template\" tab bar\n **************************************************************/\nrequire([\'jquery\'], function($) {\n $(window).ready(function(){\n $(\'.flavor_template > .xwikitabbar > li > a\').click(function(event) {\n var thisTabWidget = $(this).parents(\'.flavor_template\');\n // Change the tab bar\n var activeTab = thisTabWidget.find(\'.xwikitabbar .active\');\n activeTab.removeClass(\'active\');\n var targetTab = $(this).parents(\'li\');\n targetTab.addClass(\'active\');\n // Change the tab content\n var activeTabContent = thisTabWidget.find(\'.xwiki-createwiki-tab.active\');\n var targetTabContent = thisTabWidget.find($(this).attr(\'href\') + \'-tab\');\n activeTabContent.removeClass(\'active\').fadeOut(400, function() {\n // Display the new tab container when the old one is completly hidden\n targetTabContent.hide().fadeIn().removeClass(\'hidden\').addClass(\'active\');\n });\n // Do not follow the link\n return false;\n });\n });\n});\n/**************************************************************\n * Code to only have a flavor or a template used, never both\n **************************************************************/\nrequire([\'jquery\'], function($) {\n $(window).ready(function(){\n /**\n * When a template is selected, unselect the flavor\n */\n $(\'#\'+\'template\').change(function(event) {\n if (this.value != \'xwikinotemplate\') {\n $(\'.xwiki-flavor-picker-option-selected\').removeClass(\'xwiki-flavor-picker-option-selected\');\n $(\'input[name=\"flavor\"]:radio:checked\').prop(\'checked\', false);\n }\n });\n \n /**\n * When a flavor is selected, unselect the template\n */\n var onFlavorChanged = function(event) {\n $(\'#\'+\'template\').val(\'xwikinotemplate\');\n }\n $(\'input[name=\"flavor\"]:radio\').change(onFlavorChanged);\n $(\'.xwiki-flavor-picker-option\').click(onFlavorChanged);\n });\n});\n#end\n'),(3384670355385431454,'lessCode','// Cyborg 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: #222; // #222\n@gray-dark: #282828; // #333\n@gray: #555; // #555\n@gray-light: #888; // #999\n@gray-lighter: #ADAFAE; // #eee\n\n@brand-primary: #2A9FD6;\n@brand-success: #77B300;\n@brand-info: #9933CC;\n@brand-warning: #FF8800;\n@brand-danger: #CC0000;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #060606;\n//** Global text color on `<body>`.\n@text-color: @gray-light;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Roboto\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables \n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: 56px;\n@font-size-h2: 45px;\n@font-size-h3: 34px;\n@font-size-h4: 24px;\n@font-size-h5: 20px;\n@font-size-h6: 16px;\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: #fff;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: darken(@gray-darker, 4%);\n//** Background color used for `.table-striped`.\n@table-bg-accent: darken(@table-bg, 6%);\n//** Background color used for `.table-hover`.\n@table-bg-hover: @gray-dark;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: @gray-dark;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: lighten(@gray-dark, 10%);\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: @gray-dark;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: @gray-dark;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: @gray-darker;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(255,255,255,0.1);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #444;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: rgba(255,255,255,0.1);\n\n//** Dropdown link text color.\n@dropdown-link-color: #fff;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @text-color;\n@navbar-default-bg: @body-bg;\n@navbar-default-border: @gray-dark;\n\n// Navbar links\n@navbar-default-link-color: @text-color;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: transparent;\n@navbar-default-link-disabled-color: @gray-light;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: #fff;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: @gray-dark;\n@navbar-default-toggle-icon-bar-bg: #ccc;\n@navbar-default-toggle-border-color: @gray-dark;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: @gray-darker;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: @gray-light;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: transparent;\n@navbar-inverse-link-disabled-color: #aaa;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: #fff;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-darker;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: @gray-dark;\n\n@nav-tabs-link-hover-border-color: transparent;\n\n@nav-tabs-active-link-hover-bg: @brand-primary;\n@nav-tabs-active-link-hover-color: #fff;\n@nav-tabs-active-link-hover-border-color: @gray-dark;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: #fff;\n@pagination-bg: @gray-darker;\n@pagination-border: @gray-dark;\n\n@pagination-hover-color: #fff;\n@pagination-hover-bg: @component-active-bg;\n@pagination-hover-border: transparent;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: transparent;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: @gray-darker;\n@pagination-disabled-border: @gray-dark;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: darken(@gray-darker, 5%);\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: lighten(@body-bg, 10%);\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #999;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: lighten(@body-bg, 10%);\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: @gray-dark;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: @gray-darker;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: @gray-darker;\n//** `.list-group-item` border color\n@list-group-border: @gray-dark;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: lighten(@list-group-bg, 15%);\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: @text-color;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #fff;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: @gray-darker;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: @gray-dark;\n@panel-footer-bg: lighten(@gray-darker, 10%);\n\n@panel-default-text: @text-color;\n@panel-default-border: @panel-inner-border;\n@panel-default-heading-bg: @panel-footer-bg;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @gray-dark;\n//** Thumbnail border color\n@thumbnail-border: @gray-dark;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: darken(@gray-darker, 5%);\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @brand-primary;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @gray-darker;\n//** Breadcrumb text color\n@breadcrumb-color: #fff;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @text-color;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-dark;\n//** Page header border color\n@page-header-border-color: @gray-dark;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-dark;\n\n// Cyborg 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Roboto:400,700\");\n\n// Navbar =====================================================================\n\n// Buttons ====================================================================\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n.bg-success,\n.bg-info,\n.bg-warning,\n.bg-danger {\n color: #fff;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n color: #fff;\n\n a:not(.btn) {\n color: #fff;\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .text-muted {\n color: @text-muted;\n }\n}\n\n.table-responsive > .table {\n background-color: @table-bg;\n}\n\n// Forms ======================================================================\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border-color: @brand-warning;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border-color: @brand-danger;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border-color: @brand-success;\n }\n}\n\nlegend {\n color: #fff;\n}\n\n.input-group-addon {\n background-color: @btn-default-bg;\n}\n\n// Navs =======================================================================\n\n.nav-tabs,\n.nav-pills,\n.breadcrumb,\n.pager {\n\n a {\n color: #fff;\n }\n}\n\n// Indicators =================================================================\n\n.alert {\n\n .alert-link,\n a {\n color: @alert-warning-text;\n text-decoration: underline;\n }\n\n .close {\n text-decoration: none;\n }\n}\n\n.close {\n color: #fff;\n text-decoration: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n color: #fff;\n opacity: 1;\n }\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: @thumbnail-border;\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border-color: @list-group-border;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.jumbotron {\n\n h1, h2, h3, h4, h5, h6 {\n color: #fff;\n }\n}'),(3498759973913960182,'async_context',''),(3498759973913960182,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.last.members\'))\n#set ($list = $services.query.xwql(\'from doc.object(XWiki.XWikiUsers) as user order by doc.creationDate desc\').addFilter(\'hidden\').setLimit(5).setOffset(0).execute())\n|=(% scope=\"col\" %)$services.localization.render(\'xe.panels.members.photo\')|=(% scope=\"col\" %)$services.localization.render(\'xe.panels.members.name\')\n#foreach ($user in $list)\n |{{html}}#smallUserAvatar($user){{/html}}|[[$xwiki.getUserName($user, false)>>$user]]\n#end\n\n[[$services.localization.render(\'xe.panels.members.viewall\')>>Main.UserDirectory]]\n#panelfooter()\n{{/velocity}}'),(3498759973913960182,'description','List the last 5 members who have registered on this wiki along with their pictures (a default picture is displayed if the user hasn\'t uploaded any picture).'),(3506649722196057787,'groups','xwiki:XWiki.XWikiAllGroup'),(3506649722196057787,'users',''),(3525297081497631929,'description',' '),(3526402484297830689,'code','#template(\'colorThemeInit.vm\')\n\n.annotationsettings .plainmessage {\n background-image: url($xwiki.getSkinFile(\'icons/silk/add.png\'));\n float: right;\n width: 30%;\n margin: 0 0 12px 4px;\n}\n/* IE7 expands the box for an unknown reason, and this seems to fix it: */\n*+html .annotationsettings {\n zoom: 100%;\n}\n.annotation-filters {\n padding: 8px 4px 4px;\n}\n.annotation-filters-toggler {\n font-size: 80%;\n color: $theme.textPrimaryColor;\n}\n.criteria {\n margin: 0.5em 0;\n}\n.collapsed .criteria {\n display: none;\n}\n\n*+html .collapsed .criterion-option-list {\n width: 10px;\n}\n\n#annotation-filters:target .criteria {\n display: block;\n}\n.criterion {\n margin: 2px 0;\n padding: 0 0 0 14px;\n background: transparent url($xwiki.getSkinFile(\'icons/silk/bullet_toggle_minus.png\')) top left no-repeat;\n}\n.criteria .collapsed {\n background-image: url($xwiki.getSkinFile(\'icons/silk/bullet_toggle_plus.png\'));\n}\n.criteria .collapsed .criterion-option-list {\n display: none;\n}\n.criterion-label {\n margin-left: -14px;\n padding-left: 14px;\n cursor: pointer;\n}\n.active .criterion-label {\n font-weight: bold;\n}\n.criterion-label .details {\n text-transform: lowercase;\n font-size: 80%;\n color: $theme.textPrimaryColor;\n}\n.active .criterion-label .details {\n display: none;\n}\n.criterion-label .clear {\n text-transform: lowercase;\n font-size: 80%;\n color: $theme.notificationErrorColor;\n font-weight: normal;\n cursor: pointer;\n display: none;\n}\n.active .criterion-label .clear {\n display: inline;\n}\n.criterion-option-list label.option {\n font-weight: normal;\n}\n.criterion-option-list label.selected {\n background-color: $theme.highlightColor;\n}'),(3557695888179322346,'lessCode','// Slate 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: #272B30; // #222\n@gray-dark: #3A3F44; // #333\n@gray: #52575C; // #555\n@gray-light: #7A8288; // #999\n@gray-lighter: #999; // #eee\n\n@brand-primary: @gray-light;\n@brand-success: #62c462;\n@brand-info: #5bc0de;\n@brand-warning: #f89406;\n@brand-danger: #ee5f5b;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: @gray-darker;\n//** Global text color on `<body>`.\n@text-color: #C8C8C8;\n\n//** Global textual link color.\n@link-color: #fff;\n//** Link hover color set via `darken()` function.\n@link-hover-color: #fff;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/** XWiki already overrides theses variables \n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 14px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: transparent;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: lighten(@body-bg, 3%);\n//** Background color used for `.table-striped`.\n@table-bg-accent: lighten(@table-bg, 3%);\n//** Background color used for `.table-hover`.\n@table-bg-hover: lighten(@table-bg, 12%);\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: darken(@gray-darker, 5%);\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-dark;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @gray-darker;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: darken(@gray-darker, 5%);\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: @gray-dark;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: @gray-darker;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: @gray-darker;\n\n//** Dropdown link text color.\n@dropdown-link-color: @text-color;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @gray-darker;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @gray-darker;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @text-color;\n@navbar-default-bg: @gray-dark;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: @text-color;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: darken(@navbar-default-bg, 8%);\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 8%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: none;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 8%);\n@navbar-default-toggle-icon-bar-bg: @text-color;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 8%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #ccc;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #ccc;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 12%);\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 12%);\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: none;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 12%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 12%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: lighten(@body-bg, 10%);\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: darken(@gray-darker, 5%);\n\n@nav-tabs-link-hover-border-color: darken(@gray-darker, 5%);\n\n@nav-tabs-active-link-hover-bg: lighten(@body-bg, 10%);\n@nav-tabs-active-link-hover-color: #fff;\n@nav-tabs-active-link-hover-border-color: darken(@gray-darker, 5%);\n\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: @btn-default-bg;\n@pagination-border: rgba(0, 0, 0, 0.6);\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: transparent;\n@pagination-hover-border: rgba(0, 0, 0, 0.6);\n\n@pagination-active-color: #fff;\n@pagination-active-bg: darken(@pagination-bg, 10%);\n@pagination-active-border: rgba(0, 0, 0, 0.6);\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: rgba(0, 0, 0, 0.6);\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: darken(@body-bg, 5%);\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: lighten(@body-bg, 3%);\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #999;\n\n//** Popover title background color\n@popover-title-bg: @popover-bg;\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: lighten(@body-bg, 3%);\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: darken(@gray-darker, 5%);\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: darken(@body-bg, 5%);\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: lighten(@body-bg, 5%);\n//** `.list-group-item` border color\n@list-group-border: rgba(0, 0, 0, 0.6);\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: lighten(@body-bg, 10%);\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: lighten(@body-bg, 10%);\n//** Border color of active list elements\n@list-group-active-border: @list-group-border;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: @text-color;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #fff;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: lighten(@body-bg, 3%);\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: rgba(0, 0, 0, 0.6);\n@panel-footer-bg: lighten(@body-bg, 10%);\n\n@panel-default-text: @text-color;\n@panel-default-border: rgba(0, 0, 0, 0.6);\n@panel-default-heading-bg: @panel-footer-bg;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @panel-default-border;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @panel-default-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @panel-default-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @panel-default-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @panel-default-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: darken(@body-bg, 5%);\n//** Thumbnail border color\n@thumbnail-border: darken(@thumbnail-bg, 7%);\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @thumbnail-bg;\n@well-border: @thumbnail-border;\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: @gray-light;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: transparent;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-light;\n//** Page header border color\n@page-header-border-color: darken(@gray-darker, 5%);\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: darken(@gray-darker, 5%);\n\n// Slate 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n.btn-shadow(@color) {\n #gradient > .vertical-three-colors(lighten(@color, 6%), @color, 60%, darken(@color, 4%));\n filter: none;\n}\n\n.btn-shadow-inverse(@color) {\n #gradient > .vertical-three-colors(darken(@color, 24%), darken(@color, 18%), 40%, darken(@color, 14%));\n filter: none;\n}\n\n// Navbar =====================================================================\n\n.navbar {\n\n .btn-shadow(@navbar-default-bg);\n border: 1px solid rgba(0, 0, 0, 0.6);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n\n &-inverse {\n .btn-shadow(@navbar-inverse-bg);\n\n .badge {\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n\n &-nav > li > a {\n border-right: 1px solid rgba(0, 0, 0, 0.2);\n border-left: 1px solid rgba(255, 255, 255, 0.1);\n\n &:hover {\n .btn-shadow-inverse(@navbar-default-bg);\n border-left-color: transparent;\n }\n }\n\n .nav .open > a {\n border-color: transparent;\n }\n\n &-nav > li.active > a {\n border-left-color: transparent;\n }\n\n &-form {\n margin-left: 5px;\n margin-right: 5px;\n }\n}\n\n// Buttons ====================================================================\n\n.btn,\n.btn:hover {\n border-color: rgba(0, 0, 0, 0.6);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n}\n\n.btn-default {\n .btn-shadow(@btn-default-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-default-bg);\n }\n}\n\n.btn-primary {\n .btn-shadow(@btn-primary-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-primary-bg);\n }\n}\n\n.btn-success {\n .btn-shadow(@btn-success-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-success-bg);\n }\n}\n\n.btn-info {\n .btn-shadow(@btn-info-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-info-bg);\n }\n}\n\n.btn-warning {\n .btn-shadow(@btn-warning-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-warning-bg);\n }\n}\n\n.btn-danger {\n .btn-shadow(@btn-danger-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-danger-bg);\n }\n}\n\n.btn-link,\n.btn-link:hover {\n border-color: transparent;\n}\n\n// Typography =================================================================\n\nh1, h2, h3, h4, h5, h6 {\n text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);\n}\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n// Tables =====================================================================\n\n.table {\n\n .success,\n .warning,\n .danger,\n .info {\n color: #fff;\n }\n\n &-bordered tbody {\n\n tr.success,\n tr.warning,\n tr.danger {\n\n td,\n &:hover td {\n border-color: @table-border-color;\n }\n }\n }\n}\n\n.table-responsive > .table {\n background-color: @table-bg;\n}\n\n// Forms ======================================================================\n\ninput,\ntextarea {\n color: @input-color;\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-warning;\n }\n\n .input-group-addon {\n background-color: @body-bg;\n border: none;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-danger;\n }\n\n .input-group-addon {\n background-color: @body-bg;\n border: none;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n border-color: @brand-success;\n }\n\n .input-group-addon {\n background-color: @body-bg;\n border: none;\n }\n}\n\nlegend {\n color: #fff;\n}\n\n.input-group-addon {\n border-color: rgba(0, 0, 0, 0.6);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n .btn-shadow(@btn-default-bg);\n color: @btn-default-color;\n}\n\n// Navs =======================================================================\n\n.nav {\n\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: rgba(0, 0, 0, 0.6);\n }\n\n}\n\n.nav-pills {\n\n & > li > a {\n .btn-shadow(@btn-default-bg);\n border: 1px solid rgba(0, 0, 0, 0.6);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n\n &:hover {\n .btn-shadow-inverse(@btn-default-bg);\n border: 1px solid rgba(0, 0, 0, 0.6);\n }\n }\n\n & > li.active > a,\n & > li.active > a:hover {\n background-color: none;\n .btn-shadow-inverse(@btn-default-bg);\n border: 1px solid rgba(0, 0, 0, 0.6);\n }\n\n & > li.disabled > a,\n & > li.disabled > a:hover {\n .btn-shadow(@btn-default-bg);\n }\n}\n\n.pagination {\n\n & > li > a,\n & > li > span {\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n .btn-shadow(@btn-default-bg);\n\n &:hover {\n .btn-shadow-inverse(@btn-default-bg);\n }\n }\n\n & > li.active > a,\n & > li.active > span {\n .btn-shadow-inverse(@btn-default-bg);\n }\n\n & > li.disabled > a,\n & > li.disabled > a:hover,\n & > li.disabled > span,\n & > li.disabled > span:hover {\n background-color: transparent;\n .btn-shadow(@btn-default-bg);\n }\n}\n\n.pager {\n\n & > li > a {\n .btn-shadow(@btn-default-bg);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n\n &:hover {\n .btn-shadow-inverse(@btn-default-bg);\n }\n }\n\n & > li.disabled > a,\n & > li.disabled > a:hover {\n background-color: transparent;\n .btn-shadow(@btn-default-bg);\n }\n}\n\n.breadcrumb {\n border: 1px solid rgba(0, 0, 0, 0.6);\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n .btn-shadow(@btn-default-bg);\n}\n\n// Indicators =================================================================\n\n.alert {\n\n .alert-link,\n a {\n color: #fff;\n text-decoration: underline;\n }\n\n .close {\n color: @close-color;\n text-decoration: none;\n }\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: @thumbnail-border;\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border-color: @list-group-border;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.jumbotron {\n border: 1px solid rgba(0, 0, 0, 0.6);\n}\n\n.panel-primary,\n.panel-success,\n.panel-danger,\n.panel-warning,\n.panel-info {\n\n .panel-heading {\n border-color: #000;\n }\n}\n\n\n// XWiki Customization\ndiv.main {\n border: 0;\n box-shadow: none;\n}\n\nul.nav.nav-pills.nav-stacked li{\n margin: 10px 0;\n}'),(3647154722566304610,'groups',''),(3647154722566304610,'users',''),(3651446736810542364,'async_context',''),(3651446736810542364,'content',''),(3651446736810542364,'parameters','tip=$services.localization.render(\'help.tipsPanel.gettingStartedTip\')'),(3691429869719656184,'code','#template(\'colorThemeInit.vm\')\n\n.messagestream-tools {\n display: flex;\n position: relative;\n margin: .5em 0 1em;\n}\n.messagestream select {\n width: auto;\n}\n.messagestream .message-target {\n flex-grow: 1;\n margin-left: .3em;\n}\n\n.messagestream .message-content {\n padding: .5em 0 .5em 75px;\n}\n\n.messagestream .activitySnapshot {\n height: 30px;\n margin: 5px 0 0 -50px;\n position: absolute;\n}\n\n.messagestream .activitySnapshot img {\n border-radius: 10px 10px 0 10px;\n box-shadow: -1px 1px 1px rgba(128,128,128,0.6);\n}\n\n/* User\'s avatar */\n.messagestream .activitySnapshot .avatar {\n border-radius: 4px;\n box-shadow: 0 0 2px 1px rgba(128,128,128,0.6);\n}\n\n.messagestream .activitySnapshot .activityActionAvatar {\n background: $theme.pageContentBackgroundColor;\n border-color: $theme.pageContentBackgroundColor;\n border-style: solid;\n border-width: 4px 1px 1px 3px;\n box-sizing: content-box;\n bottom: -5px;\n height: 16px;\n position: absolute;\n right: -10px;\n width: 16px;\n}'),(3695714606336170324,'lessCode','.navbar{\n #gradient > .vertical-three-colors(lighten(@navbar-default-bg, 10%), @navbar-default-bg, 50%, darken(@navbar-default-bg, 5%));\n}\n\n@state-info-bg: #d4fffc;\n@state-warning-bg: #ffeec2;\n\n\n\n\n\n'),(3727900940027351315,'description','States whether images are displayed or just their name is printed like for other attachments. Possible values: true, false (default).'),(3761327108723045908,'codeToExecute','{{include reference=\"CKEditor.AdminSection\" /}}'),(3782650588077848436,'groups','XWiki.XWikiAdminGroup'),(3782650588077848436,'users',''),(3800706677058565656,'code','.attachmentdoesnotexist-solr-container {\n margin-top: 1em;\n}'),(3817777789228802913,'description','The width of the displayed image, only taken into account if displayImage=true.'),(3870508514914292505,'codeToExecute','{{include reference=\"XWiki.DefaultWYSIWYGEditorConfig\" /}}'),(3878003441219951497,'description','CSS class of inputs where the picker will apply'),(3926563681684878323,'description','The list of nodes to exclude from the tree. The nodes are specified by their id and separated by comma. This has no effect on static trees.'),(3980527104837870639,'groups','XWiki.XWikiAllGroup'),(3980527104837870639,'users',''),(4237577464992284344,'description','Livetable id'),(4260569791073776520,'code','require([\'jquery\'], function($) {\n $(document).ready(function() {\n \n // Add a validator on the document input\n var documentValidator = new LiveValidation($(\'#filepath\')[0], {\n validMessage: \"$services.localization.render(\'core.validation.valid.message\')\"\n });\n documentValidator.displayMessageWhenEmpty = true;\n documentValidator.add(Validate.Custom, {\n failureMessage: \"$services.localization.render(\'core.validation.required.message\')\",\n against: function(value) {\n return typeof value === \'string\' && value.strip().length > 0;\n }\n });\n \n /**\n * Enable/disable the split option depending of the value of the split document checkbox\n */\n var maybeDisableSplitOptions = function () {\n var splitOptionsDisabled = !$(\'#splitDocumentInputId\').prop(\'checked\');\n $(\'#headingLevelsToSplitInputId\').prop(\'disabled\', splitOptionsDisabled);\n $(\'#childPagesNamingMethodInputId\').prop(\'disabled\', splitOptionsDisabled);\n }\n \n // Initalize the default state\n maybeDisableSplitOptions();\n \n // Enable/disable the split options when the checkbox\'s value changes\n $(\'#splitDocumentInputId\').change(maybeDisableSplitOptions);\n \n /**\n * Event sent when the form is submitted\n */\n $(\'#officeImportForm\').submit(function(event) {\n // Verify that the target document does not already exist\n var appendContentCheckbox = $(\'#appendContentInputId\');\n if (appendContentCheckbox.length == 0 || appendContentCheckbox.prop(\'checked\')) {\n // Except if the \"append content\" checkbox is enabled or if it is not present!\n return true;\n }\n \n // The document exist\n new XWiki.widgets.ConfirmationBox({\n onYes: function() {\n // Enable the append result checkbox\n $(\'#appendContentInputId\').prop(\'checked\', true);\n // Re-send the formular\n $(\'#submit\').click();\n }\n }, {\n confirmationText: \"$escapetool.javascript($services.localization.render(\'platform.office.importDocumentOverwriteConfirmation\'))\"\n });\n \n return false;\n });\n \n });\n});\n'),(4328016964994120422,'code','.search-facet-body .customDateInterval label {\n display: block;\n}\n.search-facet-body .customDateInterval .itemName {\n cursor: pointer;\n}\n.search-facet-body .customDateInterval form {\n margin-top: .5em;\n}\n.search-facet-body .customDateInterval dl {\n margin: 0;\n}\n.search-facet-body .customDateInterval input {\n margin-bottom: .3em;\n}'),(4365227729145461205,'codeToExecute',''),(4397280938199749522,'groups',''),(4397280938199749522,'users','XWiki.XWikiGuest'),(4418672092562811518,'code','/**\n * Add a dependency to the \"bootstrap-select\" plugin, used to display a nice select field that handle\n * multiple selection.\n */\nrequire.config({\n paths: {\n \'bootstrap-select\': \'$services.webjars.url(\"bootstrap-select\", \"js/bootstrap-select.min\")\'\n },\n shim: {\n \'bootstrap-select\' : [\'jquery\', \'bootstrap\']\n }\n});\n/**\n * Replace the simple text input field for supported locales by a nicer select widget with all available locales\n * ready to be selected.\n *\n * Instead of dynamically replace the text input field on the client-side, we could have done on the server-side,\n * by using a custom displayer.\n * However, it\'s a pain to upgrade the XWiki.XWikiPreferences class to add a displayer.\n * The class is not even packaged by the administration application.\n *\n * We also enable the improved select widget on the \"timezone\" field to make the user able to filter the choices.\n */\nrequire([\'jquery\',\'bootstrap\',\'bootstrap-select\'], function($) {\n \'use strict\';\n\n var locales = [\n#set ($separator = \'\')\n#set ($currentLocale = $services.localization.currentLocale)\n#set ($locales = $services.localization.availableLocales)\n#foreach ($locale in $sorttool.sort($locales, \'displayName\'))\n #if (\"$!locale\" != \'\')\n $separator\n { code: \'$locale\', name: \'$escapetool.xml($stringtool.capitalize($locale.getDisplayName($locale))) <small class=\"text-muted\">($stringtool.capitalize($locale.getDisplayName($currentLocale)))</small>\'}##\n #set ($separator = \',\')\n #end\n#end\n ];\n\n /**\n * Get the initial values of the input\n * @return an array of locales codes\n */\n var getLocalesFromInput = function (input) {\n var locales = input.val().split(/,| /);\n var results = [];\n for (var i = 0; i < locales.length; ++i) {\n if (locales[i].trim() != \'\') {\n results[results.length] = locales[i].trim();\n }\n }\n return results;\n }\n\n /**\n * Serialize an array of locales to a string that the XWiki server can handle\n */\n var serializeArray = function (array) {\n // bootstrap-select returns null when nothing is selected.\n array = array || [];\n var result = \'\';\n var separator = \'\';\n for (var i = 0; i < array.length; ++i) {\n if (array[i] != \'\') {\n result += separator;\n result += array[i];\n separator = \',\';\n }\n }\n return result;\n }\n\n /**\n * Initialization\n */\n $(document).ready(function() {\n\n /**\n * Enable the bootstrap-select plugin to have a nicer UI.\n */\n var enableSelectPicker = function (select) {\n // Force 100% width on the select using the form-control CSS class.\n select.addClass(\'form-control\').selectpicker({\n // Enable the filtering on choices if there is a lot of choices\n liveSearch: select.find(\'option\').length > 10\n });\n }\n\n //\n // Adding the CSS of the boostrap-select plugin\n //\n var css = $(\'<link rel=\"stylesheet\" href=\"$services.webjars.url(\"bootstrap-select\", \"css/bootstrap-select.min.css\")\">\');\n $(\'head\').append(css);\n\n // Getting the original input\n var localesInput = $(\'input[name=\"XWiki.XWikiPreferences_0_languages\"]\');\n\n // Creating the select box\n var select = $(\'<select multiple>\');\n\n // Add all available options\n var currentLocales = getLocalesFromInput(localesInput);\n for (var i = 0; i < locales.length; ++i) {\n var option = $(\'<option>\');\n option.prop(\'value\', locales[i].code);\n option.html(locales[i].name);\n if ($.inArray(locales[i].code, currentLocales) > -1) {\n option.prop(\'selected\', \'selected\');\n }\n select.append(option);\n }\n\n // Problem: when we save the document, XWiki expects \'XWiki.XWikiPreferences_0_languages\' to be a simple text,\n // not a \"select\" field with different values.\n // So we keep the old input field as an hidden input which will hold the serialized representation of the\n // selected locales.\n localesInput.prop(\'type\', \'hidden\');\n\n // Adds the new select widget in the DOM\n select.insertAfter(localesInput);\n\n // Enable the select picker\n enableSelectPicker(select);\n\n // Synchronize the value of the hidden input text with the selected item in the select widget.\n select.on(\'changed.bs.select\', function (event) {\n localesInput.prop(\'value\', serializeArray(select.val()));\n });\n\n // We can also do it for the \"default locale\" field.\n var defaultLocaleInput = $(\'input[name=\"XWiki.XWikiPreferences_0_default_language\"]\');\n var select2 = $(\'<select>\');\n select2.prop(\'name\', defaultLocaleInput.prop(\'name\'));\n select2.prop(\'id\', defaultLocaleInput.prop(\'id\'));\n for (var i = 0; i < locales.length; ++i) {\n var option = $(\'<option>\');\n option.prop(\'value\', locales[i].code);\n option.html(locales[i].name);\n if (defaultLocaleInput.val() == locales[i].code) {\n option.prop(\'selected\', \'selected\');\n }\n select2.append(option);\n }\n defaultLocaleInput.replaceWith(select2);\n\n // Enable bootstrap-select on the \"timezone\" field\n enableSelectPicker($(\'select[name=\"XWiki.XWikiPreferences_0_timezone\"]\'));\n\n // Enable it on the default locale field too\n enableSelectPicker($(\'select[name=\"XWiki.XWikiPreferences_0_default_language\"]\'));\n\n // Enable it on the last select field to be consistent\n enableSelectPicker($(\'select[name=\"XWiki.XWikiPreferences_0_multilingual\"]\'));\n });\n});\n'),(4434993791194682611,'code','#template(\'colorThemeInit.vm\')\n#spSpaceCreateItem {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/folder_add.png\')\");\n}\n\nul.xlist li.space div.spSpaceName {\n float: left;\n}\n\n#spSpaceCreateLabel a {\n color: $theme.textSecondaryColor;\n text-decoration: none;\n}\n\n#spSpaceCreateForm {\n background-color: $theme.highlightColor;\n border-top: 1px dashed $theme.borderColor;\n padding: .5em 0;\n}\n\n/* Hidden elements in lists that are show on hover */\n\nul.xlist li.xitem div.xshowonhover {\n display: none;\n float: right;\n font-size: .8em;\n padding: 0 .5em 0 0;\n}\n\nul.xlist li.xitem:hover div.xshowonhover {\n display: block;\n}\n\nul.xlist li.xitem div.xshowonhover img {\n float: right;\n padding: 0 .2em;\n}'),(4452184872458081486,'code','require([\'jquery\'], function($) {\n // Toggle source details.\n var sourceHeaderClickHandler = function() {\n $(this).next(\'.source-body\').toggleClass(\'hidden\');\n };\n $(\'.searchSuggestSources\').on(\'click\', \'.source-header\', sourceHeaderClickHandler);\n\n //--------------------\n // Ajax source delete.\n //--------------------\n var sourceDeleteHandler = function(event) {\n event.stopPropagation();\n event.preventDefault();\n var deleteLink = this;\n if (deleteLink.disabled) return;\n new XWiki.widgets.ConfirmedAjaxRequest(\n /* Ajax request URL */\n this.href,\n /* Ajax request parameters */\n {\n onCreate : function() {\n deleteLink.disabled = true;\n },\n onSuccess : function() {\n $(deleteLink).closest(\'.source\').remove();\n },\n onComplete : function() {\n deleteLink.disabled = false;\n }\n },\n /* Interaction parameters */\n {\n confirmationText: \"$escapetool.javascript($services.localization.render(\'core.editors.object.delete.confirm\'))\",\n progressMessageText : \"$escapetool.javascript($services.localization.render(\'core.editors.object.delete.inProgress\'))\",\n successMessageText : \"$escapetool.javascript($services.localization.render(\'core.editors.object.delete.done\'))\",\n failureMessageText : \"$escapetool.javascript($services.localization.render(\'core.editors.object.delete.failed\'))\"\n }\n );\n };\n $(\'.searchSuggestSources\').on(\'click\', \'.source-header .delete\', sourceDeleteHandler);\n\n //-----------------\n // Ajax source add.\n //-----------------\n var targetDocument = new XWiki.Document(\'SearchSuggestConfig\', \'XWiki\');\n var createSourceUI = function(container, sourceFormHTML) {\n container.find(\'.name\').text(\"$escapetool.javascript($services.localization.render(\'platform.search.suggestNewSourceName\'))\");\n container.find(\'.source-body\').html(sourceFormHTML);\n var objectNumber = parseInt(container.find(\'input[type=\"text\"]\')\n .attr(\'name\').substr(\'XWiki.SearchSuggestSourceClass_\'.length));\n container.find(\'.source-header .delete\').attr(\'href\', targetDocument.getURL(\'objectremove\', $.param({\n form_token: $(\'meta[name=\"form_token\"]\').attr(\'content\'),\n classname: \'XWiki.SearchSuggestSourceClass\',\n classid: objectNumber\n })));\n return container;\n };\n var insertSource = function(sourceFormHTML) {\n var searchEngines = $(this).closest(\'form\').find(\'.searchEngines\');\n if (searchEngines.length == 0) {\n // There is no search suggest source present. This will be the first one.\n // TODO: Prepare the search engine tab bar.\n // TODO: Prepare the search suggest sources container.\n }\n var sourceTemplate = $(this).closest(\'form\').find(\'.searchSuggestSourceTemplate\').children().first();\n var source = createSourceUI(sourceTemplate.clone(), sourceFormHTML);\n searchEngines.next(\'.tab-content\').find(searchEngines.find(\'li.active a\').attr(\'href\'))\n .find(\'ul.searchSuggestSources\').append(source);\n }\n $(\'.addSearchSuggestSource\').click(function(event) {\n event.stopPropagation();\n event.preventDefault();\n if ($(this).hasClass(\'loading\')) return;\n $(this).addClass(\'loading\');\n var notification = new XWiki.widgets.Notification(\"$services.localization.render(\'core.editors.object.add.inProgress\')\", \'inprogress\');\n var addLink = this;\n $.get(targetDocument.getURL(\'objectadd\'), {\n form_token: $(this).closest(\'form\').find(\'input[name=\"form_token\"]\').prop(\'value\'),\n classname: \'XWiki.SearchSuggestSourceClass\',\n xredirect: targetDocument.getURL(\'get\', $.param({\n sheet: \'XWiki.SearchSuggestSourceSheet\',\n xobjectNumber: \'\',\n }))\n })\n .done(function(data) {\n insertSource.call(addLink, data);\n notification.replace(new XWiki.widgets.Notification(\"$services.localization.render(\'core.editors.object.add.done\')\", \'done\'));\n })\n .fail(function() {\n notification.replace(new XWiki.widgets.Notification(\"$services.localization.render(\'core.editors.object.add.failed\')\", \'error\'));\n })\n .always(function() {\n $(addLink).removeClass(\'loading\');\n });\n });\n})'),(4591746229905279992,'code','/* Administration application custom JavaScript */\n\ndocument.observe(\'xwiki:dom:loaded\', function() {\n if($(\'goto-select\')) {\n Event.observe($(\'goto-select\'), \'change\', function (event) {\n var select = event.element();\n var i = select.selectedIndex;\n if (window.location != select.options[i].value) {\n window.location = select.options[i].value;\n }\n });\n $(\'goto-select\').next().hide();\n }\n});'),(4625876372974772728,'description','Specifies which hierarchy to use between documents. Possible values are \"reference\" (default) and \"parentchild\". If \"reference\" is used then the document hierarchy is defined using only the document reference, especially the nested spaces component of the document reference. If \"parentchild\" is used then the hierarchy is based on the parent/child relationship defined by the \"parent\" document field from the database.'),(4626833602826614831,'codeToExecute','{{display reference=\"Menu.WebHome\" /}}'),(4643321662150116830,'async_context','doc.reference|request.wiki|user'),(4643321662150116830,'content','{{velocity}}\n#macro (generateNotificationInput $id $reference $label)\n <label class=\"hidden\" for=\"$id\">$services.localization.render($label)</label>##\n <input type=\"checkbox\" id=\"$id\" name=\"$id\" #displayCheckedIfWatched($reference)/>##\n#end\n{{html clean=\"false\"}} ## we need clean=\"false\" because we want to display the raw content\n#if (\"$!xcontext.userReference\" != \'\' && $services.notification.isEnabled())\n <li>\n #set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.Macro.NotificationsMacro\'))\n #set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\'))\n #set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.Macro.NotificationsMacro\'))\n #set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\'))\n ## TODO: replace by $xwiki.sswx.use() or something like this when XWIKI-12788 is closed.\n #set ($discard = $xwiki.linkx.use($services.webjars.url(\'bootstrap-switch\', \'css/bootstrap3/bootstrap-switch.min.css\'), {\'type\': \'text/css\', \'rel\': \'stylesheet\'}))\n <div class=\"notifications-header\">\n <div class=\"clearfix\">\n <div class=\"col-xs-4\">\n <p><strong>$escapetool.xml($services.localization.render(\'notifications.menu.header\'))</strong></p>\n </div>\n <div class=\"col-xs-8 text-right\">\n <p>\n <span class=\"notifications-header-link\">\n <a href=\"$xwiki.getURL(\'XWiki.Notifications.Code.NotificationRSSService\', \'get\', \'outputSyntax=plain\')\"\n class=\"notifications-header-link notifications-rss-link\" rel=\"nofollow external\">\n $services.icon.renderHTML(\'rss\') $escapetool.xml($services.localization.render(\'notifications.rss.feedLink\'))\n </a>\n </span>\n <span class=\"notifications-header-link\">\n <a href=\"$xwiki.getURL($xcontext.userReference, \'view\', \'category=notifications\')\" class=\"notifications-settings\" rel=\"nofollow\">\n $services.icon.renderHTML(\'cog\') $escapetool.xml($services.localization.render(\'notifications.menu.header.settings\'))\n </a>\n </span>\n </p>\n </div>\n </div>\n ##\n ## Display the 3 toggle buttons\n ##\n #if ($services.notification.watch.isEnabled())\n <div class=\"notifications-toggles clearfix\" data-enabled=\"$services.notification.preferences.hasAnyEnabledNotificationPreferences()\">\n #macro(displayCheckedIfWatched $scope)#if($services.notification.watch.isLocationWatched($scope))checked=\"checked\"#end#end\n <pre>\n #generateNotificationInput(\'notificationPageOnly\' $doc.documentReference \'notifications.filters.preferences.label.page\')\n #generateNotificationInput(\'notificationPageAndChildren\' $doc.documentReference.lastSpaceReference \'notifications.filters.preferences.label.space\')\n #generateNotificationInput(\'notificationWiki\' $doc.documentReference.wikiReference \'notifications.filters.preferences.label.wiki\')\n </pre>\n </div>\n #end\n <div class=\"notifications-header-uix col-xs-12\">\n </div>\n </div>\n <div class=\"notifications-area loading clearfix\">\n </div>\n </li>\n#end\n{{/html}}\n{{/velocity}}\n'),(4643321662150116830,'parameters','order=20000\nseparator=true'),(4648502062423818573,'code','document.observe(\'xwiki:profile:switchedCategory\', function(switchEvent) {\n var __id = \'network\';\n if (switchEvent.memo.category == __id) {\n var container = $(__id + \'Pane\');\n if (container) {\n container.__listElement = container.down(\'.following ul\');\n container.select(\'.following li a.unfollow\').invoke(\'observe\', \'click\', function(event){\n event.stop();\n var trigger = event.element();\n trigger.blur();\n if (trigger.disabled) {\n // Do nothing if the button was already clicked and it\'s waiting for a response from the server.\n return;\n } else {\n if (! trigger.__confirmationMessage) {\n trigger.__target = trigger.up(\'li\').down(\'img\').title;\n trigger.__confirmationMessage = \"$services.localization.render(\'xe.activity.messages.unfollow.confirm\', [\'____placeholder____\'])\".replace(\'____placeholder____\', trigger.__target);\n }\n new XWiki.widgets.ConfirmedAjaxRequest(\n /* Ajax request URL */\n trigger.readAttribute(\'href\') + (Prototype.Browser.Opera ? \"\" : \"&ajax=1\"),\n /* Ajax request parameters */\n {\n onCreate : function() {\n // Disable the button, to avoid a cascade of clicks from impatient users\n trigger.disabled = true;\n },\n onSuccess : function() {\n // Remove the corresponding HTML element from the UI\n trigger.up(\"li\").remove();\n // If the list remains empty remove it\n if (!container.__listElement.down(\'li\')) {\n container.__listElement.replace(\"$services.localization.render(\'platform.core.profile.section.following.none\')\");\n var __activityBlock = container.down(\'.networkActivity\');\n if (__activityBlock) {\n __activityBlock.remove();\n }\n }\n },\n onComplete : function() {\n // In the end: re-inable the button\n trigger.disabled = false;\n }\n },\n /* Interaction parameters */\n {\n confirmationText: trigger.__confirmationMessage\n }\n );\n }\n });\n }\n }\n});'),(4652057205514493530,'groups',''),(4652057205514493530,'users','XWiki.XWikiGuest'),(4806868010979350034,'description','The space to display the tag cloud for. If missing, the tags in the whole wiki will be displayed.'),(4858586154946940657,'code','require.config({\n paths: {\n \'xwiki-suggestUsers\': \"$xwiki.getSkinFile(\'uicomponents/suggest/suggestUsersAndGroups.js\', true)\" +\n \"?v=$escapetool.url($xwiki.version)\"\n }\n});\n\nrequire([\'jquery\', \'xwiki-suggestUsers\'], function($) {\n \'use strict\';\n\n var modal = $(\n \'<div class=\"modal\" tabindex=\"-1\" role=\"dialog\" data-backdrop=\"static\">\' +\n \'<div class=\"modal-dialog share-dialog\" role=\"document\">\' +\n \'<div class=\"modal-content\">\' +\n \'<div class=\"modal-header\">\' +\n \'<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"\' +\n $jsontool.serialize($services.localization.render(\'core.viewers.share.cancel\')) +\n \'\">\' +\n \'<span aria-hidden=\"true\">×</span>\' +\n \'</button>\' +\n \'<div class=\"modal-title\">\' +\n $jsontool.serialize($services.localization.render(\'core.viewers.share.dialogTitle\')) +\n \'</div>\' +\n \'</div>\' +\n \'<div class=\"modal-body\"></div>\' +\n \'</div>\' +\n \'</div>\' +\n \'</div>\'\n );\n\n var initSharePage = function() {\n modal.find(\'.modal-body\').removeClass(\'loading\');\n modal.find(\'form\').submit(onSubmit);\n modal.find(\'a.secondary.button\').attr(\'data-dismiss\', \'modal\');\n modal.find(\'input[type=\"submit\"]\').prop(\'disabled\', true);\n var shareTarget = modal.find(\'#shareTarget\').suggestUsers({\n // Make it easier for the users to enter email addresses.\n createOnBlur: true,\n createFilter: /^.+@.+\\..+$/\n });\n var selectize = shareTarget[0].selectize;\n selectize.on(\'change\', function(value) {\n modal.find(\'input[type=\"submit\"]\').prop(\'disabled\', !value);\n });\n var oldItemRenderer = selectize.settings.render.item;\n selectize.settings.render.item = function(item) {\n if (item && !item.icon && item.value && item.value.indexOf(\'@\') > 0) {\n item.icon = {\n url: $jsontool.serialize($xwiki.getSkinFile(\'icons/silk/email.png\'))\n };\n }\n return oldItemRenderer.call(this, item);\n };\n selectize.focus();\n };\n\n var onSubmit = function(event) {\n event.preventDefault();\n var form = $(this);\n var data = $(this).serialize() + \'&xpage=shareinline\';\n modal.find(\'.modal-body\').addClass(\'loading\').html(\'\')\n .load(XWiki.currentDocument.getURL(\'get\'), data, initShareStatus);\n };\n\n var initShareStatus = function() {\n modal.find(\'.modal-body\').removeClass(\'loading\');\n modal.find(\'.share-backlink\').attr(\'data-dismiss\', \'modal\');\n };\n\n // If the share page form is present then initialize it right away.\n $(\'#shareTarget\').length > 0 && initSharePage();\n\n // Load the share page form when the corresponding menu entry is clicked.\n $(\'#tmActionShare\').click(function(event) {\n event.preventDefault();\n modal.find(\'.modal-body\').addClass(\'loading\').html(\'\')\n .load(XWiki.currentDocument.getURL(\'get\'), {\'xpage\': \'shareinline\'}, initSharePage);\n modal.modal();\n });\n});'),(4863015354151557442,'async_context',''),(4863015354151557442,'code','{{velocity}}\n#set ($wikis = \'\')\n#if ($services.wiki.currentWikiId != $services.wiki.mainWikiId)\n #set ($wikis = $services.wiki.currentWikiId)\n#end\n{{notifications useUserPreferences=\"false\" displayOwnEvents=\"true\" count=\"$xcontext.macro.params.entries\" #if(\"$!xcontext.macro.params.wikis\" != \'\')wikis=\"$xcontext.macro.params.wikis\"#{else}wikis=\"$wikis\"#end #if(\"$!xcontext.macro.params.spaces\" != \'\')spaces=\"$xcontext.macro.params.spaces\"#end #if(\"$!xcontext.macro.params.authors\" != \'\')users=\"$xcontext.macro.params.authors\"#end #if(\"$!xcontext.macro.params.tags\" != \'\')tags=\"$xcontext.macro.params.tags\"#end #if(\"$!xcontext.macro.params.minor\" != \'\')displayMinorEvents=\"$xcontext.macro.params.minor\"#end #if(\"$!xcontext.macro.params.rss\" != \'\')displayRSSLink=\"$xcontext.macro.params.rss\"#end /}}\n{{/velocity}}'),(4863015354151557442,'contentDescription',''),(4863015354151557442,'contentJavaType',''),(4863015354151557442,'description','Provide a macro implemented with the Notifications Application to keep a backward compatibility with Activity Stream.'),(4892033486471519239,'code','require.config({\n paths: {\n \'jquery-ui\' : \"$!services.webjars.url(\'jquery-ui\', \'jquery-ui.min\')\",\n // The WebJar version doesn\'t match the version of the packaged jquery-ui-touch-punch library so we are forced to\n // specify the library version when computing the WebJar resource URL.\n \'jquery-ui-touch-punch\' : \"$!services.webjars.url(\'jquery-ui-touch-punch/0.2.3/jquery.ui.touch-punch.min\')\"\n },\n shim: {\n \'jquery-ui\' : [\'jquery\'],\n \'jquery-ui-touch-punch\': [\'jquery-ui\']\n }\n});\nrequire([\'jquery\', \'jquery-ui\', \'jquery-ui-touch-punch\'], function($) {\n var getLocalDocumentReference = function(absoluteDocumentReference) {\n var documentReference = XWiki.Model.resolve(absoluteDocumentReference, XWiki.EntityType.DOCUMENT);\n var localDocumentReference = documentReference.relativeTo(new XWiki.WikiReference(XWiki.currentWiki));\n return XWiki.Model.serialize(localDocumentReference);\n };\n\n //\n // Drag from the Excluded Pages and drop over the Navigation Panel.\n //\n\n $(\'.navigationPanelConfiguration\').on(\'click\', \'.exclusion-filter-pages a\', function(event) {\n event.preventDefault();\n }).on(\'click\', \'.exclusion-filter-pages .page\', function(event) {\n var page = $(this);\n if (page.hasClass(\'included\')) {\n page.removeClass(\'selected\');\n } else {\n page.toggleClass(\'selected\');\n }\n });\n\n var getExcludedPageDragHelper = function() {\n var draggedPage = $(this);\n var selectedPages = $(\'.navigationPanelConfiguration .page.selected\');\n if (draggedPage.hasClass(\'selected\') && selectedPages.length > 1) {\n return $(\'<span/>\').text(selectedPages.length + \' pages\')[0];\n } else {\n selectedPages.removeClass(\'selected\');\n var isFromDynamicFilter = draggedPage.closest(\'.exclusion-filter-dynamic\').size() > 0;\n return (isFromDynamicFilter ? draggedPage.clone() : draggedPage)[0];\n }\n };\n\n var makeExcludedPageDraggable = function() {\n var page = $(this);\n page.draggable({\n disabled: page.hasClass(\'included\'),\n helper: getExcludedPageDragHelper,\n revert: \'invalid\',\n revertDuration: 200\n });\n };\n\n $(\'.navigationPanelConfiguration .exclusion-filter-pages .page\').each(makeExcludedPageDraggable);\n\n var getNodeData = function(exclusion) {\n var documentReference = exclusion.data(\'reference\');\n return {\n id: \'document:\' + documentReference,\n text: exclusion.text(),\n children: exclusion.data(\'children\') !== false,\n data: {\n id: documentReference,\n type: \'document\',\n validChildren: [\'document\', \'pagination\'],\n draggable: true,\n canDelete: true,\n canMove: true\n },\n a_attr: {\n href: exclusion.find(\'a\').attr(\'href\')\n }\n };\n };\n\n var includePageFromDynamicFilter = function(reference) {\n $(\'.exclusion-filter-dynamic .page\').not(\'.included\').each(function() {\n var page = $(this);\n // Verify that the page is a draggable instance in order to avoid processing the drag helper (when the helper is a\n // clone of the page element).\n if (page.draggable(\'instance\') && page.data(\'reference\') === reference) {\n var input = $(\'<input type=\"hidden\"/>\').attr({\n name: \'PanelsCode.NavigationConfigurationClass_0_inclusions\',\n value: getLocalDocumentReference(reference)\n });\n page.addClass(\'included\').draggable(\'disable\').append(input);\n }\n });\n };\n\n var includeOtherPage = function(reference) {\n $(\'.exclusion-filter.otherPages .page\').each(function() {\n var page = $(this);\n // Verify that the page is a draggable instance in order to avoid processing the drag helper (when the helper is a\n // clone of the page element).\n if (page.draggable(\'instance\') && page.data(\'reference\') === reference) {\n page.draggable(\'destroy\').remove();\n }\n });\n };\n\n var showOrCreateNode = function(tree, page) {\n var node = tree.get_node(\'document:\' + page.data(\'reference\'));\n if (node) {\n tree.show_node(node.id);\n } else {\n var index = Math.max(0, parseInt(page.data(\'index\')));\n if (!isFinite(index)) {\n index = \'last\';\n }\n tree.create_node(null, getNodeData(page), index);\n }\n };\n\n var onDropPage = function(tree) {\n var page = $(this);\n var reference = page.data(\'reference\');\n // We don\'t act directly on the given page element because the corresponding page might be excluded by multiple\n // filters.\n includePageFromDynamicFilter(reference);\n includeOtherPage(reference);\n // Add the corresponding node to the navigation tree.\n tree && showOrCreateNode(tree, page);\n };\n\n var maybeToggleEmptyNode = function(tree) {\n var visibleTopLevelNodes = tree.get_node(\'#\').children.filter(function(nodeId) {\n return nodeId !== \'empty\' && !tree.get_node(nodeId).state.hidden;\n });\n if (visibleTopLevelNodes.length === 0) {\n var emptyNode = tree.get_node(\'empty\');\n if (!emptyNode) {\n tree.create_node(null, {\n \'id\': \'empty\',\n \'text\': $jsontool.serialize($services.localization.render(\'index.documentTree.empty\')),\n \'children\': false,\n \'data\': {\n \'type\': \'empty\',\n \'validChildren\': []\n }\n }, \'first\');\n }\n tree.show_node(\'empty\');\n } else {\n tree.hide_node(\'empty\');\n }\n };\n\n // Drop excluded page over the Navigation Panel.\n $(\'.navigationPanelConfiguration .panel.expanded\').droppable({\n accept: \'.page\',\n activeClass: \'ui-droppable-active\',\n hoverClass: \'ui-droppable-hover\',\n drop: function(event, ui) {\n var tree = $(this).find(\'.jstree\').jstree(true);\n var selectedPages = $(\'.navigationPanelConfiguration .page.selected\');\n var droppedPages = selectedPages.length > 0 ? selectedPages : ui.draggable;\n droppedPages.each(function() {\n onDropPage.call(this, tree);\n });\n maybeToggleEmptyNode(tree);\n selectedPages.removeClass(\'selected\');\n }\n });\n\n //\n // Toggle dynamic filters\n //\n\n var excludePagesFromDynamicFilter = function(pages, tree) {\n tree && pages.find(\'.page\').not(\'.included\').each(function() {\n tree.hide_node(\'document:\' + $(this).data(\'reference\'));\n });\n };\n\n var includePagesFromDynamicFilter = function(pages, tree) {\n tree && pages.find(\'.page\').not(\'.included\').each(function() {\n var page = $(this);\n var otherExclusionsForThisPage = $(\'.exclusion-filter.otherPages .page\').filter(function() {\n return $(this).data(\'reference\') === page.data(\'reference\');\n });\n if (otherExclusionsForThisPage.length === 0) {\n showOrCreateNode(tree, page);\n }\n });\n };\n\n $(\'.exclusion-filter-dynamic input[type=\"checkbox\"]\').click(function() {\n var pages = $(this).closest(\'.exclusion-filter\').find(\'.exclusion-filter-pages\').toggleClass(\'hidden\');\n var tree = $(\'.navigationPanelConfiguration .jstree\').jstree(true);\n if ($(this).prop(\'checked\')) {\n excludePagesFromDynamicFilter(pages, tree);\n } else {\n includePagesFromDynamicFilter(pages, tree);\n }\n maybeToggleEmptyNode(tree);\n });\n\n //\n // Drag from the Navigation Panel and drop over the Excluded Pages.\n //\n\n var excludePageFromDynamicFilter = function(tree, node) {\n var excluded = false;\n $(\'.exclusion-filter-dynamic .exclusion-filter-pages\').not(\'.hidden\').find(\'.page.included\').each(function() {\n var page = $(this);\n if (page.data(\'reference\') === node.data.id) {\n page.removeClass(\'included\').draggable(\'enable\').find(\'input\').remove();\n excluded = true;\n }\n });\n return excluded;\n };\n\n var excludeOtherPage = function(tree, node) {\n var page = $(\'<li class=\"page\"/>\').attr(\'data-reference\', node.data.id)\n .append($(\'<a/>\').attr(\'href\', node.a_attr.href).text(node.text))\n .append($(\'<input type=\"hidden\" name=\"PanelsCode.NavigationConfigurationClass_0_exclusions\"/>\')\n .val(getLocalDocumentReference(node.data.id)));\n $(\'.exclusion-filter.otherPages .exclusion-filter-pages .empty\').before(page);\n makeExcludedPageDraggable.call(page);\n };\n\n var excludeNode = function(tree, nodeId) {\n var node = tree.get_node(nodeId);\n if (node && node.data && node.data.type === \'document\') {\n excludePageFromDynamicFilter(tree, node) || excludeOtherPage(tree, node);\n tree.hide_node(nodeId);\n }\n };\n\n var excludedPagesPane = $(\'.navigationPanelConfiguration .panel.panel-info\').first();\n\n $(document).on(\'dnd_start.vakata\', function(event, data) {\n excludedPagesPane.addClass(\'dropTarget\');\n });\n\n // Drop tree node over the Excluded Pages pane.\n $(document).on(\'dnd_stop.vakata\', function(event, data) {\n if ($.contains(excludedPagesPane[0], data.event.target)) {\n var tree = data.data.origin;\n data.data.nodes.forEach(function(nodeId) {\n excludeNode(tree, nodeId);\n });\n maybeToggleEmptyNode(tree);\n }\n excludedPagesPane.removeClass(\'dropTarget\');\n });\n\n // Make sure the root node accepts known node types as children.\n $(\'.navigationPanelConfiguration .xtree\').on(\'ready.jstree\', function(event, data) {\n var tree = data.instance;\n var root = tree.get_node(\'#\');\n root.data.validChildren = [\'document\', \'pagination\', \'empty\'];\n\n // Prevent drag & drop for tree nodes that are not on the top level.\n }).on(\'model.jstree\', function(event, data) {\n if (data.parent !== \'#\') {\n var tree = data.instance;\n $.each(data.nodes, function(index, nodeId) {\n var node = tree.get_node(nodeId);\n if (node && node.data) {\n node.data.draggable = false;\n }\n });\n }\n })\n});'),(4896895185668032880,'description',''),(4949124351282875620,'async_context',''),(4949124351282875620,'code','{{velocity}}\n##\n## tagCloudSpace - the space to display the tag cloud for. If blank, display cloud for the whole wiki. Default is blank.\n#set ($tagCloudSpace = $xcontext.macro.params.get(\'space\'))\n#set ($tagCloudSpaces = $xcontext.macro.params.get(\'spaces\'))\n##\n## Configurable popularity levels. You must enter an even number of levels. Default: 6.\n#set ($popularityLevels = [\"notPopular\", \"notVeryPopular\", \"somewhatPopular\", \"popular\", \"veryPopular\", \"ultraPopular\"])\n#set ($levelsHalf = $popularityLevels.size() / 2)\n##\n$xwiki.ssx.use(\'XWiki.TagCloud\')##\n##\n#if( $tagCloudSpace && $tagCloudSpaces )\n {{error}}\n ##Do not use space and spaces parameter in the same time.\n {{translation key=\"xe.tag.paramerror\" /}}\n {{/error}}\n #break\n#end\n\n##If multiple spaces with \"spaces\" parameter\n#if( $tagCloudSpaces )\n #set ($tagCount = $xwiki.tag.getTagCountForSpaces($tagCloudSpaces))\n#else\n ##If only one space\n ## Get tag count map. Key: tag, value: number of occurrences.\n #set ($tagCount = $xwiki.tag.getTagCount(\"$!tagCloudSpace\"))\n#end\n##\n## Only build popularity map if at least one tag exists\n#if ($tagCount.size() > 0)\n ##\n ## Store the minimum and maximum number of occurrences.\n #set ($sortedTagCounts = $sorttool.sort($tagCount.values()))\n #set ($maxIndex = $sortedTagCounts.size() - 1)\n #set ($minCount = $sortedTagCounts[0])\n #set ($maxCount = $sortedTagCounts[$maxIndex])\n ##\n ## Calculate the total number of tags in the wiki.\n #set ($totalTagNumber = 0)\n #foreach ($currentTagCount in $sortedTagCounts)\n #set ($totalTagNumber = $totalTagNumber + $currentTagCount)\n #end\n #set ($countAverage = $mathtool.div($totalTagNumber, $tagCount.size()))\n ##\n ## Build popularity map using the difference between minimum / maximum tag occurrences counts, and the average tag occurences count.\n #set ($firstHalfIntervalSize = $mathtool.div($mathtool.sub($countAverage, $minCount), $levelsHalf))\n #set ($secondHalfIntervalSize = $mathtool.div($mathtool.sub($maxCount, $countAverage), $levelsHalf))\n ##\n ## Use a sorted map\n #set ($popularityMap = $collectionstool.getSortedMap())\n #set ($previousPopularityMax = $minCount)\n #set ($intervalSize = $firstHalfIntervalSize)\n #set ($halfPassed = false)\n #foreach ($popularityLevel in $popularityLevels)\n #if ($velocityCount > $levelsHalf && !$halfPassed)\n #set ($intervalSize = $secondHalfIntervalSize)\n #set ($halfPassed = true)\n #end\n #set ($currentPopularityMax = $mathtool.add($previousPopularityMax, $intervalSize))\n ##\n ## round the threshold\n #set ($threshold = $mathtool.roundTo(1, $currentPopularityMax))\n #set ($discard = $popularityMap.put($threshold, $popularityLevel))\n #set ($previousPopularityMax = $currentPopularityMax)\n #end\n#end\n##\n## Display tag cloud.\n{{html}}\n#if ($tagCount.size() > 0)\n <ol class=\"tagCloud\">\n #foreach ($tagEntry in $tagCount.entrySet())\n #foreach ($popularityEntry in $popularityMap.entrySet())\n #if ($popularityEntry.Key >= $tagEntry.Value)\n #set ($liClass = $popularityEntry.Value)\n #break\n #end\n #end\n <li class=\"$liClass\">\n <a class=\"tag\" href=\"$xwiki.getURL(\'Main.Tags\', \'view\', \"do=viewTag&tag=$escapetool.url($tagEntry.Key)\")\" title=\"$services.localization.render(\'xe.tag.tooltip\', [$tagEntry.Value])\">$escapetool.xml($tagEntry.Key)</a>\n </li>\n #end\n </ol>\n#else\n <p class=\"noitems\">\n #if(\"$!tagCloudSpace\" == \"\")\n $services.localization.render(\'xe.tag.notags\')\n #else\n $services.localization.render(\'xe.tag.notagsforspace\', [\"$tagCloudSpace\"])\n #end\n </p>\n#end\n{{/html}}\n{{/velocity}}'),(4949124351282875620,'contentDescription',''),(4949124351282875620,'contentJavaType',''),(4949124351282875620,'description','Displays the cloud of tags in this wiki or in the specified space, if any.'),(4987120541439898953,'code','#template(\'colorThemeInit.vm\')\nul.searchEngines {\n text-transform: capitalize;\n}\nul.searchSuggestSources {\n border: 1px solid $theme.borderColor;\n list-style-type: none;\n margin: 0;\n padding: 1em 0.5em;\n}\n.searchSuggestSources .source-header {\n border-left: 2px solid $theme.borderColor;\n cursor: pointer;\n margin-bottom: 2px;\n padding: 0.1em 0.1em 0.1em 0.3em;\n position: relative;\n}\n.searchSuggestSources .source:hover .source-header {\n background-color: $theme.highlightColor;\n}\n.searchSuggestSources .source-header.activated {\n border-left-color: $theme.notificationSuccessColor;\n}\n.searchSuggestSources .limit {\n color: $theme.textSecondaryColor;\n}\n.searchSuggestSources .source-header.highlighted .limit {\n background-color: yellow;\n}\n.searchSuggestSources .source-header .actions {\n display: none;\n position: absolute;\n right: .2em;\n top: 0;\n}\n.searchSuggestSources .source:hover .actions {\n display: block;\n}\n.searchSuggestSources .actions .delete {\n color: $theme.notificationErrorColor;\n}\n.searchSuggestSources .source-body {\n border-left: 1px dotted $theme.borderColor;\n font-size: 85%;\n margin-bottom: 1.2em;\n padding-left: 1em;\n padding-top: 1.2em;\n}\n.searchSuggestSources .source-body .xform dt:first-of-type {\n margin-top: 0;\n}\n.addSearchSuggestSource {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/add.png\')\") no-repeat scroll left center transparent;\n padding-left: 20px;\n}\n.addSearchSuggestSource.loading {\n background-image: url(\"$xwiki.getSkinFile(\'icons/xwiki/spinner.gif\')\");\n}'),(5016340420089288621,'description','Optional menu identifier that will be set on the HTML element that wraps the menu. You can use this identifier in JavaScript code to access the menu DOM or in functional tests to assert the menu items.'),(5053172292695529038,'code','define(\'bootstrap-form-validation\', [\'jquery\'], function($) {\n return {\n resetValidation: function(formControl) {\n var formGroup = formControl.closest(\'.form-group\');\n formGroup.removeClass(\'has-success has-error has-warning\');\n formGroup.find(\'.form-control-feedback\').addClass(\'hidden\');\n formGroup.find(\'.help-block\').addClass(\'hidden\').empty();\n },\n setLoading: function(formControl) {\n this.resetValidation(formControl);\n formControl.closest(\'.form-group\').find(\'.form-control-feedback.loading\').removeClass(\'hidden\');\n },\n setSuccess: function(formControl) {\n this.resetValidation(formControl);\n formControl.closest(\'.form-group\').addClass(\'has-success\').find(\'.form-control-feedback.success\')\n .removeClass(\'hidden\');\n },\n setError: function(formControl, message) {\n this.resetValidation(formControl);\n formControl.closest(\'.form-group\').addClass(\'has-error\')\n .find(\'.form-control-feedback.error\').removeClass(\'hidden\').end()\n .find(\'.help-block\').removeClass(\'hidden\').text(message);\n }\n };\n});\n\n//\n// Group Creation\n//\nrequire([\'jquery\', \'bootstrap-form-validation\'], function($, validation) {\n var createGroupModal = $(\'#createGroupModal\');\n var createGroupButton = createGroupModal.find(\'button.btn-primary\');\n createGroupModal.on(\'shown.bs.modal\', function() {\n // Reset the form each time the modal is shown.\n createGroupModal.find(\'form\').trigger(\'reset\');\n createGroupModal.find(\'.form-control\').each(function() {\n validation.resetValidation($(this));\n }).first().focus();\n createGroupButton.prop(\'disabled\', true);\n });\n\n // Group name validation.\n var groupNameTimeout;\n var groupNameInput = createGroupModal.find(\'input[name=\"name\"]\');\n groupNameInput.on(\'input\', function() {\n clearTimeout(groupNameTimeout);\n createGroupButton.prop(\'disabled\', true);\n validation.resetValidation(groupNameInput);\n if (groupNameInput.val() !== \'\') {\n validation.setLoading(groupNameInput);\n groupNameTimeout = setTimeout(function() {\n var groupName = groupNameInput.val();\n var groupURL = new XWiki.Document(groupName, \'XWiki\').getRestURL();\n $.get(groupURL).done(function() {\n // A document with the specified name already exists.\n var message = $jsontool.serialize($services.localization.render(\'rightsmanager.groupexist\'))\n .replace(\'__name__\', groupName);\n validation.setError(groupNameInput, message);\n }).fail(function(response) {\n if (response.status === 404) {\n // The document does not exist, so we can use it.\n validation.setSuccess(groupNameInput);\n createGroupButton.prop(\'disabled\', false);\n } else {\n // Something else happened. This was not intended.\n var message = $jsontool.serialize($services.localization.render(\n \'platform.core.rightsManagement.ajaxFailure\'));\n validation.setError(groupNameInput, message);\n }\n });\n }, 500);\n }\n });\n\n createGroupModal.submit(function(event) {\n event.preventDefault();\n var data = createGroupModal.find(\'form\').serializeArray();\n data.push({name: \'ajax\', value: 1});\n var groupName = groupNameInput.val();\n var createGroupURL = new XWiki.Document(groupName, \'XWiki\').getURL(\'save\');\n // Disable the form to prevent it from being submitted twice.\n createGroupModal.find(\':input\').prop(\'disabled\', true);\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.create.inProgress\')),\n \'inprogress\'\n );\n $.post(createGroupURL, data).done(function() {\n // Close the modal and refresh the groups live table.\n createGroupModal.modal(\'hide\');\n window.livetable_groupstable.refresh();\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.create.done\')),\n \'done\'\n ));\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.create.failed\')),\n \'error\'\n ));\n }).always(function() {\n // Re-enable the form.\n createGroupModal.find(\':input\').prop(\'disabled\', false);\n });\n });\n});\n\n//\n// Scope Filtering\n//\nrequire([\'jquery\'], function($) {\n var options = $(\'#groupstable\').prev(\'.tipfilters\').remove().find(\'select[name=\"wiki\"]\').html();\n var scopeFilter = $(\'#groupstable .xwiki-livetable-display-filters select[name=\"scope\"]\')\n scopeFilter.attr(\'name\', \'wiki\').html(options);\n});\n\n//\n// Live Table Modals\n//\n\ndefine(\'xwiki-livetable-modal\', [\'jquery\', \'bootstrap\'], function($) {\n $.fn.bindActionToModal = function(action, modal) {\n var actionToModal = action;\n if (typeof action === \'string\') {\n var actionToModal = {};\n actionToModal[action] = modal;\n }\n return this.each(function() {\n var liveTableElement = $(this);\n var liveTable = window[\'livetable_\' + liveTableElement.attr(\'id\')];\n $.each(actionToModal, function(action, modal) {\n liveTableElement.on(\'click\', \'a.action\' + action, function(event) {\n event.preventDefault();\n var actionTrigger = $(this);\n var row = actionTrigger.closest(\'tr\');\n var rowIndex = parseInt(row.attr(\'data-index\'));\n $(modal).data({\n rowData: liveTable.fetchedRows[rowIndex],\n rowIndex: rowIndex,\n liveTable: liveTable,\n liveTableElement: liveTableElement\n }).modal(\'show\');\n });\n });\n });\n };\n\n $(\'.modal[data-liveTable]\').each(function() {\n var modal = $(this);\n $(modal.attr(\'data-liveTable\')).bindActionToModal(modal.attr(\'data-liveTableAction\'), modal);\n });\n});\n\nrequire([\'jquery\', \'xwiki-meta\', \'xwiki-livetable-modal\'], function($, xm) {\n //\n // Group Editing\n //\n var editGroupModal = $(\'#editGroupModal\');\n editGroupModal.on(\'show.bs.modal\', function() {\n var rowData = editGroupModal.data(\'rowData\');\n var groupReference = XWiki.Model.resolve(rowData.doc_fullName, XWiki.EntityType.DOCUMENT, [rowData.doc_wiki]);\n var groupDocument = new XWiki.Document(groupReference);\n var editGroupURL = groupDocument.getURL(\'edit\', \'xpage=plain\');\n editGroupModal.find(\'.modal-body\').empty().addClass(\'loading\').load(editGroupURL, function() {\n this.removeClass(\'loading\');\n $(document).trigger(\'xwiki:dom:updated\', {\'elements\': this.toArray()});\n });\n }).on(\'hide.bs.modal\', function() {\n editGroupModal.data(\'liveTable\').refresh();\n });\n\n //\n // Group Deletion\n //\n var deleteGroupModal = $(\'#deleteGroupModal\');\n deleteGroupModal.on(\'show.bs.modal\', function() {\n var rowData = deleteGroupModal.data(\'rowData\');\n var groupReference = rowData.doc_fullName;\n if (XWiki.currentWiki !== rowData.doc_wiki) {\n groupReference = XWiki.Model.resolve(groupReference, XWiki.EntityType.DOCUMENT, [rowData.doc_wiki]);\n groupReference = XWiki.Model.serialize(groupReference);\n }\n deleteGroupModal.find(\'.groupName\').text(groupReference);\n }).find(\'.btn-danger\').click(function() {\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.delete.inProgress\')),\n \'inprogress\'\n );\n $.post(\'\', {\n xpage: \'deleteuorg\',\n docname: deleteGroupModal.find(\'.groupName\').text(),\n form_token: xm.form_token\n }).done(function() {\n deleteGroupModal.data(\'liveTable\').deleteRow(deleteGroupModal.data(\'rowIndex\'));\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.delete.done\')),\n \'done\'\n ));\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.groups.delete.failed\')),\n \'error\'\n ));\n });\n });\n});'),(5098451329487711004,'code','ul > li > ul > li {\n list-style-type: none;\n}\nul.showCircles li {\n list-style-type: circle;\n}'),(5158283262279666196,'edit.vm',''),(5158283262279666196,'footer.vm',''),(5158283262279666196,'header.vm',''),(5158283262279666196,'style.css',''),(5158283262279666196,'view.vm',''),(5158283262279666196,'viewheader.vm',''),(5207704305644208853,'address',''),(5207704305644208853,'comment',''),(5214985903510806620,'description',''),(5286980433960415345,'async_context',''),(5286980433960415345,'content','{{velocity}}\n#panelheader(\'Panel Title\')\n\n#panelfooter()\n{{/velocity}}'),(5286980433960415345,'description','Panel Description'),(5311519692229017200,'code','define([\'SyntaxHighlighting_cm/lib/codemirror\',\n new XWiki.Document(\'HighlightingModeXwiki21tags\', \'SyntaxHighlighting\').getURL(\'jsx\', \"minify=$!{services.debug.minify}\"),\n \'SyntaxHighlighting_cm/mode/htmlmixed/htmlmixed\',\n \'SyntaxHighlighting_cm/mode/velocity/velocity\',\n \'SyntaxHighlighting_cm/mode/groovy/groovy\',\n \'SyntaxHighlighting_cm/mode/python/python\'\n ], function (CodeMirror) {\n CodeMirror.defineMode(\"xwiki21\", function(config, parserConfig) {\n var xwikitagsMode = CodeMirror.getMode(config, \"xwiki21tags\");\n var htmlMode = CodeMirror.getMode(config, \"htmlmixed\");\n var velocityMode = CodeMirror.getMode(config, \"velocity\");\n var groovyMode = CodeMirror.getMode(config, \"groovy\");\n var pythonMode = CodeMirror.getMode(config, \"python\");\n\n function xwikitags(stream, state) {\n var style = xwikitagsMode.token(stream, state.xwikitagsState);\n if (style == \"tag\" && stream.current() == \"}}\" && state.xwikitagsState.context) {\n if (/^velocity$/i.test(state.xwikitagsState.context.tagName)){\n state.token = velocity;\n state.localState = velocityMode.startState(xwikitagsMode.indent(state.xwikitagsState, \"\"));\n state.mode = \"velocity\";\n } else if (/^groovy$/i.test(state.xwikitagsState.context.tagName)) {\n state.token = groovy;\n state.localState = groovyMode.startState(xwikitagsMode.indent(state.xwikitagsState, \"\"));\n state.mode = \"groovy\";\n } else if (/^html$/i.test(state.xwikitagsState.context.tagName)) {\n state.token = html;\n state.localState = htmlMode.startState(xwikitagsMode.indent(state.xwikitagsState, \"\"));\n state.mode = \"htmlmixed\";\n } else if (/^python$/i.test(state.xwikitagsState.context.tagName)) {\n state.token = python;\n state.localState = pythonMode.startState(xwikitagsMode.indent(state.xwikitagsState, \"\"));\n state.mode = \"python\";\n }\n }\n return style;\n }\n function maybeBackup(stream, pat, style) {\n var cur = stream.current();\n var close = cur.search(pat);\n if (close > -1) stream.backUp(cur.length - close);\n return style;\n }\n\n function velocity(stream, state) {\n if (stream.match(/^\\{\\{\\/\\s*velocity\\s*\\}\\}/i, false)) {\n state.token = xwikitags;\n state.localState = null;\n state.mode = \"xwikitags\";\n return xwikitags(stream, state);\n }\n return maybeBackup(stream, /\\{\\{\\/\\s*velocity\\s*\\}\\}/, velocityMode.token(stream, state.localState));\n }\n function groovy(stream, state) {\n if (stream.match(/^\\{\\{\\/\\s*groovy\\s*\\}\\}/i, false)) {\n state.token = xwikitags;\n state.localState = null;\n state.mode = \"xwikitags\";\n return xwikitags(stream, state);\n }\n return maybeBackup(stream, /\\{\\{\\/\\s*groovy\\s*\\}\\}/, groovyMode.token(stream, state.localState));\n }\n function html(stream, state) {\n if (stream.match(/^\\{\\{\\/\\s*html\\s*\\}\\}/i, false)) {\n state.token = xwikitags;\n state.localState = null;\n state.mode = \"xwikitags\";\n return xwikitags(stream, state);\n }\n return maybeBackup(stream, /\\{\\{\\/\\s*html\\s*\\}\\}/, htmlMode.token(stream, state.localState));\n }\n function python(stream, state) {\n if (stream.match(/^\\{\\{\\/\\s*python\\s*\\}\\}/i, false)) {\n state.token = xwikitags;\n state.localState = null;\n state.mode = \"xwikitags\";\n return xwikitags(stream, state);\n }\n return maybeBackup(stream, /\\{\\{\\/\\s*python\\s*\\}\\}/, pythonMode.token(stream, state.localState));\n }\n\n return {\n startState: function() {\n var state = xwikitagsMode.startState();\n return {token: xwikitags, localState: null, mode: \"xwikitags\", xwikitagsState: state};\n },\n\n copyState: function(state) {\n if (state.localState)\n var local = CodeMirror.copyState(state.token == velocity ? velocityMode : (state.token == groovy ? groovyMode : (state.token == html ? htmlMode : pythonMode)), state.localState);\n return {token: state.token, localState: local, mode: state.mode,\n xwikitagsState: CodeMirror.copyState(xwikitagsMode, state.xwikitagsState)};\n },\n\n token: function(stream, state) {\n return state.token(stream, state);\n },\n\n indent: function(state, textAfter) {\n var indentMode = null;\n var indentState = state.localState;\n\n if (state.token == xwikitags || /^\\s*\\{\\{\\//.test(textAfter)) {\n indentMode = xwikitagsMode;\n indentState = state.xwikitagsState;\n } else if (state.token == velocity) {\n indentMode = velocityMode;\n } else if (state.token == groovy) {\n indentMode = groovyMode;\n } else if (state.token == html) {\n indentMode = htmlMode;\n } else if (state.token == python) {\n indentMode = pythonMode;\n }\n\n // If the mode supports indenting, apply it, otherwise pass.\n if (indentMode && indentMode.indent) {\n return indentMode.indent(indentState, textAfter);\n } else {\n return CodeMirror.Pass;\n }\n },\n\n electricChars: \"/{}:\",\n\n innerMode: function(state) {\n // FIXME: Check if state.mode is ok to be returned here or if a mode instance is required instead.\n return {state: state.localState || state.xwikitagsState, mode: state.mode || xwikitagsMode};\n }\n }\n });\n\n CodeMirror.defineMIME(\"text/xwiki\", \"xwiki\");\n\n/* Note: Alternative implementation with less code, but less control (over indentation for example). Requires that we import \'addon/mode/multiplex.js\'.\n CodeMirror.defineMode(\"xwiki\", function(config) {\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, \'xwikitags\'),\n {open: \"{{html}}\", close: \"{{/html}}\",\n mode: CodeMirror.getMode(config, \"htmlmixed\"),\n delimStyle: \"tag\"},\n {open: \"{{velocity}}\", close: \"{{/velocity}}\",\n mode: CodeMirror.getMode(config, \"velocity\"),\n delimStyle: \"tag\"},\n {open: \"{{groovy}}\", close: \"{{/groovy}}\",\n mode: CodeMirror.getMode(config, \"groovy\"),\n delimStyle: \"tag\"},\n {open: \"{{python}}\", close: \"{{/python}}\",\n mode: CodeMirror.getMode(config, \"python\"),\n delimStyle: \"tag\"}\n // .. more multiplexed styles can follow here\n );\n});\n*/\n});'),(5317481007445551943,'javamail_extra_props',''),(5317481007445551943,'ldap_fields_mapping',''),(5317481007445551943,'ldap_group_mapping',''),(5344757774904131858,'description','Show a text input that can be used to find tree nodes. The input is displayed above the tree and offers suggestions as you type based on the content of the tree. When a suggestion is selected the tree is expanded up to the corresponding node.'),(5348726555786185037,'code','var XWiki = (function (XWiki) {\n\n/**\n * Make sure the \'Next Step\' wizard button behaves as the \'Save & View\' form action button. It\'s not enough to share\n * the same name, it must also fire the \'xwiki:actions:save\' event with the right parameters. We could have fired the\n * event when the \'Next Step\' button was clicked but we preferred to reuse the \'Save & View\' button in order to avoid\n * duplicating the code from actionButtons.js.\n */\nfunction enhanceNextStepButton(nextStepButton, actionButtons) {\n var saveAndViewButton = actionButtons.down(\"input[name$=\'action_save\']\");\n // Replace the \'Next Step\' button with the \'Save & View\' button.\n nextStepButton.insert({before: saveAndViewButton}).remove();\n Object.extend(saveAndViewButton, {\n id: nextStepButton.id,\n value: nextStepButton.value,\n title: nextStepButton.title,\n className: nextStepButton.className\n });\n}\n\nfunction init() {\n var form = $(\'inline\');\n if (!form) {\n return false;\n }\n\n var nextStepButton = $(\'wizard-next\');\n if (!nextStepButton) {\n return false;\n }\n\n // Hide the form action buttons because the wizard has its own buttons.\n var actionButtons = form.down(\'.bottombuttons\').hide();\n\n // Make sure the \'Next Step\' wizard button behaves as the \'Save & View\' form action button.\n // We defer the call to be sure that the \'Save & View\' button is initialized.\n enhanceNextStepButton.defer(nextStepButton, actionButtons);\n\n return true;\n}\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n\nreturn XWiki;\n}(XWiki || {}));'),(5385967068577836105,'content','{{velocity}}\n#set($aSpace = $NULL)\n#if ($doc.space != \"Main\")\n #set ($aSpace = $services.rendering.escape($doc.space, \'xwiki/2.1\'))\n#end\n\n{{notifications spaces=\"$!aSpace\" useUserPreferences=\"false\" displayOwnEvents=\"true\" /}}\n{{/velocity}}'),(5424139079343332541,'code','(function() {\nvar init = function() {\n // We only need this behavior in the admin (administration) and view modes.\n if (XWiki.contextaction != \'admin\' && XWiki.contextaction != \'view\') {\n return;\n }\n\n // Listen for the save & continue event (that we reuse with our button).\n document.observe(\"xwiki:actions:save\", function(event) {\n // Rename the save button so that XWiki\'s action filter does not get in our way and send our request somewhere else\n // rather than the form\'s action.\n if ($$(\"input[name=\'action_saveandcontinue\']\")[0]) {\n $$(\"input[name=\'action_saveandcontinue\']\")[0].name = \'xaction_saveandcontinue\';\n }\n\n // Ask for confirmation when the new owner does not exist and is entered by hand.\n if ($$(\"input[name=\'owner\']\")[0] && !$$(\"input[name=\'owner\'][type=\'hidden\']\")[0]) {\n // We do it like this because we want to wait for the reply while blocking (window.confirm) the save event\n // handler so that we can eventually stop the event itself instead of having to re-submit the form in an asynch\n // callback (Confirm Widget).\n var confirmed = window.confirm(\"$services.localization.render(\'platform.wiki.admin.wiki.ownerProblemConfirmation\')\");\n if (!confirmed) {\n event.stop();\n if (event.memo) {\n event.memo.originalEvent.stop();\n }\n }\n }\n });\n};\n\n// Register on xwiki:dom:loading because we want to register a handler for xwiki:actions:save before the default\n// handler gets registered, otherwise our handler will be called after the default, thus after the AJAX request\n// is sent, and we don`t want that.\n(XWiki && XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loading\', init);\n\n})();'),(5439153117275208932,'codeToExecute',''),(5507133455870632400,'description','Whether to show the document title instead of the document name when displaying a document node.'),(5553794025562714273,'groups','XWiki.XWikiAllGroup,xwiki:XWiki.XWikiAllGroup'),(5553794025562714273,'users','XWiki.XWikiGuest'),(5576564885368957979,'spaces',''),(5594553399349434881,'async_context',''),(5594553399349434881,'content','{{velocity}}\n#panelheader($services.localization.render(\'xe.panels.orphaned\'))\n#set ($homepage = $services.wiki.getById($services.wiki.currentWikiId).mainPageReference)\n#set ($homepageFullName = $services.model.serialize($homepage, \'local\'))\n#foreach ($item in $services.query.xwql(\'where doc.parent is null or doc.parent=\'\'\'\' and doc.fullName <> :homepage order by doc.name asc\').bindValue(\'homepage\', $homepageFullName).addFilter(\'hidden\').execute())\n #if ($xwiki.hasAccessLevel(\'view\', $xcontext.user, \"${xcontext.database}:${item}\"))\n #set ($bentrydoc = $xwiki.getDocument($item))\n * [[${bentrydoc.fullName}]]\n #end\n#end\n#panelfooter()\n{{/velocity}}'),(5594553399349434881,'description','List pages that have no parent defined.'),(5609995998568979095,'description','The identifier (number) of the object for which the property is displayed by this picker. If missing, the first instance of the class given by the parameter classname found in the document will be considered.'),(5693463832850383288,'html','<p>Hello ${recipientName},</p>\n\n<p><strong>${xwiki.getUserName($xcontext.user)}</strong> thought you might be interested in the document <a href=\"${doc.getExternalURL()}\">$!{escapetool.xml(${doc.displayTitle})}</a> on <a href=\"${xwiki.getDocument($services.model.resolveDocument(\'\', \'default\', $doc.documentReference.extractReference(\'WIKI\'))).getExternalURL()}\">${request.getServerName()}</a>.</p>\n\n#if (\"$!{message}\" != \'\')\n<p>Here is their message:</p>\n\n<pre style=\"border: 1px solid #000; padding: 10px; font-size: 130%;\">\n$!{escapetool.xml($message)}\n</pre>\n#end\n\n<p>To visit this document online, open <a href=\"${doc.getExternalURL()}\">${doc.getExternalURL()}</a> in your browser.</p>\n\n#if ($services.watchlist && $services.watchlist.isEnabled())\n<p>Additionally, you can <a href=\"${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\">add this document to your personal WatchList</a> and be notified whenever someone modifies it.</p>\n#end\n\n#if ($display == \'inline\')\n\n<p>Here is the current version of the document:</p>\n\n<h1>${doc.displayTitle}</h1>\n<div style=\"border: 1px solid #000; padding: 10px;\">\n\n $doc.getRenderedContent()\n</div>\n\n#end\n\n<hr />\n<p>This message was generated by XWiki at ${request.serverName} on behalf of ${xwiki.getUserName($xcontext.user)}.</p>'),(5693463832850383288,'text','Hello ${recipientName},\n\n${xwiki.getUserName($xcontext.user, false)} thought you might be interested in the document \"$!{escapetool.xml(${doc.displayTitle})}\" (${doc.getExternalURL()}) on ${request.getServerName()}.\n\n#if (\"$!{message}\" != \'\')\nHere is their message:\n\n-----------------------------------------------------\n$!{escapetool.xml($message)}\n-----------------------------------------------------\n#end\n\nTo visit this document online, open ${doc.getExternalURL()} in your browser.\n\n#if ($services.watchlist && $services.watchlist.isEnabled())\nAdditionally, you can add this document to your personal WatchList and be notified whenever someone modifies it. To do so, open the following link in your browser: ${doc.getExternalURL(\'view\', \"xpage=watch&do=adddocument&xredirect=$escapetool.url($doc.getURL())\")}\n#end\n\n#if ($display == \'inline\')\n\nHere is the current version of the document:\n\n-----------------------------------------------------\n$doc.getRenderedContent()\n\n#end\n\n-----------------------------------------------------\nThis message was generated by XWiki at ${request.serverName} on behalf of ${xwiki.getUserName($xcontext.user, false)}.'),(5713700073447113167,'lessCode','// Cosmo 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: lighten(@gray-base, 60%); // #999\n@gray-lighter: lighten(@gray-base, 90%); // #eee\n\n@brand-primary: #2780E3;\n@brand-success: #3FB618;\n@brand-info: #9954BB;\n@brand-warning: #FF7518;\n@brand-danger: #FF0039;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Source Sans Pro\", Calibri, Candara, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 300;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 10px;\n@padding-base-horizontal: 18px;\n\n@padding-large-vertical: 18px;\n@padding-large-horizontal: 30px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 0;\n@border-radius-large: 0;\n@border-radius-small: 0;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-darker;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #fff;\n@navbar-default-bg: @gray-darker;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-active-color: @navbar-default-link-hover-color;\n@navbar-default-link-active-bg: @navbar-default-link-hover-bg;\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: none;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: @navbar-default-link-hover-bg;\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: @navbar-inverse-link-hover-bg;\n@navbar-inverse-link-disabled-color: #fff;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: none;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: @navbar-inverse-link-hover-bg;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: transparent;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: @gray-light;\n@pagination-active-bg: #f5f5f5;\n@pagination-active-border: #ddd;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: @border-radius-base;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @gray-light;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: transparent;\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #ccc;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-border;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #fff;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Cosmo 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @brand-primary;\n }\n }\n}\n\n// Buttons ====================================================================\n\n// Typography =================================================================\n\nbody {\n -webkit-font-smoothing: antialiased;\n}\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n\n a:not(.btn) {\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .success,\n .warning,\n .danger,\n .info {\n color: #fff;\n\n a {\n color: #fff;\n }\n }\n}\n\n// Forms ======================================================================\n\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border: 1px solid @brand-warning;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border: 1px solid @brand-danger;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus,\n .input-group-addon {\n border: 1px solid @brand-success;\n }\n}\n\n// Navs =======================================================================\n\n.nav-pills {\n\n & > li > a {\n border-radius: 0;\n }\n}\n\n.dropdown-menu {\n\n & > li > a:hover,\n & > li > a:focus {\n background-image: none;\n }\n}\n\n// Indicators =================================================================\n\n.close {\n text-decoration: none;\n text-shadow: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n}\n\n.alert {\n border: none;\n\n .alert-link {\n text-decoration: underline;\n color: #fff;\n }\n}\n\n.label {\n border-radius: 0;\n}\n\n// Progress bars ==============================================================\n\n.progress {\n height: 8px;\n .box-shadow(none);\n .progress-bar {\n font-size: 8px;\n line-height: 8px;\n }\n}\n\n// Containers =================================================================\n\n.panel {\n &-heading,\n &-footer {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n &-default {\n .close {\n color: @text-color;\n }\n }\n}\n\na.list-group-item {\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.modal {\n .close {\n color: @text-color;\n }\n}\n\n.popover {\n color: @text-color;\n}'),(5789198790236058440,'async_context',''),(5789198790236058440,'content',''),(5789198790236058440,'parameters','label=$services.localization.render(\'xe.panels.quicklinks.sandbox\')\ntarget=Sandbox.WebHome\nicon=icon:coffee'),(5797161127261353539,'async_context',''),(5797161127261353539,'content','{{velocity}}\n(% id=\"xwikirightshelppanel\" %)\n(((\n#largepanelheader($services.localization.render(\'xe.panels.rights.help\'))\n(% id=\"xwikirightshelp\" %)\n(((\n (% id=\"xwikihelpusers\" %)\n (((\n (% id=\"xwikihelpusersHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.users\') =)))\n (% id=\"xwikihelpusersContent\" class=\"accordionTabContentBox\" %)\n ((({{html}}$services.localization.render(\'xe.panels.rights.usersexplanation\'){{/html}})))\n )))\n (% id=\"xwikihelpgroups\" %)\n (((\n (% id=\"xwikihelpgroupsHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.groups\') =)))\n (% id=\"xwikihelpgroupsContent\" class=\"accordionTabContentBox\" %)\n ((({{html}}$services.localization.render(\'xe.panels.rights.groupsexplanation\') $services.localization.render(\'xe.panels.rights.groupsvirtualexplanation\'){{/html}})))\n )))\n (% id=\"xwikihelplevels\" %)\n (((\n (% id=\"xwikihelplevelsHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.accesslevels\') =)))\n (% id=\"xwikihelplevelsContent\" class=\"accordionTabContentBox\" %)\n ((({{html}}$services.localization.render(\'xe.panels.rights.accesslevelsexplanation\'){{/html}})))\n )))\n (% id=\"xwikihelpallow\" %)\n (((\n (% id=\"xwikihelpallowHeader\" class=\"accordionTabTitleBar\" %)\n (((= $services.localization.render(\'xe.panels.rights.allowdeny\') =)))\n (% id=\"xwikihelpallowContent\" class=\"accordionTabContentBox\" %)\n ((({{html}}$services.localization.render(\'xe.panels.rights.allowdenyexplanation\'){{/html}})))\n )))\n)))## xwikirightshelp\n#panelfooter()\n)))## xwikirightshelppanel\n$xwiki.jsfx.use(\'js/xwiki/accordion/accordion.js\')##\n{{html clean=\"false\"}}\n<script type=\"text/javascript\">\ndocument.observe(\'xwiki:dom:loaded\', function() {\n var obj = {div:\'xwikirightshelp\', no:0, height:512};\n var acc = createAccordion(obj);\n XWiki.togglePanelVisibility($(\'xwikirightshelppanel\').down(\'div\'));\n});</script>\n{{/html}}\n{{/velocity}}'),(5797161127261353539,'description','Help on Rights Editor usage.'),(5821822250632440836,'code','/* Fix the check-box style. */\n.ckeditor-config input[type=\"checkbox\"] {\n margin-top: 0;\n vertical-align: middle;\n}'),(5837094281802416777,'groups','XWiki.XWikiAllGroup'),(5837094281802416777,'users','XWiki.XWikiGuest'),(5907546419309148588,'description','The root node id. This is useful if you want to display only the descendants of a given node (which is the specified root). The tree displays the children of the root node on the first level, so the root node is not actually displayed. The entire tree is displayed if the root node is not specified. The format of a node identifier is entityType:entityReference, where the entity type can be for instance wiki, space, document. E.g.: wiki:xwiki, space:xwiki:Main, document:xwiki:Main.WebHome'),(5944379568313284215,'code','{{include reference=\"CKEditor.SyntaxContentEditor\"/}}'),(5962341801857419302,'query','fq=type:ATTACHMENT\nqf=filename'),(5982650279254161969,'description','The id of the node to open the tree to. All the ancestors of the specified node, up to the root of the tree, will be opened also.'),(6038051003464642222,'async_context','locale'),(6038051003464642222,'content','{{velocity}}\n$xwiki.ssx.use(\'Help.SupportPanel.WebHome\')\n#panelheader(\"$xwiki.getDocument(\'Help.SupportPanel.Content\').translatedDocument.title\")\n(% class=\'SupportPanel\'%)(((\n{{include reference=\'Help.SupportPanel.Content\' context=\'new\'/}}\n)))\n#panelfooter()\n{{/velocity}}'),(6038051003464642222,'description','Provides support details for XWiki'),(6046379491446866540,'lessCode','\n'),(6050800665445957526,'code','/**\n * Groups Live Table\n */\n#groupstable td[data-title] {\n vertical-align: middle;\n}\n\n/**\n * Create Group Modal\n */\n\n#createGroupModal dl,\n#createGroupModal dd:last-child {\n margin-bottom: 0;\n}\n\n#createGroupModal .help-block {\n font-size: smaller;\n}\n\n/**\n * Delete Group Modal\n */\n\n#deleteGroupModal .groupName {\n font-weight: bolder;\n}'),(6128861790306095509,'async_context',''),(6128861790306095509,'content',''),(6128861790306095509,'parameters','label=$services.localization.render(\'extensions.applicationsPanel.install\')\n## The Application Panel checks only if the current user has the right to view the specified target page. Since simple\n## users have by default view right on the XWiki.XWikiPreferences page but only admins can actually install\n## applications, we need to check admin rights here in order to hide this entry for simple users.\ntarget=#if ($xwiki.hasWikiAdminRights())XWiki.XWikiPreferences#end\ntargetQueryString=editor=globaladmin§ion=XWiki.Extensions\nicon=icon:bullet_go'),(6134097965481032111,'groups','XWiki.XWikiAllGroup'),(6134097965481032111,'users','XWiki.XWikiGuest'),(6146904346348649845,'async_context',''),(6146904346348649845,'code','{{velocity}}\n#set ($displayMacro = true)\n#if ($xcontext.action != \'view\')\n {{info}}\n {{translation key=\"notifications.macro.whenNotView\" /}}\n {{/info}}\n\n #set ($displayMacro = false)\n#else\n #set ($users = $xcontext.macro.params.users)\n #if (\"$!xcontext.macro.params.displayWatchedUsersOnly\" == \'true\')\n #set ($watchedUsers = $services.notification.watch.watchedUsers)\n #if ($watchedUsers.isEmpty())\n\n {{warning}}\n {{translation key=\"notifications.macro.noWatchedUsers\" /}}\n {{/warning}}\n\n #set ($displayMacro = false)\n #else\n #set ($users = $stringtool.join($services.notification.watch.watchedUsers, \',\'))\n #end\n #end\n#end\n#if ($displayMacro)\n#set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.Macro.NotificationsMacro\'))\n#set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.Macro.NotificationsMacro\'))\n#set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.NotificationsDisplayerUIX\'))\n{{html clean=\"false\"}}\n<div class=\"notifications-macro loading\"\n data-userId=\"$!escapetool.xml($services.model.serialize($xcontext.userReference, \'default\'))\"\n data-count=\"$!escapetool.xml($xcontext.macro.params.count)\"\n data-useUserPreferences=\"$!escapetool.xml($xcontext.macro.params.useUserPreferences)\"\n data-displayOwnEvents=\"$!escapetool.xml($xcontext.macro.params.displayOwnEvents)\"\n data-displayMinorEvents=\"$!escapetool.xml($xcontext.macro.params.displayMinorEvents)\"\n data-displaySystemEvents=\"$!escapetool.xml($xcontext.macro.params.displaySystemEvents)\"\n data-displayReadEvents=\"$!escapetool.xml($xcontext.macro.params.displayReadEvents)\"\n data-wikis=\"$!escapetool.xml($xcontext.macro.params.wikis)\"\n data-spaces=\"$!escapetool.xml($xcontext.macro.params.spaces)\"\n data-pages=\"$!escapetool.xml($xcontext.macro.params.pages)\"\n data-users=\"$!escapetool.xml($users)\"\n data-displayReadStatus=\"$!escapetool.xml($xcontext.macro.params.displayReadStatus)\"\n data-tags=\"$!escapetool.xml($xcontext.macro.params.tags)\"\n>\n#if (\'true\' == $xcontext.macro.params.displayRSSLink)\n ## Generate the RSS URL to display the same notifications but in the RSS format\n #set ($rssURL = $services.rest.url($doc.documentReference))\n #set ($rssURL = \"${rssURL.substring(0, $rssURL.indexOf(\'/rest\'))}/rest/notifications/rss\")\n #set ($rssURL = \"${rssURL}?userId=$!escapetool.url($services.model.serialize($xcontext.userReference, \'default\'))\")\n #set ($rssURL = \"${rssURL}&useUserPreferences=$!escapetool.url($xcontext.macro.params.useUserPreferences)\")\n #set ($rssURL = \"${rssURL}&count=$!escapetool.url($xcontext.macro.params.count)\")\n #set ($rssURL = \"${rssURL}&displayOwnEvents=$!escapetool.url($xcontext.macro.params.displayOwnEvents)\")\n #set ($rssURL = \"${rssURL}&displayMinorEvents=$!escapetool.url($xcontext.macro.params.displayMinorEvents)\")\n #set ($rssURL = \"${rssURL}&displaySystemEvents=$!escapetool.url($xcontext.macro.params.displaySystemEvents)\")\n #set ($rssURL = \"${rssURL}&displayReadEvents=$!escapetool.url($xcontext.macro.params.displayReadEvents)\")\n #set ($rssURL = \"${rssURL}&wikis=$!escapetool.url($xcontext.macro.params.wikis)\")\n #set ($rssURL = \"${rssURL}&spaces=$!escapetool.url($xcontext.macro.params.spaces)\")\n #set ($rssURL = \"${rssURL}&pages=$!escapetool.url($xcontext.macro.params.pages)\")\n #set ($rssURL = \"${rssURL}&users=$!escapetool.url($xcontext.macro.params.users)\")\n #set ($rssURL = \"${rssURL}&displayReadStatus=$!escapetool.url($xcontext.macro.params.displayReadStatus)\")\n #set ($rssURL = \"${rssURL}&tags=$!escapetool.url($xcontext.macro.params.tags)\")\n #set ($rssURL = \"${rssURL}¤tWiki=$!escapetool.url($services.wiki.currentWikiId)\")\n <p class=\"notifications-macro-rss-link\"><a href=\"$rssURL\" rel=\"nofollow external\">$services.icon.renderHTML(\'rss\') $escapetool.xml($services.localization.render(\'notifications.rss.feedLink\'))</a></p>\n#end\n</div>\n{{/html}}\n#end\n{{/velocity}}'),(6146904346348649845,'contentDescription',''),(6146904346348649845,'contentJavaType',''),(6146904346348649845,'description',''),(6180592288836573448,'spaces',''),(6191212517496095252,'description',''),(6230530917979272079,'description','Only list pages having the specified parent'),(6235560115865168718,'code','document.observe(\'xwiki:dom:loaded\', (function() {\n var _showTooltipOnHover = function(event) {\n var panel = event.element();\n if (!panel.hasClassName(\'panelcontainer\')) {\n panel = panel.up(\'.panelcontainer\');\n }\n if(!window.isDraggingPanel && panel._x_tooltip.strip()) {\n showtip(panel, panel._x_tooltip, 300);\n }\n }\n $$(\'.panelcontainer\').each(function(panel) {\n panel._x_tooltip = panel.title.replace(/</g,\'<\').replace(/>/g,\'>\').replace(/&/g,\'&\');\n panel.title = \"\";\n Event.observe(panel, \"mouseover\", _showTooltipOnHover);\n });\n\n $(\'draganddroptooltip\')._x_tooltip = $(\'draganddroptooltip\').title;\n $(\'draganddroptooltip\').title = \'\';\n Event.observe($(\'draganddroptooltip\'), \"mouseover\", function() {\n if(window.isDraggingPanel) {\n return;\n }\n showtip($(\'draganddroptooltip\'), $(\'draganddroptooltip\')._x_tooltip, 300);\n });\n\n Event.observe($$(\'.pagelayoutoption0\')[0], \"click\", function(event) { changePreviewLayout($$(\'.pagelayoutoption0\')[0], 0); });\n Event.observe($$(\'.pagelayoutoption1\')[0], \"click\", function(event) { changePreviewLayout($$(\'.pagelayoutoption1\')[0], 1); });\n Event.observe($$(\'.pagelayoutoption2\')[0], \"click\", function(event) { changePreviewLayout($$(\'.pagelayoutoption2\')[0], 2); });\n Event.observe($$(\'.pagelayoutoption3\')[0], \"click\", function(event) { changePreviewLayout($$(\'.pagelayoutoption3\')[0], 3); });\n\n Event.observe($(\'saveLayout\'), \"click\", function(event) {\n event.stop();\n save();\n });\n\n Event.observe($(\'revertLayout\'), \"click\", function(event) {\n event.stop();\n revert();\n });\n}));'),(6248548578624469731,'disabledSyntaxes','plain/1.0|xdom+xml/current|xhtml/1.0|xwiki/2.0'),(6252332237303922888,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\n\n/**\n * Supports the following operations on a static list of (key, value) pairs: reorder/add/remove/edit.\n */\nXWiki.StaticListEditor = Class.create({\n initialize : function() {\n this.container = new Element(\'div\', {\'class\': \'staticListEditor\'}).update(\'<ul></ul><div class=\"inputLine\"><div class=\"first half\"><span class=\"xHint\">$escapetool.xml($services.localization.render(\'platform.appwithinminutes.classEditorStaticListEditorItemValueLabel\'))</span><input type=\"text\"/></div><div class=\"second half\"><span class=\"xHint\">$escapetool.xml($services.localization.render(\'platform.appwithinminutes.classEditorStaticListEditorItemIDLabel\'))</span><input type=\"text\"/></div></div><input type=\"image\" class=\"add\" title=\"$escapetool.xml($services.localization.render(\'platform.appwithinminutes.classEditorStaticListEditorAddItemLabel\'))\" src=\"$xwiki.getSkinFile(\'icons/silk/add.png\')\" alt=\"$escapetool.xml($services.localization.render(\'platform.appwithinminutes.classEditorStaticListEditorAddItemLabel\'))\"/>\');\n this.keyInput = this.container.down(\'.second\').down(\'input\');\n this.valueInput = this.container.down(\'.first\').down(\'input\');\n this._deleteHandler = this._onDelete.bindAsEventListener(this);\n this._selectHandler = this._onSelect.bindAsEventListener(this);\n this.container.down(\'.add\').observe(\'click\', this._onAdd.bindAsEventListener(this));\n },\n getContainer : function() {\n return this.container;\n },\n put : function(key, value) {\n if (value == undefined || value == \'\') {\n return;\n }\n key = key || value;\n var item = this._getItem(key);\n if (!item) {\n item = new Element(\'li\').update(\'<span>__value__</span><span title=\"$escapetool.xml($services.localization.render(\'platform.appwithinminutes.classEditorStaticListEditorDeleteItemLabel\'))\" class=\"delete\">X</span>\');\n item.key = key;\n item.down().observe(\'mousedown\', this._selectHandler);\n item.down(\'.delete\').observe(\'click\', this._deleteHandler);\n var list = this.container.down(\'ul\');\n list.insert(item);\n Sortable.create(list, {overlap: \'horizontal\', constraint: \'horizontal\'});\n }\n var valueContainer = item.down();\n valueContainer.title = key != value ? key : \'\';\n valueContainer.firstChild.nodeValue = value;\n },\n each : function(visitor) {\n this.container.select(\'li\').each(function(item) {\n visitor({key: item.key, value: item.down().firstChild.nodeValue});\n });\n },\n size: function() {\n return this.container.down(\'ul\').childElements().length;\n },\n _getItem : function(key) {\n var items = this.container.select(\'li\');\n for(var i = 0; i < items.length; i++) {\n if (items[i].key == key) {\n return items[i];\n }\n }\n return undefined;\n },\n _onDelete : function(event) {\n event.element().stopObserving(\'click\', this._deleteHandler).up(\'li\').remove();\n },\n _onAdd : function(event) {\n event.stop();\n this.put(this.keyInput.value, this.valueInput.value);\n this.valueInput.activate();\n },\n _onSelect : function(event) {\n var item = event.element().up();\n this.keyInput.value = item.key;\n this.valueInput.value = item.down().firstChild.nodeValue;\n }\n});\n\n/**\n * Enhances the StaticList fields when editing a class.\n */\nXWiki.StaticListManager = Class.create({\n initialize : function(field) {\n this.field = field;\n\n this._deleteFieldHandler = this._onDeleteField.bindAsEventListener(this);\n document.observe(\'xwiki:class:deleteField\', this._deleteFieldHandler);\n this._saveClassHandler = this._onSaveClass.bind(this);\n document.observe(\'xwiki:class:save\', this._saveClassHandler);\n\n this._enhanceValuesInput();\n },\n getDisplayType : function() {\n return $(this.field.getPropertyId(\'displayType\'));\n },\n getSize : function() {\n return $(this.field.getPropertyId(\'size\'));\n },\n getMultiSelect : function() {\n return $(this.field.getPropertyId(\'multiSelect\'));\n },\n getValues : function() {\n return $(this.field.getPropertyId(\'values\'));\n },\n _enhanceValuesInput : function() {\n var valuesInput = this.getValues();\n this.valuesEditor = new XWiki.StaticListEditor();\n valuesInput.value.split(\'|\').each(function(serializedPair) {\n var pair = serializedPair.split(\'=\', 2);\n this.valuesEditor.put(pair[0], pair[pair.length - 1]);\n }.bind(this));\n valuesInput.hide();\n valuesInput.insert({after: this.valuesEditor.getContainer()});\n },\n _onSaveClass : function() {\n var values = [];\n this.valuesEditor.each(function(pair) {\n if (pair.key == pair.value) {\n values.push(pair.key);\n } else {\n values.push(pair.key + \'=\' + pair.value);\n }\n });\n this.getValues().value = values.join(\'|\');\n },\n _onDeleteField : function(event) {\n if (this.field.getContainer() == event.memo.field.getContainer()) {\n document.stopObserving(\'xwiki:class:deleteField\', this._deleteFieldHandler);\n document.stopObserving(\'xwiki:class:save\', this._saveClassHandler);\n this.field = undefined;\n }\n }\n});\n\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));\n\nrequire.config({\n paths: {\n \'xwiki-awm-class-field-enhancer\': \"$xwiki.getURL(\'AppWithinMinutes.DBList\', \'jsx\', \'r=1\')\",\n \'xwiki-awm-list-enhancer\': \"$xwiki.getURL(\'AppWithinMinutes.DBList\', \'jsx\', \'r=1\')\"\n }\n});\n\n// Static List Class Field Enhancer\nrequire([\'jquery\', \'xwiki-awm-class-field-enhancer\', \'xwiki-awm-list-enhancer\'], function($, classFieldEnhancer, listEnhancer) {\n var fieldTemplate = $jsontool.serialize($doc.fullName);\n\n // Generic list enhancements.\n listEnhancer(fieldTemplate);\n\n // Enhancements specific to static lists.\n classFieldEnhancer({\n id: \'StaticList\',\n fieldTemplate: fieldTemplate,\n enhance: function(field) {\n new XWiki.StaticListManager(field);\n }\n });\n});'),(6255992382789837906,'description',''),(6275132521357195931,'async_context',''),(6275132521357195931,'content','{{velocity}}\n#largepanelheader($services.localization.render(\'welcome\'))\n\n$services.localization.render(\'xe.panels.rights.welcome\')\n\n$services.localization.render(\'xe.panels.rights.explanation\')\n\n**$services.localization.render(\'xe.panels.rights.warning\')** $services.localization.render(\'xe.panels.rights.noauthentication\')\n#panelfooter()\n{{/velocity}}'),(6275132521357195931,'description','Rights Editor Welcome message and brief information.'),(6291729780716770376,'async_context',''),(6291729780716770376,'content','{{velocity}}\n## Display the first extension only, ordered by priority (lowest first).\n#set ($extensions = $services.uix.getExtensions(\'org.xwiki.platform.search.ui.docdoesnotexist\', {\'sortByParameter\' : \'order\'}))\n#if ($extensions.size() > 0)\n {{html clean=\'false\'}}$services.rendering.render($extensions[0].execute(), \'html/5.0\'){{/html}}\n#end\n{{/velocity}}\n'),(6291729780716770376,'parameters','order=10000'),(6352250265993074411,'code','require([\'jquery\', \'bootstrap\'], function($) {\n // Don\'t follow the category link on click. Just expand/collapse the category.\n $(document).on(\'click\', \'.admin-menu a.panel-heading\', function(event) {\n event.preventDefault();\n });\n});\n\n/**\n * Live search in the category/section name and description.\n */\nrequire([\'jquery\'], function($) {\n var filterItem = function(text) {\n var name = $(this).text().toLowerCase();\n var description = ($(this).attr(\'title\') || \'\').toLowerCase();\n return typeof text === \'string\' && name.indexOf(text) < 0 && description.indexOf(text) < 0;\n };\n\n var filterPanelGroup = function(text) {\n var panelGroup = $(this);\n // Filter the sections.\n panelGroup.find(\'.list-group-item\').each(function() {\n $(this).toggleClass(\'hidden\', filterItem.call(this, text));\n });\n // Filter the categories.\n panelGroup.find(\'a.panel-heading\').each(function() {\n var panel = $(this).closest(\'.panel\');\n var hasVisibleSections = panel.find(\'.list-group-item\').not(\'.hidden\').size() > 0;\n var matchesFilterQuery = !filterItem.call($(this), text);\n panel.toggle(hasVisibleSections || matchesFilterQuery);\n if (!hasVisibleSections && matchesFilterQuery) {\n // If the filter query matches only the category name/description and none of its sections name/description then\n // show all the sections.\n panel.find(\'.list-group-item\').removeClass(\'hidden\');\n }\n // Fix the style (round corners) of the last visible section in each category.\n panel.find(\'.list-group-item.last\').removeClass(\'last\');\n panel.find(\'.list-group-item\').not(\'.hidden\').last().addClass(\'last\');\n });\n // Expand the first visible category, if there is a filter query.\n if (typeof text === \'string\' && text !== \'\') {\n // We expand the category manually, instead of using the JavaScript API of Bootstrap Collapse, because we can\'t\n // disable the animation.\n panelGroup.find(\'.panel-collapse.in\').removeClass(\'in\')\n .prev(\'.panel-heading\').addClass(\'collapsed\').attr(\'aria-expanded\', false);\n panelGroup.find(\'a.panel-heading\').filter(\':visible\').first()\n .removeClass(\'collapsed\').attr(\'aria-expanded\', true)\n // Remove the height:0px in-line style added by the collapse animation because it breaks the border styles.\n .next(\'.panel-collapse\').addClass(\'in\').css(\'height\', \'\');\n }\n // Show/Hide the \"No results.\" message.\n var hasVisibleCategories = panelGroup.find(\'a.panel-heading\').filter(\':visible\').size() > 0;\n panelGroup.find(\'.noitems\').toggleClass(\'hidden\', hasVisibleCategories);\n };\n\n var timeoutId;\n $(\'.panel-group-filter\').on(\'input\', function() {\n // Cancel the previously scheduled filter operation.\n clearTimeout(timeoutId);\n var panelGroup = $(this).closest(\'.panel-group\');\n var text = $(this).val().toLowerCase();\n // Schedule a new filter operation.\n timeoutId = setTimeout($.proxy(filterPanelGroup, panelGroup, text), 500);\n });\n});'),(6371868270824238049,'registrationSuccessMessage','#set($fullName = \"$request.get(\'register_first_name\') $request.get(\'register_last_name\')\")\n{{info}}$services.localization.render(\'core.register.successful\', [\"[[$fullName>>$userSpace$userName]]\", $userName]){{/info}}'),(6371868270824238049,'welcomeMessage','{{translation key=\"core.register.welcome\"/}}'),(6398268715832411259,'description','Whether to show the document attachments or not.'),(6403969565576156560,'codeToExecute','{{notificationsApplicationsPreferences target=\"wiki\" /}}'),(6437174684837264717,'async_context',''),(6437174684837264717,'code','{{velocity}}\n#if (\"$!xcontext.macro.params.columns\" != \"\") \n #set ($collist = [])\n #foreach ($colname in $xcontext.macro.params.columns.split(\',\'))\n #set ($discard = $collist.add($colname.trim()))\n #end\n#else\n #set($collist = [\'doc.title\', \'doc.location\', \'doc.date\', \'doc.author\'])\n#end\n#set($colprops = {\n \'doc.title\' : { \'size\' : 30, \'link\' : \'view\' },\n \'doc.location\' : { \'html\': true },\n \'doc.fullName\' : { \'size\' : 30, \'link\' : \'view\' },\n \'doc.name\' : { \'size\' : 30, \'link\' : \'view\' },\n \'doc.space\' : { \'link\' : \'space\' },\n \'doc.author\' : { \'link\' : \'author\' }\n})\n#set($options = { \n \'translationPrefix\' : \'platform.index.\',\n \'rowCount\' : $xcontext.macro.params.count,\n \'description\' : \'This table lists documents found on this wiki based on passed criteria. The columns can be sorted and some can be filtered.\'\n})\n#if (\"$!xcontext.macro.params.space\" != \"\") \n #set ($extraParams = \"&space=$escapetool.url($xcontext.macro.params.space)\")\n#end\n#if (\"$!xcontext.macro.params.location\" != \"\") \n #set ($extraParams = \"$!{extraParams}&location=$escapetool.url($xcontext.macro.params.location)\")\n#end\n#if (\"$!xcontext.macro.params.parent\" != \"\") \n #set ($extraParams = \"$!{extraParams}&parent=$escapetool.url($xcontext.macro.params.parent)\")\n#end\n#if (\"$!extraParams\" != \"\")\n #set($discard = $options.put(\'extraParams\', $extraParams))\n#end\n#if(!$isGuest && $xcontext.macro.params.actions == \"true\")\n #set($discard = $collist.add(\'_actions\'))\n #set($discard = $colprops.put(\'_actions\', {\n \'actions\': [\'copy\', \'rename\', \'rights\', \'delete\'],\n \'filterable\': false,\n \'sortable\': false\n }))\n#end\n#if ($collist.contains(\'doc.location\'))\n #set ($discard = $options.put(\'selectedColumn\',\'doc.location\'))\n#end\n#if (\"$!xcontext.macro.params.id\" != \"\")\n #set ($livetableId = $xcontext.macro.params.id)\n#else\n ## TODO: Improve this since we could have several livetables on the same page with same ids\n #set ($livetableId = \"documents-$mathtool.random(1, 1000)\")\n#end\n#livetable($livetableId $collist $colprops $options)\n{{/velocity}}'),(6437174684837264717,'contentDescription',''),(6437174684837264717,'contentJavaType',''),(6437174684837264717,'description','Displays a list of documents in a Livetable'),(6442022539777438176,'description','This application provides the ability to create tours for any page.'),(6451673471247607905,'code','#template(\'colorThemeInit.vm\')\n#bt-variables {\n border-left: 1px solid $theme.borderColor;\n height: 525px;\n overflow-y: auto;\n}\n\n#preview-curtain {\n background-color: $theme.pageBackgroundColor;\n opacity: 0.9;\n position: absolute;\n text-align: center;\n vertical-align: center;\n}'),(6489018182685281174,'description',''),(6566633795471894832,'groups','xwiki:XWiki.XWikiAllGroup,XWiki.XWikiAllGroup'),(6566633795471894832,'users','XWiki.XWikiGuest'),(6580011987323805505,'async_context',''),(6580011987323805505,'content','{{velocity}}\n#panelhiddenheader($services.localization.render(\'panels.search.title\'))\n{{html clean=\"false\"}}\n <form action=\"$xwiki.getURL(\'Main.Search\')\" class=\'xformInline\'>\n <div class=\"globalsearch input-group\">\n <label for=\"globalsearchinput\" class=\"hidden\">$services.localization.render(\'panels.search.query\')</label>\n <input id=\"globalsearchinput\" class=\"globalsearchinput withTip useTitleAsTip\" type=\"text\" name=\"text\" title=\"$services.localization.render(\'panels.search.inputText\')\" size=\"15\"/>\n <span class=\"input-group-btn buttonwrapper\">\n <button type=\"submit\" class=\"btn btn-primary\">\n $services.icon.renderHTML(\'search\')<span class=\"hidden\">$services.localization.render(\'panels.search.submit\')</span>\n </button>\n </span>\n </div>\n </form>\n{{/html}}\n#panelfooter()\n{{/velocity}}'),(6580011987323805505,'description','Search Tool.'),(6609958008505699240,'lessCode','// Paper 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: #212121;\n@gray: #666;\n@gray-light: #bbb;\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: #2196F3;\n@brand-success: #4CAF50;\n@brand-info: #9C27B0;\n@brand-warning: #ff9800;\n@brand-danger: #e51c23;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @gray;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Roboto\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 13px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: 56px;\n@font-size-h2: 45px;\n@font-size-h3: 34px;\n@font-size-h4: 24px;\n@font-size-h5: 20px;\n@font-size-h6: 14px;\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.846; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: inherit;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: #444;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n//@icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 16px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 3px;\n@border-radius-large: 3px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #444;\n@btn-default-bg: #fff;\n@btn-default-border: transparent;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: transparent;\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: transparent;\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: transparent;\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: transparent;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: transparent;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: transparent;\n//** `<input disabled>` background color\n@input-bg-disabled: transparent;\n\n//** Text color for `<input>`s\n@input-color: @gray;\n//** `<input>` border color\n@input-border: transparent;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: transparent;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @text-color;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @gray-lighter;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: @gray-light;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 64px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @gray-light;\n@navbar-default-bg: #fff;\n@navbar-default-border: transparent;\n\n// Navbar links\n@navbar-default-link-color: @gray;\n@navbar-default-link-hover-color: @gray-dark;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: @gray-dark;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: transparent;\n@navbar-default-toggle-icon-bar-bg: rgba(0,0,0,0.5);\n@navbar-default-toggle-border-color: transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: transparent;\n\n// Inverted navbar links\n@navbar-inverse-link-color: lighten(@brand-primary, 30%);\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\\\n@navbar-inverse-toggle-hover-bg: transparent;\n@navbar-inverse-toggle-icon-bar-bg: rgba(0,0,0,0.5);\n@navbar-inverse-toggle-border-color: transparent;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: transparent;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: transparent;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: transparent;\n\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: #f9f9f9;\n@jumbotron-heading-color: @headings-color;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: @brand-success;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: @brand-info;\n@state-info-bg: #e1bee7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: @brand-warning;\n@state-warning-bg: #ffe0b2;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: @brand-danger;\n@state-danger-bg: #f9bdbb;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #727272;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: transparent;\n//** Popover fallback border color\n@popover-fallback-border-color: transparent;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 7.5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 15px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: transparent;\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: transparent;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: #fff;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: #fff;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: #fff;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: #fff;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f9f9f9;\n@well-border: transparent;\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: normal;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: normal;\n@close-color: #000;\n@close-text-shadow: none;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Paper 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Roboto:300,400,500,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n border: none;\n .box-shadow(0 1px 2px rgba(0,0,0,.3));\n\n &-brand {\n font-size: 24px;\n }\n\n &-inverse {\n .navbar-form {\n\n input[type=text],\n input[type=password] {\n color: #fff;\n .box-shadow(inset 0 -1px 0 @navbar-inverse-link-color);\n .placeholder(@navbar-inverse-link-color);\n\n &:focus {\n .box-shadow(inset 0 -2px 0 #fff);\n }\n }\n }\n }\n}\n\n// Buttons ====================================================================\n\n#btn(@class,@bg) {\n .btn-@{class} {\n background-size: 200%;\n background-position: 50%;\n\n &:focus {\n background-color: @bg;\n }\n\n &:hover,\n &:active:hover {\n background-color: darken(@bg, 6%);\n }\n\n &:active {\n background-color: darken(@bg, 12%);\n #gradient > .radial(darken(@bg, 12%) 10%, @bg 11%);\n background-size: 1000%;\n .box-shadow(2px 2px 4px rgba(0,0,0,.4));\n }\n }\n}\n\n#btn(default,@btn-default-bg);\n#btn(primary,@btn-primary-bg);\n#btn(success,@btn-success-bg);\n#btn(info,@btn-info-bg);\n#btn(warning,@btn-warning-bg);\n#btn(danger,@btn-danger-bg);\n#btn(link,#fff);\n\n.btn {\n text-transform: uppercase;\n border: none;\n .box-shadow(1px 1px 4px rgba(0,0,0,.4));\n .transition(all 0.4s);\n\n &-link {\n border-radius: @btn-border-radius-base;\n .box-shadow(none);\n color: @btn-default-color;\n\n &:hover,\n &:focus {\n .box-shadow(none);\n color: @btn-default-color;\n text-decoration: none;\n }\n }\n\n &-default {\n\n &.disabled {\n background-color: rgba(0, 0, 0, 0.1);\n color: rgba(0, 0, 0, 0.4);\n opacity: 1;\n }\n }\n}\n\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: 0;\n }\n\n &-vertical {\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: 0;\n }\n }\n}\n\n// Typography =================================================================\n\nbody {\n -webkit-font-smoothing: antialiased;\n letter-spacing: .1px;\n}\n\np {\n margin: 0 0 1em;\n}\n\ninput,\nbutton {\n -webkit-font-smoothing: antialiased;\n letter-spacing: .1px;\n}\n\na {\n .transition(all 0.2s);\n}\n\n// Tables =====================================================================\n\n.table-hover {\n > tbody > tr,\n > tbody > tr > th,\n > tbody > tr > td {\n .transition(all 0.2s);\n }\n}\n\n// Forms ======================================================================\n\nlabel {\n font-weight: normal;\n}\n\ntextarea,\ntextarea.form-control,\ninput.form-control,\ninput[type=text],\ninput[type=password],\ninput[type=email],\ninput[type=number],\n[type=text].form-control,\n[type=password].form-control,\n[type=email].form-control,\n[type=tel].form-control,\n[contenteditable].form-control {\n padding: 0;\n border: none;\n border-radius: 0;\n -webkit-appearance: none;\n .box-shadow(inset 0 -1px 0 #ddd);\n font-size: 16px;\n\n &:focus {\n .box-shadow(inset 0 -2px 0 @brand-primary);\n }\n\n &[disabled],\n &[readonly] {\n .box-shadow(none);\n border-bottom: 1px dotted #ddd;\n }\n\n &.input {\n &-sm {\n font-size: @font-size-small;\n }\n\n &-lg {\n font-size: @font-size-large;\n }\n }\n}\n\nselect,\nselect.form-control {\n border: 0;\n border-radius: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding-left: 0;\n padding-right: 0\\9; // remove padding for < ie9 since default arrow can\'t be removed\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);\n background-size: 13px;\n background-repeat: no-repeat;\n background-position: right center;\n .box-shadow(inset 0 -1px 0 #ddd);\n font-size: 16px;\n line-height: 1.5;\n\n &::-ms-expand {\n display: none;\n }\n\n &.input {\n &-sm {\n font-size: @font-size-small;\n }\n\n &-lg {\n font-size: @font-size-large;\n }\n }\n\n &:focus {\n .box-shadow(inset 0 -2px 0 @brand-primary);\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);\n }\n\n &[multiple] {\n background: none;\n }\n}\n\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n label {\n padding-left: 25px;\n }\n\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-left: -25px;\n }\n}\n\ninput[type=\"radio\"],\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"] {\n position: relative;\n margin-top: 6px;\n margin-right: 4px;\n vertical-align: top;\n border: none;\n background-color: transparent;\n -webkit-appearance: none;\n appearance: none;\n cursor: pointer;\n\n &:focus {\n outline: none;\n }\n\n &:before,\n &:after {\n content: \"\";\n display: block;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n .transition(240ms);\n }\n\n &:before {\n position: absolute;\n left: 0;\n top: -3px;\n background-color: @brand-primary;\n .scale(0);\n }\n\n &:after {\n position: relative;\n top: -3px;\n border: 2px solid @gray;\n }\n\n &:checked:before {\n .scale(0.5);\n }\n\n &:disabled:checked:before {\n background-color: @gray-light;\n }\n\n &:checked:after {\n border-color: @brand-primary;\n }\n\n &:disabled:after,\n &:disabled:checked:after {\n border-color: @gray-light;\n }\n}\n\ninput[type=\"checkbox\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: relative;\n border: none;\n margin-bottom: -4px;\n -webkit-appearance: none;\n appearance: none;\n cursor: pointer;\n\n &:focus {\n outline: none;\n }\n\n &:focus:after {\n border-color: @brand-primary;\n }\n\n &:after {\n content: \"\";\n display: block;\n width: 18px;\n height: 18px;\n margin-top: -2px;\n margin-right: 5px;\n border: 2px solid @gray;\n border-radius: 2px;\n .transition(240ms);\n }\n\n &:checked:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 6px;\n display: table;\n width: 6px;\n height: 12px;\n border: 2px solid #fff;\n border-top-width: 0;\n border-left-width: 0;\n .rotate(45deg);\n }\n\n &:checked:after {\n background-color: @brand-primary;\n border-color: @brand-primary;\n }\n\n &:disabled:after {\n border-color: @gray-light;\n }\n\n &:disabled:checked:after {\n background-color: @gray-light;\n border-color: transparent;\n }\n}\n\n.has-warning {\n input:not([type=checkbox]),\n .form-control,\n input.form-control[readonly],\n input[type=text][readonly],\n [type=text].form-control[readonly],\n input:not([type=checkbox]):focus,\n .form-control:focus {\n border-bottom: none;\n .box-shadow(inset 0 -2px 0 @brand-warning);\n }\n}\n\n.has-error {\n input:not([type=checkbox]),\n .form-control,\n input.form-control[readonly],\n input[type=text][readonly],\n [type=text].form-control[readonly],\n input:not([type=checkbox]):focus,\n .form-control:focus {\n border-bottom: none;\n .box-shadow(inset 0 -2px 0 @brand-danger);\n }\n}\n\n.has-success {\n input:not([type=checkbox]),\n .form-control,\n input.form-control[readonly],\n input[type=text][readonly],\n [type=text].form-control[readonly],\n input:not([type=checkbox]):focus,\n .form-control:focus {\n border-bottom: none;\n .box-shadow(inset 0 -2px 0 @brand-success);\n }\n}\n\n// Remove the Bootstrap feedback styles for input addons\n.input-group-addon {\n .has-warning &, .has-error &, .has-success & {\n color: @input-color;\n border-color: @input-group-addon-border-color;\n background-color: @input-group-addon-bg;\n }\n}\n\n// Navs =======================================================================\n\n.nav-tabs {\n > li > a,\n > li > a:focus {\n margin-right: 0;\n background-color: transparent;\n border: none;\n color: @navbar-default-link-color;\n .box-shadow(inset 0 -1px 0 #ddd);\n .transition(all 0.2s);\n\n &:hover {\n background-color: transparent;\n .box-shadow(inset 0 -2px 0 @brand-primary);\n color: @brand-primary;\n }\n }\n\n & > li.active > a,\n & > li.active > a:focus {\n border: none;\n .box-shadow(inset 0 -2px 0 @brand-primary);\n color: @brand-primary;\n\n &:hover {\n border: none;\n color: @brand-primary;\n }\n }\n\n & > li.disabled > a {\n .box-shadow(inset 0 -1px 0 #ddd);\n }\n\n &.nav-justified {\n\n & > li > a,\n & > li > a:hover,\n & > li > a:focus,\n & > .active > a,\n & > .active > a:hover,\n & > .active > a:focus {\n border: none;\n }\n }\n\n .dropdown-menu {\n margin-top: 0;\n }\n}\n\n.dropdown-menu {\n margin-top: 0;\n border: none;\n .box-shadow(0 1px 4px rgba(0,0,0,.3));\n}\n\n// Indicators =================================================================\n\n.alert {\n border: none;\n color: #fff;\n\n &-success {\n background-color: @brand-success;\n }\n\n &-info {\n background-color: @brand-info;\n }\n\n &-warning {\n background-color: @brand-warning;\n }\n\n &-danger {\n background-color: @brand-danger;\n }\n\n a:not(.close),\n .alert-link {\n color: #fff;\n font-weight: bold;\n }\n\n .close {\n color: #fff;\n }\n}\n\n.badge {\n padding: 3px 6px 5px;\n}\n\n.progress {\n position: relative;\n z-index: 1;\n height: 6px;\n border-radius: 0;\n\n .box-shadow(none);\n\n &-bar {\n .box-shadow(none);\n\n &:last-child {\n border-radius: 0 3px 3px 0;\n }\n\n &:last-child {\n &:before {\n display: block;\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n z-index: -1;\n background-color: lighten(@progress-bar-bg, 35%);\n }\n }\n\n &-success:last-child.progress-bar:before {\n background-color: lighten(@brand-success, 35%);\n }\n\n &-info:last-child.progress-bar:before {\n background-color: lighten(@brand-info, 45%);\n }\n &-warning:last-child.progress-bar:before {\n background-color: lighten(@brand-warning, 35%);\n }\n\n &-danger:last-child.progress-bar:before {\n background-color: lighten(@brand-danger, 25%);\n }\n }\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.close {\n font-size: 34px;\n font-weight: 300;\n line-height: 24px;\n opacity: 0.6;\n .transition(all 0.2s);\n\n &:hover {\n opacity: 1;\n }\n}\n\n.list-group {\n\n &-item {\n padding: 15px;\n }\n\n &-item-text {\n color: @gray-light;\n }\n}\n\n.well {\n border-radius: 0;\n .box-shadow(none);\n}\n\n.panel {\n border: none;\n border-radius: 2px;\n .box-shadow(0 1px 4px rgba(0,0,0,.3));\n\n &-heading {\n border-bottom: none;\n }\n\n &-footer {\n border-top: none;\n }\n}\n\n.popover {\n border: none;\n .box-shadow(0 1px 4px rgba(0,0,0,.3));\n}\n\n.carousel {\n &-caption {\n h1, h2, h3, h4, h5, h6 {\n color: inherit;\n }\n }\n}\n\n// XWiki customization\n\n@font-size-h1: 34px;\n@font-size-h2: 24px;\n@font-size-h3: 20px;\n@font-size-h4: 18px;\n@font-size-h5: 16px;\n@font-size-h6: 14px;\n\ndiv.main {\n .box-shadow(0 1px 4px rgba(0,0,0,.3));\n border: medium none;\n border-radius: 2px;\n margin-top: 20px;\n}\n\n.panel-width-Small div.panel.Applications{\n .box-shadow(0 1px 4px rgba(0,0,0,.3));\n border: medium none;\n border-radius: 2px;\n margin-top: 5px;\n}'),(6614909075021286704,'code','require([\'jquery\'], function($) {\n $(\'#tmEditWysiwyg\').parent(\'li\').after(function() {\n var url = $(this).children(\'a\').attr(\'href\');\n url = url.replace(\'editor=wysiwyg\', \'editor=inline&sheet=CKEditor.EditSheet\');\n return \'<li><a id=\"tmEditCKEditor\" title=\"CKEditor\" href=\"\' + url\n + \'\"><span class=\"glyphicon glyphicon-pencil\"></span> CKEditor</a></li>\';\n });\n});'),(6666274208330563127,'code','(function(){\n\n var isWikiNameSet = false;\n var isAliasSet = false;\n var lastWikiName;\n\n ## Error messages\n #set ($MSG_ERROR_WIKIALREADYEXISTS = \"$services.localization.render(\'platform.wiki.create.error.wikiname.wikialreadyexists\')\")\n #set ($MSG_ERROR_DATABASEALREADYEXISTS = \"$services.localization.render(\'platform.wiki.create.error.wikiname.databasealreadyexists\')\")\n #set ($MSG_ERROR_WIKINAMEALREADYUSED = \"$services.localization.render(\'platform.wiki.create.error.wikiname.wikialreadyexists\')\")\n #set ($MSG_ERROR_WIKINAMEEMPTY = \"$services.localization.render(\'platform.wiki.create.error.wikiname.empty\')\")\n #set ($MSG_ERROR_WIKIPRETTYNAMEEMPTY = \"$services.localization.render(\'platform.wiki.create.prettyname.empty\')\")\n #set ($MSG_INFO_WIKINAMEVALID = \"$services.localization.render(\'workspacemanager.wikiname.info.valid\')\")\n #set ($ISWIKINAMEAVAILABLE = $xwiki.getURL($services.model.createDocumentReference(\"\", \"WikiManager\", \"IsWikiOrDatabaseOrAvailableService\")))\n\n /**\n * Init the event handlers\n */\n function init() {\n if ($(\'prettyname\')) {\n initStepType();\n } else if ($(\'owner\')) {\n initStepUsers();\n }\n }\n \n function initStepType() {\n var prettyName = $(\'prettyname\');\n prettyName.observe(\'change\', prettyNameChanged);\n prettyName.observe(\'keyup\', prettyNameChanged);\n var wikiName = $(\'wikiname\');\n wikiName.observe(\'change\', wikiNameChanged);\n wikiName.observe(\'keyup\', wikiNameChanged);\n var alias = $(\'wikialias\');\n if (alias) {\n alias.observe(\'change\', aliasChanged);\n alias.observe(\'keyup\', aliasChanged);\n }\n if(prettyName.value.blank() || wikiName.value.blank()){\n $(\'wizard-next\').disabled = true;\n }\n }\n\n function initStepUsers() {\n userScopeChanged();\n $$(\'input[type=radio][name=userScope]\').each(function (item){\n item.observe(\'click\', userScopeChanged);\n });\n }\n\n /**\n * Pretty name changed\n */\n function prettyNameChanged(event){\n var prettyName = $(\'prettyname\');\n if(prettyName.value.blank()){\n $(\'wikiprettynamevalidation\').innerHTML = \"$MSG_ERROR_WIKIPRETTYNAMEEMPTY\";\n prettyName.addClassName(\'xErrorField\');\n }else{\n $(\'wikiprettynamevalidation\').innerHTML = \'\';\n prettyName.removeClassName(\'xErrorField\');\n // If the user has manually changed the wikiname, we don\'t generate it automaticaly anymore\n if(!isWikiNameSet){\n var wikiName = $(\'wikiname\');\n wikiName.value = prettyName.value.replace(/[^a-zA-Z0-9]/g,\'_\').toLowerCase();\n validateWikiName();\n }\n if(!isAliasSet){\n var wikiAlias = $(\'wikialias\');\n if (wikiAlias) {\n var alias = filterWikiName(prettyName.value.replace(/[^a-zA-Z0-9]/g,\'_\').toLowerCase());\n alias += getAliasSuffix();\n wikiAlias.value = alias;\n }\n }\n }\n }\n /**\n * Wiki name changed\n */\n function wikiNameChanged(event){\n isWikiNameSet = true;\n validateWikiName();\n }\n /**\n * Alias changed\n */\n function aliasChanged(event){\n isAliasSet = true;\n }\n /**\n * Validate the wiki name\n */\n function validateWikiName(){\n var wikiNameElement = $(\'wikiname\');\n var wikiname = wikiNameElement.value;\n var filteredWikiName = filterWikiName(wikiname);\n if (wikiname != filteredWikiName) {\n wikiNameElement.value = filteredWikiName;\n wikiname = filteredWikiName;\n }\n if (lastWikiName == wikiname){\n return;\n }\n lastWikiName = wikiname;\n if (wikiname && !wikiname.blank()) {\n var surl = \"$ISWIKINAMEAVAILABLE\" + \"?xpage=plain&outputSyntax=plain&ajax=1&wikiname=\" + escape(wikiname);\n surl += \"&form_token=$!{services.csrf.getToken()}\";\n new Ajax.Request(surl, {\n method: \'get\',\n onSuccess: function(transport) {\n if (transport.responseText == \"true\") {\n $(\'wikinamevalidation\').innerHTML = \"\";\n wikiNameElement.removeClassName(\'xErrorField\');\n if (!$(\'prettyname\').value.blank()) {\n $(\'wizard-next\').disabled = false;\n }\n }\n else if (transport.responseText == \"database\"){\n $(\'wikinamevalidation\').innerHTML = \"$MSG_ERROR_DATABASEALREADYEXISTS\";\n wikiNameElement.addClassName(\'xErrorField\');\n $(\'wizard-next\').disabled = true;\n }\n else if (transport.responseText == \"wiki\"){\n $(\'wikinamevalidation\').innerHTML = \"$MSG_ERROR_WIKIALREADYEXISTS\";\n wikiNameElement.addClassName(\'xErrorField\');\n $(\'wizard-next\').disabled = true;\n }\n else{\n $(\'wikinamevalidation\').innerHTML = \"$MSG_ERROR_WIKINAMEALREADYUSED\";\n wikiNameElement.addClassName(\'xErrorField\');\n $(\'wizard-next\').disabled = true;\n }\n }\n });\n }\n else{\n $(\'wikinamevalidation\').innerHTML = \"$MSG_ERROR_WIKINAMEEMPTY\";\n $(\'wizard-next\').disabled = true;\n }\n }\n /**\n * Filter wiki name\n */\n function filterWikiName(wikiName){\n var result = noaccent(wikiName);\n\n // The server-side code strips \'_\' chars from the database name.\n result = result.replace(/[_]/g, \"\");\n\n // Classic requirement for an identifier is to start with a letter.\n while (result.length > 0 && !isNaN(result.charAt(0))) {\n result = result.substring(1);\n }\n\n // Out of all databases, Oracle seems to be the least permissive, limiting schema names to 30 chars.\n if (result.length > 30) {\n result = result.substring(0, 30);\n }\n\n // Keep IDs lowercased.\n result = result.toLowerCase();\n\n return result;\n }\n function getAliasSuffix() {\n var suffix = \"${services.wiki.aliasSuffix}\";\n if (suffix != \"\") {\n suffix = \".\" + suffix;\n } else {\n // try to compute the suffix from the request URL\n var hostname = window.location.hostname;\n if (hostname != \"localhost\" && !hostname.match(/[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/g)) {\n suffix = hostname.substr(hostname.indexOf(\".\"));\n }\n }\n return suffix;\n}\n\n function userScopeChanged(){\n var value = $$(\'input:checked[type=radio][name=userScope]\')[0].value\n if (value==\'local_only\') {\n // Disable membership type radio button\n $$(\'input[type=radio][name=membershipType]\').each(function (item){\n item.disabled = true;\n });\n // Disable the members\n $(\'members\').disabled = true;\n } else {\n // Enable membership type radio button\n $$(\'input[type=radio][name=membershipType]\').each(function (item){\n item.disabled = false;\n });\n // Enable the members\n $(\'members\').disabled = false;\n }\n };\n\n /**\n * Call Init\n */\n (XWiki && XWiki.domIsLoaded && init()) || document.observe(\"xwiki:dom:loaded\", init);\n\n})();'),(6668952805323219473,'groups','XWiki.XWikiAdminGroup'),(6668952805323219473,'users',''),(6771359405488978663,'code','// Define a LESS plugin that appends some code to the less code we render.\ndefine(function() {\n var LessCodePlugin = {};\n\n // We define a variable that will hold the content to append to the LESS code of the skin.\n LessCodePlugin.contentToAdd = \'\';\n \n // The \'install\' function is required for every LESS Plugin.\n // It is called during the initialization of LESS.\n LessCodePlugin.install = function (less, pluginManager) {\n // The second argument is the \'priority\' of the plugin.\n // \'1\' means: \'before import\', we actually execute the plugin before any action.\n // See: https://github.com/less/less.js/blob/v2.5.3/lib/less/plugin-manager.js#L42 (there is no other doc).\n pluginManager.addPreProcessor(this, 1);\n };\n \n // The \'process\' function is required for every LESS Plugin.\n // It is called at each LESS computation.\n LessCodePlugin.process = function (str, options) {\n // If the current processed file is the main one\n if (options.fileInfo.filename == options.fileInfo.rootFilename) {\n // We append the content to add to the \'str\' variable holding the LESS code to render.\n return str + \'\\n\' + this.contentToAdd;\n }\n // Otherwise, we just return the less file as it is\n // (the code to add is not supposed to be appended to imported files).\n return str;\n };\n \n return LessCodePlugin;\n});'); INSERT INTO `xwikilargestrings` VALUES (6808180624403904373,'lessCode','// Superhero 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: #4E5D6C; // #999\n@gray-lighter: #EBEBEB; // #eee\n\n@brand-primary: #DF691A;\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #2B3E50;\n//** Global text color on `<body>`.\n@text-color: @gray-lighter;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables\n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: inherit;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 8px;\n@padding-base-horizontal: 16px;\n\n@padding-large-vertical: 12px;\n@padding-large-horizontal: 24px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 0;\n@border-radius-large: 0;\n@border-radius-small: 0;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 6px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 3px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: @gray-light;\n//** Background color used for `.table-hover`.\n@table-bg-hover: darken(@gray-light, 3%);\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: @gray-light; \n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-light;\n@btn-default-border: transparent;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: transparent;\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: transparent;\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: transparent;\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: transparent;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: transparent;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @body-bg;\n//** `<input>` border color\n@input-border: transparent;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: transparent;\n\n//** Placeholder text color\n@input-color-placeholder: #ccc;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: @gray-light;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @btn-default-bg;\n//** Border color for textual input addons\n@input-group-addon-border-color: transparent;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: @gray-light;\n//** Dropdown menu `border-color`.\n@dropdown-border: transparent;\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: transparent;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: @body-bg;\n\n//** Dropdown link text color.\n@dropdown-link-color: @text-color;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: @text-color;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: darken(@gray-light, 3%);\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @body-bg;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @body-bg;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 40px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @text-color;\n@navbar-default-bg: @gray-light;\n@navbar-default-border: transparent;\n\n// Navbar links\n@navbar-default-link-color: @text-color;\n@navbar-default-link-hover-color: @navbar-default-link-color;\n@navbar-default-link-hover-bg: @dropdown-link-hover-bg;\n@navbar-default-link-active-color: @navbar-default-link-color;\n@navbar-default-link-active-bg: @dropdown-link-hover-bg;\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: @navbar-default-link-hover-bg;\n@navbar-default-toggle-icon-bar-bg: @text-color;\n@navbar-default-toggle-border-color: transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @text-color;\n@navbar-inverse-bg: @brand-primary;\n@navbar-inverse-border: transparent;\n\n// Inverted navbar links\n@navbar-inverse-link-color: @text-color;\n@navbar-inverse-link-hover-color: @navbar-inverse-link-color;\n@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-active-color: @navbar-inverse-link-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: @navbar-inverse-link-hover-bg;\n@navbar-inverse-toggle-icon-bar-bg: @text-color;\n@navbar-inverse-toggle-border-color: transparent;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-light;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: transparent;\n\n@nav-tabs-link-hover-border-color: @gray-light;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @text-color;\n@nav-tabs-active-link-hover-border-color: @gray-light;\n\n@nav-tabs-justified-link-border-color: @gray-light;\n@nav-tabs-justified-active-link-border-color: @gray-light;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @text-color;\n@pagination-bg: @gray-light;\n@pagination-border: transparent;\n\n@pagination-hover-color: @text-color;\n@pagination-hover-bg: @table-bg-hover;\n@pagination-hover-border: transparent;\n\n@pagination-active-color: @text-color;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: transparent;\n\n@pagination-disabled-color: darken(@table-bg-hover, 10%);\n@pagination-disabled-bg: @gray-light;\n@pagination-disabled-border: transparent;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-light;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: @text-color;\n@state-success-bg: @brand-success;\n@state-success-border: transparent;\n\n@state-info-text: @text-color;\n@state-info-bg: @brand-info;\n@state-info-border: transparent;\n\n@state-warning-text: @text-color;\n@state-warning-bg: @brand-warning;\n@state-warning-border: transparent;\n\n@state-danger-text: @text-color;\n@state-danger-bg: @brand-danger;\n@state-danger-border: transparent;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: @gray-light;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: transparent;\n//** Popover fallback border color\n@popover-fallback-border-color: transparent;\n\n//** Popover title background color\n@popover-title-bg: @table-bg-hover;\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: transparent;\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: transparent;\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: @gray-light;\n//** Modal content border color\n@modal-content-border-color: transparent;\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: transparent;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: @body-bg;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: @gray-light;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: @gray-light;\n//** `.list-group-item` border color\n@list-group-border: transparent;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: @table-bg-hover;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: @text-color;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: @text-color;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: @gray-light;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: transparent;\n@panel-footer-bg: @table-bg-hover;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: transparent;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: transparent;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: transparent;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: transparent;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: transparent;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: transparent;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//## \n\n@well-bg: @gray-light;\n@well-border: transparent;\n\n\n//== Badges\n//\n//##\n\n@badge-color: @text-color;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: 300;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @gray-light;\n//** Breadcrumb text color\n@breadcrumb-color: @text-color;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @text-color;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: @text-color;\n@close-text-shadow: none;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @text-color;\n//** Blockquote small color\n@blockquote-small-color: @text-color;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-light;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: lighten(@gray-light, 5%);\n\n// Superhero 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Lato:300,400,700\");\n\n// Navbar =====================================================================\n\n.navbar {\n .box-shadow(none);\n border: none;\n font-size: 12px;\n\n &-default {\n\n .badge {\n background-color: #fff;\n color: @navbar-default-bg;\n }\n }\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n\n &-default {\n &:hover {\n background-color: darken(@btn-default-bg, 3%);\n }\n }\n\n &-sm,\n &-xs {\n font-size: 12px;\n }\n}\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n.page-header {\n border-bottom-color: @table-border-color;\n}\n\n.dropdown-menu {\n\n border: none;\n margin: 0;\n .box-shadow(none);\n\n > li > a {\n font-size: 12px;\n }\n}\n\n.btn-group.open .dropdown-toggle {\n .box-shadow(none);\n}\n\n.dropdown-header {\n font-size: 12px;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n font-size: 12px;\n\n a:not(.btn) {\n color: #fff;\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .text-muted {\n color: @text-muted;\n }\n\n > thead > tr > th,\n > tbody > tr > th,\n > tfoot > tr > th,\n > thead > tr > td,\n > tbody > tr > td,\n > tfoot > tr > td {\n border-color: transparent;\n }\n }\n\n// Forms ======================================================================\n\ninput,\ntextarea {\n color: @input-color;\n}\n\nlabel,\n.radio label,\n.checkbox label,\n.help-block {\n font-size: 12px;\n}\n\n.input-addon,\n.input-group-addon {\n color: @text-color;\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .input-group-addon {\n border: none;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .input-group-addon {\n border: none;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .input-group-addon {\n border: none;\n }\n}\n\n.form-control:focus {\n .box-shadow(none);\n}\n\n.has-warning,\n.has-error,\n.has-success {\n .form-control:focus {\n .box-shadow(none);\n }\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: transparent;\n }\n}\n\n.nav-tabs {\n > li > a {\n color: @text-color;\n }\n}\n\n.nav-pills {\n > li > a {\n color: @text-color;\n }\n}\n\n.pager {\n a {\n color: @text-color;\n }\n}\n\n// Indicators =================================================================\n\n.alert {\n color: #fff;\n\n a,\n .alert-link {\n color: #fff;\n }\n}\n\n.close {\n opacity: 0.4;\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n}\n\n// Progress bars ==============================================================\n\n// Containers =================================================================\n\n.well {\n .box-shadow(none);\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border: none;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.panel {\n border: none;\n\n &-default > .panel-heading {\n background-color: @table-bg-hover;\n color: @text-color;\n }\n}\n\n.thumbnail {\n background-color: @well-bg;\n border: none;\n}\n\n.modal {\n padding: 0;\n\n &-header,\n &-footer {\n background-color: @table-bg-hover;\n border: none;\n border-radius: 0;\n }\n}\n\n.popover {\n &-title {\n border: none;\n }\n}\n\n// XWiki Customization\ndiv.main {\n box-shadow: none;\n}\n\n@xwiki-panel-header-text: @navbar-default-color;\n@xwiki-page-content-bg: @body-bg;\n@text-muted: @navbar-default-color;\n'),(6858185710844453113,'query','fq=type:DOCUMENT\nfq=class:Blog.BlogPostClass\nqf=object.Blog.BlogPostClass'),(6873826269046288026,'code','#template(\'colorThemeInit.vm\')\n\n/* Make sure the selectize dropdown is displayed on top of the Bootstrap modal. */\nbody > .selectize-dropdown {\n z-index: 1051;\n}\n\n/**\n * Group members live table.\n */\n\n#groupusers {\n margin-top: 20px;\n}\n\n#groupusers td[data-title] {\n vertical-align: middle;\n}\n\n#groupusers td.type,\n#groupusers td.scope {\n color: $theme.textSecondaryColor;\n}'),(6909928080892081827,'code','#template(\'colorThemeInit.vm\')\n\n.search-facet-body ul.mediaTypes ul {\n margin-left: 1em;\n}\n\n/* Don\'t highlight the entire media type category. */\n.search-facet-body ul.mediaTypes > li:hover {\n background-color: transparent;\n}\n.search-facet-body .mediaTypeCategory:hover {\n background-color: $theme.highlightColor;\n}\n\n.mediaTypeCategory .itemCount {\n background: url(\"$xwiki.getAttachmentURL(\'Main.SolrSearch\', \'light-grey-disclosure-arrow-down.png\')\") no-repeat scroll 100% 50% transparent;\n cursor: pointer;\n padding-right: 9px;\n}\n.mediaTypeCategory .itemCount:hover {\n background-image: url(\"$xwiki.getAttachmentURL(\'Main.SolrSearch\', \'dark-grey-disclosure-arrow-down.png\')\")\n}\n.mediaTypeCategory.closed .itemCount {\n background-image: url(\"$xwiki.getAttachmentURL(\'Main.SolrSearch\', \'light-grey-disclosure-arrow-left.png\')\")\n}\n.mediaTypeCategory.closed .itemCount:hover {\n background-image: url(\"$xwiki.getAttachmentURL(\'Main.SolrSearch\', \'dark-grey-disclosure-arrow-left.png\')\")\n}'),(6975068015607611039,'code','.bootstrap-select.btn-group .dropdown-menu li.active small.text-muted {\n color: inherit;\n}\n'),(7014369968322417202,'async_context',''),(7014369968322417202,'content',''),(7014369968322417202,'parameters','label=$services.localization.render(\'search.extension.title.solr\')\nadmin=XWiki.SolrSearchAdmin\nsearch=Main.SolrSearch'),(7115468815733580006,'description','Whether to show the document translations or not.'),(7155340825454339757,'lessCode','// Flatly 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: #7b8a8b; // #333\n@gray: #95a5a6; // #555\n@gray-light: #b4bcc2; // #999\n@gray-lighter: #ecf0f1; // #eee\n\n@brand-primary: #2C3E50;\n@brand-success: #18BC9C;\n@brand-info: #3498DB;\n@brand-warning: #F39C12;\n@brand-danger: #E74C3C;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: @brand-primary;\n\n//** Global textual link color.\n@link-color: @brand-success;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @link-color;\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables \n@font-size-base: 15px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: @font-family-base;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 10px;\n@padding-base-horizontal: 15px;\n\n@padding-large-vertical: 18px;\n@padding-large-horizontal: 27px;\n\n@padding-small-vertical: 6px;\n@padding-small-horizontal: 9px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: @gray-lighter;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: @gray-lighter;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray;\n@btn-default-border: @btn-default-bg;\n\n@btn-primary-color: @btn-default-color;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: @btn-primary-bg;\n\n@btn-success-color: @btn-default-color;\n@btn-success-bg: @brand-success;\n@btn-success-border: @btn-success-bg;\n\n@btn-info-color: @btn-default-color;\n@btn-info-bg: @brand-info;\n@btn-info-border: @btn-info-bg;\n\n@btn-warning-color: @btn-default-color;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: @btn-warning-bg;\n\n@btn-danger-color: @btn-default-color;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: @btn-danger-bg;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: #dce4ec;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: @brand-primary;\n\n//** Placeholder text color\n@input-color-placeholder: #acb6c0;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 4);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 4);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 4);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @text-color;\n@legend-border-color: transparent;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: #fff;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @component-active-bg;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: #fff;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 60px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: @brand-primary;\n@navbar-default-border: transparent;\n\n// Navbar links\n@navbar-default-link-color: #fff;\n@navbar-default-link-hover-color: @brand-success;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: @navbar-default-link-hover-color;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: darken(@navbar-default-bg, 10%);\n@navbar-default-toggle-icon-bar-bg: #fff;\n@navbar-default-toggle-border-color: darken(@navbar-default-bg, 10%);\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: #fff;\n@navbar-inverse-bg: @brand-success;\n@navbar-inverse-border: transparent;\n\n// Inverted navbar links\n@navbar-inverse-link-color: #fff;\n@navbar-inverse-link-hover-color: @brand-primary;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: #fff;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 5%);\n@navbar-inverse-link-disabled-color: #ccc;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: darken(@navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: @gray-lighter;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @brand-primary;\n@nav-tabs-active-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-justified-link-border-color: @gray-lighter;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: #fff;\n@pagination-bg: @brand-success;\n@pagination-border: transparent;\n\n@pagination-hover-color: #fff;\n@pagination-hover-bg: darken(@brand-success, 15%);\n@pagination-hover-border: transparent;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: darken(@brand-success, 15%);\n@pagination-active-border: transparent;\n\n@pagination-disabled-color: @gray-lighter;\n@pagination-disabled-bg: lighten(@brand-success, 15%);\n@pagination-disabled-border: transparent;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: #fff;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #fff;\n@state-success-bg: @brand-success;\n@state-success-border: @brand-success;\n\n@state-info-text: #fff;\n@state-info-bg: @brand-info;\n@state-info-border: @brand-info;\n\n@state-warning-text: #fff;\n@state-warning-bg: @brand-warning;\n@state-warning-border: @brand-warning;\n\n@state-danger-text: #fff;\n@state-danger-bg: @brand-danger;\n@state-danger-border: @brand-danger;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @btn-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 20px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: @gray-lighter;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: @gray-lighter;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: @gray-lighter;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: @gray-lighter;\n@panel-footer-bg: @gray-lighter;\n\n@panel-default-text: @text-color;\n@panel-default-border: @gray-lighter;\n@panel-default-heading-bg: @gray-lighter;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: @gray-lighter;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @gray-lighter;\n@well-border: transparent;\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-primary;\n\n//** Badge text color in active nav link\n@badge-active-color: @brand-primary;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @gray-lighter;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: none;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: @gray-lighter;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: transparent;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Flatly 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Lato:400,700,400italic\");\n\n// Navbar =====================================================================\n\n.navbar {\n border-width: 0;\n\n &-default {\n\n .badge {\n background-color: #fff;\n color: @navbar-default-bg;\n }\n }\n\n &-inverse {\n\n .badge {\n background-color: #fff;\n color: @navbar-inverse-bg;\n }\n }\n\n &-brand {\n line-height: 1;\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n border-width: 2px;\n}\n\n.btn:active {\n .box-shadow(none);\n}\n\n.btn-group.open .dropdown-toggle {\n .box-shadow(none);\n}\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n color: @brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n color: @brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n color: @brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n color: @brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n color: @brand-info;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n\n a:not(.btn) {\n text-decoration: underline;\n }\n\n .dropdown-menu a {\n text-decoration: none;\n }\n\n .success,\n .warning,\n .danger,\n .info {\n color: #fff;\n\n > th > a,\n > td > a,\n > a {\n color: #fff;\n }\n }\n\n > thead > tr > th,\n > tbody > tr > th,\n > tfoot > tr > th,\n > thead > tr > td,\n > tbody > tr > td,\n > tfoot > tr > td {\n border: none;\n }\n\n &-bordered > thead > tr > th,\n &-bordered > tbody > tr > th,\n &-bordered > tfoot > tr > th,\n &-bordered > thead > tr > td,\n &-bordered > tbody > tr > td,\n &-bordered > tfoot > tr > td {\n border: 1px solid @table-border-color;\n }\n}\n\n// Forms ======================================================================\n\n.form-control,\ninput, {\n border-width: 2px;\n .box-shadow(none);\n\n &:focus {\n .box-shadow(none);\n }\n}\n\n.has-warning {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-warning;\n }\n\n .form-control,\n .form-control:focus {\n border: 2px solid @brand-warning;\n }\n\n .input-group-addon {\n border-color: @brand-warning;\n }\n}\n\n.has-error {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-danger;\n }\n\n .form-control,\n .form-control:focus {\n border: 2px solid @brand-danger;\n }\n\n .input-group-addon {\n border-color: @brand-danger;\n }\n}\n\n.has-success {\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label,\n .form-control-feedback {\n color: @brand-success;\n }\n\n .form-control,\n .form-control:focus {\n border: 2px solid @brand-success;\n }\n\n .input-group-addon {\n border-color: @brand-success;\n }\n}\n\n// Navs =======================================================================\n\n.nav {\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: transparent;\n }\n}\n\n.pager {\n a,\n a:hover {\n color: #fff;\n }\n\n .disabled {\n &>a,\n &>a:hover,\n &>a:focus,\n &>span {\n background-color: @pagination-disabled-bg;\n }\n }\n}\n\n// Indicators =================================================================\n\n.close {\n color: #fff;\n text-decoration: none;\n opacity: 0.4;\n\n &:hover,\n &:focus {\n color: #fff;\n opacity: 1;\n }\n}\n\n.alert {\n\n .alert-link {\n color: #fff;\n text-decoration: underline;\n }\n}\n\n// Progress bars ==============================================================\n\n.progress {\n height: 10px;\n .box-shadow(none);\n .progress-bar {\n font-size: 10px;\n line-height: 10px;\n }\n}\n\n// Containers =================================================================\n\n.well {\n .box-shadow(none);\n}\n\na.list-group-item {\n\n &.active,\n &.active:hover,\n &.active:focus {\n border-color: @list-group-border;\n }\n\n &-success {\n &.active {\n background-color: @state-success-bg;\n }\n\n &.active:hover,\n &.active:focus {\n background-color: darken(@state-success-bg, 5%);\n }\n }\n\n &-warning {\n &.active {\n background-color: @state-warning-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-warning-bg, 5%);\n }\n }\n\n &-danger {\n &.active {\n background-color: @state-danger-bg;\n }\n \n &.active:hover,\n &.active:focus {\n background-color: darken(@state-danger-bg, 5%);\n }\n }\n}\n\n.panel {\n &-default {\n .close {\n color: @text-color;\n }\n }\n}\n\n.modal {\n .close {\n color: @text-color;\n }\n}\n\n.popover {\n color: @text-color;\n}'),(7201924370837691777,'code','require([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n\n $(document).ready(function() {\n var input = $(\'.notificationAutoWatchMode\');\n input.change( function (event) {\n var target = input.data(\'target\') == \'wiki\' ? \'wiki\' : \'user\';\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saving\'))\", \'inprogress\');\n var url = \"$xwiki.getURL(\'XWiki.Notifications.Code.NotificationPreferenceService\', \'get\', \'outputSyntax=plain\')\";\n $.post(url, {\n action: target == \'user\' ? \'setAutoWatchMode\' : \'setDefaultAutoWatchMode\',\n mode: $(this).val(),\n csrf: xm.form_token\n }).done(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.saved\'))\", \'done\');\n }).error(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'notifications.settings.savingfailed\'))\", \'error\');\n });\n });\n });\n\n});'),(7209538412461437459,'async_context',''),(7209538412461437459,'content','{{velocity}}\n#largepanelheader(\'Class Switcher\')\n$xwiki.jsx.use(\'Panels.ClassSwitcher\')##\n(((\n{{html}}\n<form id=\"changeclass\" method=\"post\" action=\"$doc.getURL(\'redirect\')\">\n<div>\n<select id=\"classname\" name=\"xredirect\" size=\"1\">\n<option value=\"-\">Edit another class</option>\n##\n## Existing classes are enumerated, grouped by space name.\n## The list is already sorted alphabetically\n##\n#set($prevSpace = \"\")\n#set($optGroupOpen = false)\n#foreach ($classname in $xwiki.classList)\n #if($!xwiki.hasAccessLevel(\'edit\', $classname))\n #set($classdoc = $xwiki.getDocument($classname))\n #if($classdoc.space != $prevSpace)\n #if($optGroupOpen)\n </optgroup>\n #else\n #set($optGroupOpen = true)\n #end\n <optgroup label=\"$classdoc.space\">\n #set($prevSpace = $classdoc.space)\n #end\n <option value=\"$classdoc.getURL(\"edit\", \"editor=class\")\">$classdoc.documentReference.name</option>\n #end\n#end\n#if($optGroupOpen)\n </optgroup>\n#end\n</select>\n<span class=\"buttonwrapper\"><input class=\"button\" type=\"submit\" value=\"$services.localization.render(\'changeclass\')\"/></span></div>\n</form>\n{{/html}}\n\n{{warning}}$services.localization.render(\'xe.panels.classedit.unsavedchanges\'){{/warning}}\n)))\n#panelfooter()\n{{/velocity}}'),(7209538412461437459,'description','Form that allows choosing the class for the object to be added to the current document.'),(7241056948254626025,'groups','XWiki.XWikiAllGroup'),(7241056948254626025,'users',''),(7280566177500860958,'properties','blog\nblogfeed'),(7325100845279448823,'groups','XWiki.XWikiAdminGroup'),(7325100845279448823,'users',''),(7336684778027459162,'description','Specifies if the user should be able to drag & drop tree nodes.'),(7400551307258363235,'async_context',''),(7400551307258363235,'code','{{velocity}}\n#if ($services.notification.areEmailsEnabled() && $xcontext.userReference && ($xcontext.macro.params.target == \'user\' || $hasAdmin))\n #set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.NotificationsEmailPreferencesMacro\'))\n {{html clean=\"false\"}}\n <div class=\"notification-top-panel-preferences notifEmailPreferences\" data-target=\"$escapetool.xml($xcontext.macro.params.target)\">\n <div class=\"xform\">\n ## TODO: handle the interval for the wiki target too\n #if ($xcontext.macro.params.target == \'user\')\n <dl>\n <dt><label>$escapetool.xml($services.localization.render(\'notifications.settings.email.frequency\'))</label>\n <p class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.settings.email.frequency.hint\'))</p>\n </dt>\n <dd>\n #set ($targetDocument = $xwiki.getDocument($xcontext.userReference))\n #set ($interval = \'daily\')\n #set ($objPref = $targetDocument.getObject(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass\'))\n #if (\"$!objPref\" != \'\')\n #set ($objInterval = $objPref.getValue(\'interval\'))\n #if (\"$!objInterval\" != \'\')\n #set ($interval = $objInterval)\n #end\n #end\n <select class=\"notificationEmailInterval\">\n <option value=\"hourly\" #if($interval == \'hourly\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_interval_hourly\'))</option>\n <option value=\"daily\" #if($interval == \'daily\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_interval_daily\'))</option>\n <option value=\"weekly\" #if($interval == \'weekly\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_interval_weekly\'))</option>\n <option value=\"live\" #if($interval == \'live\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_interval_live\'))</option>\n </select>\n </dd>\n </dl>\n #else\n #set ($targetDocument = $xwiki.getDocument($services.model.createDocumentReference(\'\', [\'XWiki\', \'Notifications\', \'Code\'], \'NotificationAdministration\')))\n #end\n <dl>\n <dt><label>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_diffType\'))</label>\n <p class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.settings.email.diffType.hint\'))</p>\n </dt>\n <dd>\n #set ($diffType = $services.notification.preferences.getDiffType())\n #set ($objPref = $targetDocument.getObject(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass\'))\n #if (\"$!objPref\" != \'\')\n #set ($objDiffType = $objPref.getValue(\'diffType\'))\n #if (\"$!objDiffType\" != \'\')\n #set ($diffType = $objDiffType)\n #end\n #end\n <select class=\"notificationEmailDiffType\">\n <option value=\"NOTHING\" #if($diffType == \'NOTHING\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_diffType_NOTHING\'))</option>\n <option value=\"STANDARD\" #if($diffType == \'STANDARD\')selected=\"selected\"#end>$escapetool.xml($services.localization.render(\'XWiki.Notifications.Code.NotificationEmailPreferenceClass_diffType_STANDARD\'))</option>\n </select>\n </dd>\n </dl>\n </div>\n </div>\n {{/html}}\n#elseif($xcontext.macro.params.target == \'wiki\' && !$hasAdmin)\n {{error}}\n {{translation key=\"notifications.settings.error.notAdmin\" /}}\n {{/error}}\n#elseif($xcontext.userReference)\n {{warning}}\n {{localization key=\"notifications.settings.email.disabled\" /}}\n {{warning}}\n#else\n {{info}}\n {{translation key=\"notifications.settings.email.forGuest\" /}}\n {{/info}}\n#end\n{{/velocity}}\n'),(7400551307258363235,'contentDescription',''),(7400551307258363235,'contentJavaType',''),(7400551307258363235,'description','Display the preferences of the current user about notification emails.'),(7487343772267823587,'async_context',''),(7487343772267823587,'content',''),(7487343772267823587,'parameters',''),(7526381649068335865,'content','{{tagcloud/}}'),(7548652271045792588,'code','// ensure that the version is refreshed when saving a document. \r\n require([\'xwiki-meta\'], function (xm) {\r\n xm.refreshVersion();\r\n });'),(7605705179739501239,'code','var XWiki = (function (XWiki) {\n\nXWiki.EntryNamePopup = Class.create(XWiki.widgets.ModalPopup, {\n initialize : function($super, trigger) {\n trigger.observe(\'click\', this.showDialog.bindAsEventListener(this));\n this.urlTemplate = trigger.up().next(\'input[type=hidden]\').value;\n\n this.input = new Element(\'input\', {type: \'text\'});\n this.addButton = new Element(\'input\', {\n type: \'image\',\n src: \'$xwiki.getSkinFile(\'icons/silk/add.png\')\',\n alt: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.appHomePageAddEntryLabel\'))\'\n });\n\n var container = new Element(\'div\', {id: \'entryNamePopup\'});\n container.insert(this.input);\n container.insert(this.addButton);\n\n $super(container, {\n show: {method: this.showDialog, keys: []},\n add: {method: this._onAdd, keys: [\'Enter\']}\n }, {\n title: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.appHomePageEntryNameLabel\'))\',\n verticalPosition: \'top\'\n });\n },\n createDialog : function($super, event) {\n this.addButton.observe(\'click\', this._onAdd.bind(this));\n $super(event);\n },\n showDialog : function($super, event) {\n $super(event);\n this.input.clear().focus();\n },\n _onAdd : function() {\n if (this.input.value != \'\') {\n // We use the global flag because we need to replace both the page name and its title.\n window.self.location = this.urlTemplate.replace(/__entryName__/g, encodeURIComponent(this.input.value));\n } else {\n this.input.focus();\n }\n }\n});\n\nfunction init() {\n var actionBox = $(\'actionBox\');\n if(actionBox) {\n new XWiki.EntryNamePopup(actionBox.down(\'.add\'));\n return true;\n }\n return false;\n}\n(XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n\nreturn XWiki;\n}(XWiki || {}));\n\n/**\n * Rename Application\n */\nrequire([\'jquery\', \'bootstrap\'], function($) {\n #set ($currentDocReference = $xwiki.getDocument($request.currentApp).getDocumentReference())\n // if we cannot find any extension related to this page app, it\'s not part of an extension.\n var isNotAnExtension = $services.extension.xar.getInstalledExtensions($currentDocReference).isEmpty();\n\n // double negation! if it\'s an extension, we stop there: we don\'t want to add custom AWM rename capabilities\n if (!isNotAnExtension) {\n return;\n }\n // Hijack the rename page action.\n var renameAppModal = $(\'#renameAppModal\');\n $(\'#tmActionRename\').click(function(event) {\n event.preventDefault();\n renameAppModal.modal();\n });\n\n // Form validation.\n var appNameInput = $(\'#renameAppTitle\');\n var appParentInput = $(\'#renameAppParentReference\');\n var submitButton = renameAppModal.find(\'.btn-primary[type=\"submit\"]\');\n\n var appNameEmptyError = renameAppModal.find(\'.appNameEmptyError\');\n var pageExistsError = renameAppModal.find(\'.pageExistsError\');\n var locationForbiddenError = renameAppModal.find(\'.locationForbiddenError\');\n appNameEmptyError.add(pageExistsError).add(locationForbiddenError).hide().insertAfter(appNameInput);\n\n var getNewAppReference = function(local) {\n var appParentReference = local ? null : new XWiki.WikiReference(XWiki.currentWiki);\n if (appParentInput.val() !== \'\') {\n appParentReference = XWiki.Model.resolve(appParentInput.val(), XWiki.EntityType.SPACE, appParentReference);\n }\n return new XWiki.EntityReference(appNameInput.val(), XWiki.EntityType.SPACE, appParentReference);\n };\n\n var getNewAppHomePage = function() {\n var newAppReference = getNewAppReference();\n var newAppHomePageReference = new XWiki.EntityReference(\'WebHome\', XWiki.EntityType.DOCUMENT, newAppReference);\n return new XWiki.Document(newAppHomePageReference);\n };\n\n var startValidation = function() {\n if (appNameInput.val() === \'\') {\n endValidation(appNameEmptyError);\n } else {\n var newAppHomePage = getNewAppHomePage();\n if (newAppHomePage.documentReference.equals(XWiki.currentDocument.documentReference)) {\n endValidation(pageExistsError);\n } else {\n $.ajax({\n type: \'HEAD\',\n url: newAppHomePage.getURL()\n }).done(function() {\n endValidation(pageExistsError);\n }).fail(function(response) {\n if (response.status === 404) {\n $.ajax({\n type: \'HEAD\',\n url: newAppHomePage.getURL(\'edit\')\n }).done(function() {\n endValidation();\n }).fail(function() {\n endValidation(locationForbiddenError);\n });\n } else if (response.status === 403) {\n endValidation(locationForbiddenError);\n } else {\n endValidation();\n }\n });\n }\n }\n };\n\n var endValidation = function(error) {\n if (error) {\n error.show();\n }\n appNameInput.removeClass(\'loading\');\n submitButton.prop(\'disabled\', !!error);\n };\n\n var validationTimeout;\n var scheduleValidation = function() {\n clearTimeout(validationTimeout);\n renameAppModal.find(\'.xErrorMsg\').hide();\n appNameInput.addClass(\'loading\');\n submitButton.prop(\'disabled\', true);\n validationTimeout = setTimeout(startValidation, 500);\n };\n\n appNameInput.add(appParentInput).on(\'input\', scheduleValidation);\n\n var locationPickerModal = renameAppModal.find(\'.location-picker .modal\');\n renameAppModal.on(\'shown.bs.modal\', function(event) {\n // Nested modals are not supported so we have to move the location picker modal outside, but we shouldn\'t do this\n // before the location picker has been initialized. That\'s why we wait for the rename application modal to be shown\n // first.\n renameAppModal.after(locationPickerModal);\n appNameInput.focus();\n });\n\n // Hide the rename application modal when the location picker modal is shown.\n locationPickerModal.removeClass(\'fade\').on(\'show.bs.modal\', function(event) {\n renameAppModal.modal(\'hide\');\n // Show the rename application modal when the location picker modal is hidden.\n }).on(\'hidden.bs.modal\', function(event) {\n renameAppModal.modal(\'show\');\n });\n\n renameAppModal.find(\'form\').submit(function(event) {\n event.preventDefault();\n renameApp(getRenameData($(this)));\n });\n\n var getRenameData = function(form) {\n var data = getFormData(form);\n data.newAppReference = XWiki.Model.serialize(getNewAppReference(true));\n delete data.newAppName;\n delete data.newAppParentReference;\n data.outputSyntax = \'plain\';\n return data;\n };\n\n var getFormData = function(form) {\n var data = {};\n form.serializeArray().forEach(function(parameter) {\n // Keep the first value;\n if (!data.hasOwnProperty(parameter.name)) {\n data[parameter.name] = parameter.value;\n }\n });\n return data;\n };\n\n var renameApp = function(data) {\n // Disable the form to prevent it from being submitted twice.\n renameAppModal.find(\':input\').prop(\'disabled\', true);\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'appWithinMinutes.renameApp.inProgress\')),\n \'inprogress\'\n );\n var renameAppURL = new XWiki.Document(\'RenameApplication\', \'AppWithinMinutes\').getURL(\'get\');\n $.post(renameAppURL, data).then(updateAppHomePage).done(function() {\n renameAppModal.modal(\'hide\');\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'appWithinMinutes.renameApp.done\')),\n \'done\'\n ));\n // Delay a bit the redirect so that the user notices the success message.\n setTimeout(function() {\n window.location.href = getNewAppHomePage().getURL();\n }, 0);\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'appWithinMinutes.renameApp.failed\')),\n \'error\'\n ));\n }).always(function() {\n // Re-enable the form.\n renameAppModal.find(\':input\').prop(\'disabled\', false);\n });\n };\n\n var updateAppHomePage = function() {\n var deferred = $.Deferred();\n var newAppHomePageEditURL = getNewAppHomePage().getURL(\'edit\');\n $(\'<div/>\').load(newAppHomePageEditURL + \' #inline\', function() {\n var formData = $(this).children(\'form#inline\').serializeArray();\n if (formData.length > 0) {\n formData.push({name: \'xaction_save\', value: true});\n $.post(newAppHomePageEditURL, formData).done(function() {\n deferred.resolve();\n }).fail(function() {\n deferred.reject();\n });\n } else {\n deferred.reject();\n }\n });\n return deferred.promise();\n }\n});'),(7638148953297804405,'groups','XWiki.XWikiAllGroup'),(7638148953297804405,'users','XWiki.XWikiGuest'),(7656464917823877660,'async_context',''),(7656464917823877660,'content','{{velocity}}\n#set ($query = $services.query.xwql(\'order by doc.creationDate desc\'))\n#set ($recentlyCreated = $query.addFilter(\'hidden\').setLimit(5).execute())\n#if ($recentlyCreated.size() > 0 || $showEmptyPanels)\n #panelheader($services.localization.render(\'panels.recentlyCreated.title\'))\n #foreach ($docName in $recentlyCreated)\n #if ($xwiki.hasAccessLevel(\'view\', $docName))\n #set ($recentDoc = $xwiki.getDocument($docName).getTranslatedDocument())\n ## We use HTML here because we don\'t have a tool to escape wiki syntax in document title.\n * {{html}}<a href=\"$recentDoc.getURL()\">$escapetool.xml($recentDoc.plainTitle)</a>{{/html}}\n #end\n #end\n#panelfooter()\n#end\n{{/velocity}}'),(7656464917823877660,'description','List the last 5 documents created.'),(7698337696994845708,'async_context',''),(7698337696994845708,'content',''),(7698337696994845708,'parameters','label=$services.localization.render(\'help.title\')\ntarget=Help.WebHome\nicon=icon:help'),(7708330969258342278,'lessCode','// Sandstone 3.3.5\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: #3E3F3A;\n@gray-dark: #8E8C84;\n@gray: #98978B;\n@gray-light: #DFD7CA;\n@gray-lighter: #F8F5F0;\n\n@brand-primary: #325D88;\n@brand-success: #93C54B;\n@brand-info: #29ABE0;\n@brand-warning: #F47C3C;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg: #fff;\n//** Global text color on `<body>`.\n@text-color: #3E3F3A;\n\n//** Global textual link color.\n@link-color: @brand-success;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 10%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Roboto\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n/* XWiki already overrides these variables \n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n*/\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family: inherit;\n@headings-font-weight: 400;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n// @icon-font-path: \"../fonts/\"; // XWiki already overrides this variable\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 12px;\n@padding-base-horizontal: 16px;\n\n@padding-large-vertical: 20px;\n@padding-large-horizontal: 30px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: @gray;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @gray-lighter;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: @gray-lighter;\n//** Background color used for `.table-hover`.\n@table-bg-hover: @gray-lighter;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: @gray-light;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #fff;\n@btn-default-bg: @gray-darker;\n@btn-default-border: transparent;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: transparent;\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: transparent;\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: transparent;\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: transparent;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: transparent;\n\n@btn-link-disabled-color: @gray-light;\n\n// Allows for customizing button radius independently from global border radius\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-large: @border-radius-large;\n@btn-border-radius-small: @border-radius-small;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg: #fff;\n//** `<input disabled>` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color: @text-color;\n//** `<input>` border color\n@input-border: @gray-light;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: transparent;\n\n//** Placeholder text color\n@input-color-placeholder: @gray-light;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n@form-group-margin-bottom: 15px;\n\n@legend-color: @headings-color;\n@legend-border-color: transparent;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: @gray-light;\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: @gray-light;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: @gray-lighter;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: @dropdown-link-color;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: @gray-lighter;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 60px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: @gray-dark;\n@navbar-default-bg: @gray-darker;\n@navbar-default-border: @gray-darker;\n\n// Navbar links\n@navbar-default-link-color: @gray;\n@navbar-default-link-hover-color: #fff;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #fff;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 2%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: #fff;\n@navbar-default-brand-hover-color: #fff;\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: @navbar-default-link-active-bg;\n@navbar-default-toggle-icon-bar-bg: @navbar-default-link-color;\n@navbar-default-toggle-border-color: transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: @brand-success;\n@navbar-inverse-border: @brand-success;\n\n// Inverted navbar links\n@navbar-inverse-link-color: darken(@brand-success, 15%);\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 4%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: #fff;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: @navbar-inverse-link-active-bg;\n@navbar-inverse-toggle-icon-bar-bg: @navbar-inverse-link-color;\n@navbar-inverse-toggle-border-color: transparent;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: @gray-light;\n\n@nav-tabs-link-hover-border-color: @gray-light;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: @gray-light;\n\n@nav-tabs-justified-link-border-color: @gray-light;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @gray;\n@pagination-bg: @gray-lighter;\n@pagination-border: @gray-light;\n\n@pagination-hover-color: @gray-dark;\n@pagination-hover-bg: @gray-light;\n@pagination-hover-border: @pagination-border;\n\n@pagination-active-color: @gray-dark;\n@pagination-active-bg: @gray-light;\n@pagination-active-border: @gray-light;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: @gray-lighter;\n@pagination-disabled-border: @gray-light;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: @brand-success;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: @brand-info;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: @brand-warning;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: @brand-danger;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: @navbar-default-bg;\n@tooltip-opacity: 1;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: @gray-light;\n//** Popover fallback border color\n@popover-fallback-border-color: @gray-light;\n\n//** Popover title background color\n@popover-title-bg: @gray-lighter;\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @navbar-default-bg;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 15px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: @gray-lighter;\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: @gray-lighter;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: @gray-lighter;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @brand-success;\n@alert-success-text: #fff;\n@alert-success-border: transparent;\n\n@alert-info-bg: @brand-info;\n@alert-info-text: #fff;\n@alert-info-border: transparent;\n\n@alert-warning-bg: @brand-warning;\n@alert-warning-text: #fff;\n@alert-warning-border: transparent;\n\n@alert-danger-bg: @brand-danger;\n@alert-danger-text: #fff;\n@alert-danger-border: transparent;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: @gray-light;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: @gray-lighter;\n//** Text color of active list items\n@list-group-active-color: @text-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-border;\n//** Text color for content within active list items\n@list-group-active-text-color: @text-color;\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: @text-color;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: @headings-color;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: @gray-light;\n@panel-footer-bg: @gray-lighter;\n\n@panel-default-text: @text-color;\n@panel-default-border: @gray-light;\n@panel-default-heading-bg: @gray-lighter;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @brand-success;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @brand-info;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @brand-warning;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @brand-danger;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @gray-lighter;\n//** Thumbnail border color\n@thumbnail-border: @gray-light;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: @gray-lighter;\n@well-border: transparent;\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @brand-success;\n\n//** Badge text color in active nav link\n@badge-active-color: #fff;\n//** Badge background color in active nav link\n@badge-active-bg: @brand-success;\n\n@badge-font-weight: normal;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: @gray-lighter;\n//** Breadcrumb text color\n@breadcrumb-color: @gray-light;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 0 0 transparent;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray;\n//** Headings small color\n@headings-small-color: @gray;\n//** Blockquote small color\n@blockquote-small-color: @text-color;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-light;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n\n// Sandstone 3.3.5\n// Bootswatch\n// -----------------------------------------------------\n\n@import url(\"https://fonts.googleapis.com/css?family=Roboto:400,500\");\n\n// Navbar =====================================================================\n\n.sandstone {\n font-size: 11px;\n line-height: 22px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.navbar {\n .nav > li > a {\n .sandstone;\n }\n\n &-form input,\n &-form .form-control {\n border: none;\n }\n}\n\n// Buttons ====================================================================\n\n.btn {\n border: none;\n .sandstone;\n\n &:hover {\n border-color: transparent;\n }\n\n &-lg {\n line-height: 26px;\n }\n\n &-default {\n &:hover {\n background-color: @navbar-default-link-active-bg;\n }\n }\n}\n\n// Typography =================================================================\n\n// Tables =====================================================================\n\n// Forms ======================================================================\n\ninput,\n.form-control {\n .box-shadow(none);\n\n &:focus {\n border-color: @input-border;\n .box-shadow(none);\n }\n}\n\n// Navs =======================================================================\n\n.nav {\n .sandstone;\n\n .open > a,\n .open > a:hover,\n .open > a:focus {\n border-color: @gray-light;\n }\n}\n\n.nav-tabs {\n\n & > li > a {\n background-color: @gray-lighter;\n border-color: @nav-tabs-border-color;\n color: @gray;\n }\n\n > li.disabled > a:hover {\n background-color: @gray-lighter;\n }\n}\n\n.nav-pills {\n a {\n color: @gray;\n }\n\n li > a {\n border: 1px solid transparent;\n }\n\n li.active > a,\n li > a:hover {\n border-color: @gray-light;\n }\n\n li.disabled > a {\n border-color: transparent;\n }\n}\n\n.breadcrumb {\n .sandstone;\n\n border: 1px solid @gray-light;\n\n a {\n color: @gray;\n }\n}\n\n.pagination {\n .sandstone;\n}\n\n.pager {\n .sandstone;\n\n li > a {\n color: @gray;\n }\n}\n\n.dropdown-menu {\n & > li > a {\n .sandstone;\n }\n}\n\n// Indicators =================================================================\n\n.alert {\n\n a,\n .alert-link {\n color: #fff;\n }\n}\n\n.tooltip {\n .sandstone;\n}\n\n// Progress bars ==============================================================\n\n.progress {\n border-radius: 10px;\n background-color: @gray-light;\n .box-shadow(none);\n\n &-bar {\n .box-shadow(none);\n }\n}\n\n// Containers =================================================================\n\n.list-group {\n &-item {\n padding: 16px 24px;\n }\n}\n\n.well {\n .box-shadow(none);\n}\n\n.panel {\n .box-shadow(none);\n\n .panel-heading,\n .panel-title {\n .sandstone;\n color: #fff;\n }\n\n .panel-footer {\n .sandstone;\n }\n\n &-default {\n .panel-heading,\n .panel-title,\n .panel-footer {\n color: @gray;\n }\n }\n}'),(7718874393155610304,'async_context',''),(7718874393155610304,'code','{{include reference=\"XWiki.Notifications.Code.NotificationsPreferencesMacros\" /}}\n\n{{velocity}}\n#if (!$xcontext.userReference && $xcontext.macro.params.target == \'user\')\n {{info}}\n {{translation key=\"notifications.settings.applications.forGuest\" /}}\n {{/info}}\n#elseif ($xcontext.macro.params.target == \'wiki\' && !$services.security.authorization.hasAccess(\'admin\', $services.model.createWikiReference($services.wiki.currentWikiId)))\n {{error}}\n {{translation key=\"notifications.settings.error.notAdmin\" /}}\n {{/error}}\n#else\n######################################################\n### CSS and JAVASCRIPTS\n######################################################\n#set ($discard = $xwiki.jsx.use(\'XWiki.Notifications.Code.NotificationsApplicationsPreferencesMacro\'))\n#set ($discard = $xwiki.ssx.use(\'XWiki.Notifications.Code.NotificationsApplicationsPreferencesMacro\'))\n## TODO: replace by $xwiki.sswx.use() or something like this when XWIKI-12788 is closed.\n#set ($discard = $xwiki.linkx.use($services.webjars.url(\'bootstrap-switch\', \'css/bootstrap3/bootstrap-switch.min.css\'), {\'type\': \'text/css\', \'rel\': \'stylesheet\'}))\n######################################################\n### GLOBALS\n######################################################\n#set ($userDoc = $xwiki.getDocument($xcontext.userReference))\n######################################################\n### MACRO CONTENT\n######################################################\n{{html clean=\"false\"}}\n<div class=\"xform\">\n<p class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.settings.applications.hint\'))</p>\n<table class=\"notifPreferences\" data-target=\"$escapetool.xml($xcontext.macro.params.target)\">\n <thead>\n <tr>\n <th scope=\"col\">$escapetool.xml($services.localization.render(\'notifications.settings.applications.appName\'))</th>\n <th scope=\"col\">$services.icon.renderHTML(\'bell\') $escapetool.xml($services.localization.render(\'notifications.settings.menu\'))\n <small class=\"xHint\">$services.localization.render(\'notifications.settings.menu.hint\', [$services.icon.renderHTML(\'bell\')])</small>\n </th>\n #set ($colsCount = 2)\n #if ($services.notification.areEmailsEnabled())\n <th scope=\"col\">$services.icon.renderHTML(\'envelope\') $escapetool.xml($services.localization.render(\'notifications.settings.email\'))\n <small class=\"xHint\">$escapetool.xml($services.localization.render(\'notifications.settings.email.hint\'))</small>\n </th>\n #set ($colsCount = 3)\n #end\n <th scope=\"col\"></th>\n </tr>\n </thead>\n ##\n ## Display all applications\n ##\n #set ($appClass = \"appOdd\")\n #foreach ($app in $apps)\n #displayApp($app)\n #end\n</table>\n</div>\n\n#**\n * Display Application\n *#\n#macro(displayApp $app)\n #set ($type = $app[0])\n <tbody class=\"applicationElem $appClass\" data-applicationid=\"$escapetool.xml($type.applicationId)\">\n ##\n ## Display the application row\n ##\n <tr>\n ## Application Name and Icon\n <th scope=\"row\">\n $type.applicationIcon $escapetool.xml($type.applicationName)\n </th>\n ## Alert switch\n <td class=\"notificationAppCell loading\" data-format=\"alert\">\n <input type=\"checkbox\" class=\"notificationAppCheckbox hidden\"/>\n </td>\n ## Email switch\n #if ($services.notification.areEmailsEnabled())\n <td class=\"notificationAppCell loading\" data-format=\"email\">\n <input type=\"checkbox\" class=\"notificationAppCheckbox hidden\"/>\n </td>\n #end\n ## Collapse button\n <td class=\"notificationCollapseButtonCell\">\n <button type=\"button\" class=\"btn btn-default btn-sm collapseButton\">$services.icon.renderHTML(\'caret-down\')</button>\n </td>\n </tr>\n ##\n ## Display all events of this application\n ##\n #foreach($type in $app)\n <tr class=\"rowEventType hidden\" data-eventtype=\"$type.eventType\">\n <td>$escapetool.xml($type.description)</td>\n #displayPreference($type, \'alert\')\n #if ($services.notification.areEmailsEnabled())\n #displayPreference($type, \'email\')\n #end\n <td></td>\n </tr>\n #end\n </tbody>\n #if ($appClass == \'appOdd\')\n #set ($appClass = \'appEven\')\n #else\n #set ($appClass = \'appOdd\')\n #end\n#end\n\n#**\n * Display a preference button for an event type and a given format\n *#\n#macro(displayPreference $type $format)\n #set ($checked = \'\')\n #set ($preference = \'\')\n #if (($xcontext.macro.params.target == \'wiki\' && $services.notification.preferences.isEventTypeEnabled($type.eventType, $format, $services.wiki.currentWikiId)) ||\n ($xcontext.macro.params.target == \'user\' && $services.notification.preferences.isEventTypeEnabled($type.eventType, $format)))\n #set ($checked = \'checked=\"checked\"\')\n #end\n <td class=\"notificationTypeCell loading\" data-eventtype=\"$!escapetool.xml($type.eventType)\" data-format=\"$format\" data-filter=\"${type.filter}\">\n <div class=\"hidden\">\n <input type=\"checkbox\" class=\"notificationTypeCheckbox\" $checked/>\n </div>\n </td>\n#end\n{{/html}}\n#end\n{{/velocity}}'),(7718874393155610304,'contentDescription',''),(7718874393155610304,'contentJavaType',''),(7718874393155610304,'description','Display the preferences of the current user about notification applications.'),(7744346606799048646,'jobDescription',''),(7744346606799048646,'script',''),(7749488740508758986,'description',''),(7757190582300424286,'spaces',''),(7812502611003313793,'description','Comma separated list of local serialized references of the spaces to display the activity for.'),(7869835225464154104,'groups','XWiki.XWikiAllGroup'),(7869835225464154104,'users','XWiki.XWikiGuest'),(7883403272225626124,'code','document.observe(\'xwiki:dom:loaded\', function() {\n // Hide headers unless they have error messages under them.\n var elementsInPage = $(\'admin-page-content\').childNodes;\n var errorShown = false;\n for (var i = elementsInPage.length - 1; i > -1; i--) {\n var e = elementsInPage[i];\n if (e.tagName != undefined && e.tagName.toLowerCase() == \'div\' && e.getAttribute(\'class\') != undefined && e.getAttribute(\'class\').indexOf(\'errormessage\') != -1)\n {\n errorShown = true;\n } else if (!errorShown\n && e.tagName != undefined\n && e.tagName.toLowerCase() == \'h1\'\n && e.getAttribute(\'id\') != undefined\n && e.getAttribute(\'id\').toLowerCase().indexOf(\'hcustomize\') == 0)\n {\n e.parentNode.removeChild(e);\n errorShown = false;\n }\n }\n\n // Hide individual submit buttons.\n var forms = $(\'admin-page-content\').select(\'form\');\n var inputs = $(\'admin-page-content\').select(\'input\');\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].getAttribute(\'type\') != undefined && inputs[i].getAttribute(\'type\').toLowerCase() == \'submit\') {\n var bottombuttons = inputs[i].up(\'.bottombuttons\');\n bottombuttons && bottombuttons.remove();\n }\n }\n\n // Add a submit button for saving all sections at once.\n var button = new Element(\'input\', {\'type\':\'submit\', \'class\':\'button\', \'value\':\'$services.localization.render(\"admin.save\")\', \'name\':\'formactionsac\'});\n var wrapper = new Element(\'span\', {\'class\':\'buttonwrapper\'});\n var adminButtons = new Element(\'p\', {\'class\':\'admin-buttons\'});\n var bottomButtons = new Element(\'div\', {\'class\':\'bottombuttons\'});\n $(\'admin-page-content\').appendChild(bottomButtons);\n bottomButtons.appendChild(adminButtons);\n adminButtons.appendChild(wrapper);\n wrapper.appendChild(button);\n\n Event.observe(button, \'click\', function() {\n var forms = $(\'admin-page-content\').getElementsByTagName(\'form\');\n for (var i = 0; i < forms.length; i++) {\n Event.fire(document, \'xwiki:actions:save\', {\'form\':forms[i].id, \'continue\':true});\n }\n });\n});'),(7910393087932949456,'groups','xwiki:XWiki.XWikiAllGroup'),(7910393087932949456,'users',''),(7922186115565133443,'code','## Retrieve the annotation settings from the configuration object\n#set($config = \'AnnotationCode.AnnotationConfig\')\n#set($configObj = $xwiki.getDocument($config).getObject($config))\n#set($annotationHighlightByDefault = $configObj.getProperty(\'displayHighlight\').value)\n#set($annotationsDisplayedByDefault = $configObj.getProperty(\'displayed\').value)\n#set($annotationsActivated = $configObj.getProperty(\'activated\').value)\n#set($exceptionSpaces = $configObj.getProperty(\'exceptionSpaces\').value)\n#set($annotationClass = $configObj.getProperty(\'annotationClass\').value)\n\nvar XWiki = (function (XWiki) {\n// Start XWiki augmentation.\nXWiki.Annotation = Class.create({\n // the html element corresponding to the annotated content (where annotations are to be added, displayed, etc)\n annotatedElement : false,\n // tab name of the annotations tab\n #if (\"$!annotationClass\" == \'XWiki.XWikiComments\')\n annTabname : \'Comments\',\n annTabTemplate : \'commentsinline.vm\',\n #else\n annTabname : \'Annotations\',\n annTabTemplate : \'annotationsinline.vm\',\n #end\n // whether current displayed doc is the rendered annotated document\n fetchedAnnotations : false,\n // whether the annotations are being displayed; synchronizes with displayAnnotationsCheckbox if that element exists\n displayingAnnotations : false,\n // the display annotations check box in the settings panel\n displayAnnotationsCheckbox : false,\n // flag specifying if the annotations are displayed by default or not\n displayedByDefault : false,\n // whether the annotations should be displayed as highlighted or only the icons\n displayHighlight : true,\n // add annotation shortcuts\n addAnnotationShortcuts : [\'Meta+M\', \'Meta+I\'],\n // show annotations shortcuts\n toggleAnnotationsShortcuts : [\'Alt+A\'],\n // shortcuts for closing the open dialog, be it create, edit or display\n closeDialogShortcuts : [\'Esc\'],\n // the selection service used to detect and handle selection related functions on the document\n selectionService : false,\n // the stack of bubbles, so that we can close them one by one if needed\n bubbles : new Array(),\n // the currently set filter (pair of field names and their values) that all annotations should be fetched according to.\n // It will be updated any time a changed filter event is received\n currentFilter : {},\n\n initialize : function (displayHighlighted, annotatedElt, displayedByDefault) {\n this.displayHighlight = displayHighlighted;\n this.annotatedElement = annotatedElt;\n this.displayedByDefault = displayedByDefault;\n\n // if the annotated element does not exist, don\'t load anything\n if (!this.annotatedElement) {\n // and show a warning if the annotations should be shown by default\n if (this.displayedByDefault) {\n new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.annotated.error.noannotatedelement\')\", \'warning\');\n }\n return;\n }\n\n this.hookMenuButton();\n\n // add the delete, edit and validate listeners to the annotations in the annotations tab when the extra panels are loaded\n document.observe(\'xwiki:docextra:loaded\', this.addDeleteListenersInTab.bindAsEventListener(this));\n document.observe(\'xwiki:docextra:loaded\', this.addEditListenersInTab.bindAsEventListener(this));\n document.observe(\'xwiki:docextra:loaded\', this.addValidateListenersInTab.bindAsEventListener(this));\n // refresh the annotations displayed on the document when an annotation is deleted as a comment, that is from the comments tab when annotations are merged with comments\n document.observe(\'xwiki:annotation:tab:deleted\', this.refreshAnnotationsOnCommentDelete.bindAsEventListener(this));\n // register the key shortcuts for adding an annotation\n this.registerAddAnnotationShortcut();\n // register the key shortcuts for toggling annotation visibility\n this.registerToggleAnnotationsShortcut();\n // register the close dialog shortcut\n this.registerCloseDialogShortcut();\n\n // and initialize the selectionService\n this.selectionService = new XWiki.Selection(this.annotatedElement);\n\n // listen to the filter change events to re-fetch the annotations when it changes\n document.observe(\'xwiki:annotations:filter:changed\', this.onFilterChange.bindAsEventListener(this));\n\n // and get the annotations if they\'re loaded by default\n if (this.displayedByDefault) {\n if (XWiki.docsyntax != \'xwiki/1.0\') {\n this.fetchAnnotations(true);\n } else {\n // if the document syntax is 1.0, and annotations should be displayed by default, display a warning, and not display annotations\n new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.annotated.error.wrongsyntax\')\", \'warning\');\n }\n }\n },\n\n hookMenuButton : function() {\n // Since 7.4M1, the annotations trigger is inserted via an UIX.\n var annotationsTrigger = $(\'tmAnnotationsTrigger\');\n if (annotationsTrigger) {\n annotationsTrigger.observe(\'click\', this.toggleSettingsPanel.bind(this));\n } else {\n // If the UIX is not there, then it means we are in an old skin (such as colibri), and so we let the following\n // legacy code to maintain backward compatibility.\n var contentmenu = $(\'contentmenu\');\n if (contentmenu) {\n var rightMenu = contentmenu.down(\'.rightmenu\');\n // create and insert if it doesn\'t exist\n if (!rightMenu) {\n rightMenu = new Element(\'div\', {\'class\':\'rightmenu\'});\n // insert it before the left menu\n var leftMenu = contentmenu.down(\'.leftmenu\');\n if (leftMenu) {\n leftMenu.insert({before: rightMenu});\n } else {\n contentmenu.insert({bottom: rightMenu});\n }\n }\n // create the annotations button\n var annContainer = new Element(\'div\', {\'class\': \'topmenuentry hasIcon\', \'id\': \'tmAnnotations\'});\n var annLink = new Element(\'a\', {\'class\': \'tme\', \'href\': \'#\' + this.annTabname});\n annLink.update(\"<strong>$services.localization.render(\'annotations.title\')</strong>\");\n annContainer.insert({top: annLink});\n rightMenu.insert({bottom: annContainer});\n\n annLink.observe(\'click\', this.toggleSettingsPanel.bind(this));\n }\n }\n },\n\n setAnnotationVisibility : function (visibility) {\n this.displayingAnnotations = visibility;\n if (this.displayAnnotationsCheckbox) {\n this.displayAnnotationsCheckbox.checked = visibility;\n }\n },\n\n toggleSettingsPanel : function(event) {\n var menu = event.element();\n // prevent link\n event.stop();\n // if another click handling is in progress\n if (menu.disabled) {\n return;\n }\n if (window.document.body.hasClassName(\'skin-flamingo\')) {\n // Hack: hide the bootstrap dropdown menu\n // TODO: find a way to let Bootstrap close the menu in a regular way.\n $(\'tmMoreActions\').removeClassName(\'open\');\n }\n if (!this.settingsPanel) {\n new Ajax.Request(\'$xwiki.getURL(\"AnnotationCode.Settings\", \"view\", \"xpage=plain\")\', {\n parameters : {\'target\' : XWiki.currentWiki + \':\' + XWiki.currentSpace + \'.\' + XWiki.currentPage},\n onCreate: function() {\n // disable the button\n menu.disabled = true;\n // show nice loading message at page bottom\n menu._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.menu.loading\')\", \'inprogress\');\n },\n\n onSuccess: function(response) {\n // Unfortunately, this is skin dependent\n if (window.document.body.hasClassName(\'skin-flamingo\')) {\n var place = $$(\'.xcontent > hr\')[0];\n place.insert({after: response.responseText});\n this.settingsPanel = place.next();\n } else { // colibri\n $(\'contentmenu\').insert({after: response.responseText});\n this.settingsPanel = $(\'contentmenu\').next();\n }\n // fire a settings panel loaded event\n this.settingsPanel.fire(\'xwiki:annotations:settings:loaded\');\n // hide message at page bottom\n menu._x_notification.hide();\n // store the displayed annotations checkbox\n this.displayAnnotationsCheckbox = $(\'annotationsdisplay\');\n // show this checkbox as checked if the annotations are displayed by default and were loaded successfully\n if (this.displayedByDefault || this.displayingAnnotations) {\n this.displayAnnotationsCheckbox.checked = true;\n }\n this.attachSettingsListeners();\n $(\'tmAnnotations\').toggleClassName(\'active\');\n }.bind(this),\n\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n // show the error message at the bottom\n menu._x_notification.replace(new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.menu.loaderror\')\" + failureReason, \'error\', {timeout : 5}));\n },\n\n on0: function (response) {\n response.request.options.onFailure(response);\n },\n\n onComplete: function() {\n // In the end: re-enable the button\n menu.disabled = false;\n }\n });\n } else {\n this.settingsPanel.toggleClassName(\'hidden\');\n $(\'tmAnnotations\').toggleClassName(\'active\');\n }\n },\n\n attachSettingsListeners : function() {\n this.displayAnnotationsCheckbox.observe(\'click\', function(event) {\n var visible = this.displayAnnotationsCheckbox.checked;\n // don\'t do anything if another call is in progress\n if (this.displayAnnotationsCheckbox.disabled) {\n return;\n }\n this.displayAnnotationsCheckbox.disabled = true;\n if (!this.fetchedAnnotations && visible) {\n this.fetchAnnotations(true);\n } else {\n this.toggleAnnotations(visible);\n // and also enable back the checkbox\n this.displayAnnotationsCheckbox.disabled = false;\n }\n }.bindAsEventListener(this));\n },\n\n toggleAnnotations : function(visible) {\n // don\'t standard toggle because we want to ensure it matches visible\n if (this.displayHighlight) {\n this.annotatedElement.select(\'.annotation\').invoke(visible ? \'addClassName\' : \'removeClassName\', \'annotation-highlight\');\n }\n //and toggle all annotation markers\n this.annotatedElement.select(\'.annotation-marker\').invoke(visible ? \'removeClassName\' : \'addClassName\', \'hidden\');\n this.displayingAnnotations = visible;\n if (!visible) {\n // also close all open bubbles\n this.bubbles.each(function(bubble){\n // if it\'s the create panel, skip it\n if (bubble != this.createPanel) {\n bubble.remove();\n }\n }.bind(this));\n this.bubbles.clear();\n }\n },\n\n toggleAnnotationHighlight : function(annotationId, visible) {\n this.annotatedElement.select(\'.annotation.ID\' + annotationId).invoke(visible ? \'addClassName\' : \'removeClassName\', \'annotation-highlight\');\n },\n\n /**\n * Handles the update of the current filter by re-storing the new filter in this object\'s state info and re-fetching\n * the annotations.\n */\n onFilterChange : function(event) {\n // store the current filter\n if (event.memo) {\n this.currentFilter = event.memo;\n }\n // and, if the annotations are currently visible, re-fetch the annotations and display them\n var visible = this.displayAnnotationsCheckbox ? this.displayAnnotationsCheckbox.checked : false;\n if (visible) {\n this.fetchAnnotations(true);\n }\n },\n\n /**\n * Returns an array of extra fields that need to be requested from the annotations.\n */\n getExtraFields : function() {\n // TODO: request for color when it will be used by the annotation displayer and sent by the backend\n return [];\n },\n\n /**\n * Returns a map of fieldName, fieldValue pairs that encode the current filter that needs to be applied to the fetched\n * and rendered annotations.\n * Namely, the current filter, as set by last filter change event.\n */\n getFilter : function() {\n // return the current filter stored from the last update of the filter\n return this.currentFilter;\n },\n\n /**\n * Enriches the set of annotation parameters with the extra requested fields & the filter. The function alters its\n * hash parameter and returns the altered value.\n */\n prepareRequestParameters : function(parametersHash) {\n // get all the filter criteria and add them as request parameters\n var filterList = this.getFilter();\n for (var i = 0; i < filterList.length; i++) {\n var filter = filterList[i];\n var filterKey = \'filter_\' + filter.name;\n if (!parametersHash.get(filterKey)) {\n parametersHash.set(filterKey, []);\n }\n parametersHash.get(filterKey).push(filter.value);\n }\n // get all the extra fields requested and add them to the request\n var extraFields = this.getExtraFields();\n if (extraFields.size() > 0) {\n parametersHash.set(\'request_field\', []);\n }\n for (var i = 0; i < extraFields.length; i++) {\n parametersHash.get(\'request_field\').push(extraFields[i]);\n }\n\n return parametersHash;\n },\n\n /*\n * @param andShow whether the annotations should also be shown (highlighted) on the content\n * @param force boolean specifying whether loading should be done even if there are no annotations to display (useful for deleting annotations, which should be reflected in the annotated element even if no annotations are still left to display)\n */\n fetchAnnotations : function(andShow, force) {\n require([\'xwiki-meta\'], function (xm) {\n var getAnnotationsURL = xm.restURL + \'/annotations?media=json\';\n new Ajax.Request(getAnnotationsURL, {method: \'GET\',\n parameters: this.prepareRequestParameters(new Hash()),\n onCreate: function() {\n // show nice loading message at page bottom\n this._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.annotated.loading\')\", \'inprogress\');\n }.bind(this),\n\n onSuccess: function(response) {\n // check the response to make sure it suceeded\n if (this.checkResponseCodeAndFail(response)) {\n return;\n }\n // hide message at page bottom\n this._x_notification.hide();\n // load the received annotated content in the page, along with annotations and annotations markers.\n this.loadAnnotatedContent(response.responseJSON.annotatedContent, andShow, false, force);\n // store the state of the annotations\n this.fetchedAnnotations = true;\n if (this.displayAnnotationsCheckbox) {\n this.displayAnnotationsCheckbox.checked = true;\n }\n }.bind(this),\n\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n // show the error message at the bottom\n this._x_notification.replace(new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.annotated.loaderror\')\" + failureReason, \'error\', {timeout : 5}));\n if (this.displayAnnotationsCheckbox) {\n this.displayAnnotationsCheckbox.checked = false;\n }\n }.bind(this),\n\n on0: function (response) {\n response.request.options.onFailure(response);\n }.bind(this),\n\n onComplete: function() {\n // In the end: re-enable the checkbox\n if (this.displayAnnotationsCheckbox) {\n this.displayAnnotationsCheckbox.disabled = false;\n }\n }.bind(this)\n });\n }.bind(this));\n },\n\n /**\n * Checks if the passed response contains a non-zero response code and, in this case, executes the failure callback\n * of the response.\n */\n checkResponseCodeAndFail : function(response) {\n if (response.responseJSON && response.responseJSON.responseCode != null && response.responseJSON.responseCode == 0) {\n // everything\'s fine\n return false;\n } else {\n // response returns a code and says that there is an error\n if (response.responseJSON) {\n response.statusText = response.responseJSON.responseMessage;\n } else {\n response.statusText = \"$services.localization.render(\'annotations.annotated.loaderror.wrongresponse\')\";\n }\n response.request.options.onFailure(response);\n return true;\n }\n },\n\n /**\n * Loads the annotated content in the annotated element content, if there are any annotations or if forced.\n *\n * @param annotatedContent object holding the annotated content to update the annotated element with (stores the annotations list and the annotated html)\n * @param andShow whether the annotations should also be shown (highlighted) on the content\n * @param navigateToPane if the document should be repositioned to the annotations tab in the document extra section. Useful when the changes on annotations are done from the tab, when the document position should still stay in the tab\n * @param force boolean specifying whether loading should be done even if there are no annotations to display (useful for deleting annotations, which should be reflected in the annotated element even if no annotations are still left to display)\n */\n loadAnnotatedContent : function(annotatedContent, andShow, navigateToPane, force) {\n // only load the annotated content if there are any annotations\n if ((annotatedContent.annotations && annotatedContent.annotations.size() > 0) || force) {\n this.annotatedElement.update(annotatedContent.content);\n this.addAnnotationMarkers(annotatedContent.annotations);\n // Notify the content change.\n document.fire(\'xwiki:dom:updated\', {elements: [this.annotatedElement]});\n // and also handle the tab \'downstairs\' when the annotations list changes\n this.reloadTab(navigateToPane);\n }\n if (andShow) {\n this.toggleAnnotations(true);\n }\n },\n\n reloadTab : function(navigateToPane) {\n var annotationsPane = $( this.annTabname + \'pane\');\n if (annotationsPane) {\n // reset to initial state\n annotationsPane.update(\'\');\n annotationsPane.addClassName(\'empty\');\n if (!annotationsPane.hasClassName(\'hidden\')) {\n // reload\n XWiki.displayDocExtra(this.annTabname, this.annTabTemplate, navigateToPane);\n }\n }\n },\n\n addDeleteListenersInTab : function() {\n // This applies only to the annotations tab because merged annotations are currently displayed and deleted by the Comments system.\n // NOTE: don\'t forget to change this too if, in the future, annotations are no longer deleted by the Comments system from the Comments tab.\n $$(\'#Annotationspane .annotation a.delete\').each(function(item) {\n this.addDeleteListener(item);\n }.bind(this));\n },\n\n addEditListenersInTab : function() {\n // This applies only to the annotations tab because merged annotations are currently displayed and edited by the Comments system.\n // NOTE: don\'t forget to change this too if, in the future, annotations are no longer edited by the Comments system from the Comments tab.\n // NOTE: Doing this does not allow us to see any extra properties that may be added to the XWikiComments class. These properties will still be displayed and editable in the annotation bubble, but not in the tab, because the bubble is handled by the Annotations system, while the tab is handled by the Comments system.\n $$(\'#Annotationspane .annotation a.edit\').each(function(item) {\n var container = item.up(\'.annotation\');\n // compute annotation id, which is right after annotation_list_ in the container ID... TODO: this is pretty wrongish...\n var annotationId = container.id.substring(16);\n this.addEditListener(item, annotationId, container.up());\n }.bind(this));\n },\n\n addValidateListenersInTab : function() {\n $$(\'.annotation a.validate\').each(function(item) {\n var container = item.up(\'.annotation\');\n // compute annotation id, which is right after annotation_list_ in the container ID... TODO: this is pretty wrongish...\n var annotationId = container.id.substring(16);\n this.addValidateListener(item, annotationId, container);\n }.bind(this));\n },\n\n addDeleteListener : function(item, inBubble, container) {\n item.observe(\'click\', function(event) {\n item.blur();\n event.stop();\n if (item.disabled) {\n // Do nothing if the button was already clicked and it\'s waiting for a response from the server.\n return;\n } else {\n new XWiki.widgets.ConfirmedAjaxRequest(\n item.href,\n {\n parameters: this.prepareRequestParameters(new Hash()),\n onCreate : function() {\n // Disable the button, to avoid a cascade of clicks from impatient users\n item.disabled = true;\n },\n onSuccess : function(response) {\n // check the response to see if all went fine\n if (this.checkResponseCodeAndFail(response)) {\n return;\n }\n // hide the bubble if the delete takes place in a bubble\n if (inBubble) {\n this.hideBubble(container);\n }\n this.fetchedAnnotations = true;\n // reload the received annotated content forcing update so that deleting last annotation is reflected in the list of annotations, with scroll to tab if not in bubble\n this.loadAnnotatedContent(response.responseJSON.annotatedContent, this.displayAnnotationsCheckbox ? this.displayAnnotationsCheckbox.checked : this.displayedByDefault, !inBubble, true);\n }.bind(this),\n onComplete : function() {\n // In the end: re-enable the button\n item.disabled = false;\n }\n },\n /* Interaction parameters */\n {\n confirmationText: \"$services.localization.render(\'annotations.action.delete.confirm\')\",\n progressMessageText : \"$services.localization.render(\'annotations.action.delete.inProgress\')\",\n successMessageText : \"$services.localization.render(\'annotations.action.delete.done\')\",\n failureMessageText : \"$services.localization.render(\'annotations.action.delete.failed\')\"\n }\n );\n }\n }.bindAsEventListener(this));\n },\n\n addValidateListener : function(item, id, container, inBubble) {\n item.observe(\'click\', function(event) {\n item.blur();\n event.stop();\n // and submit the update\n this.updateAnnotationAsync(container, id, inBubble, item.href, \'POST\',\n new Hash({\'state\' : \'SAFE\', \'originalSelection\' : \'\'}),\n {\n successText : \"$services.localization.render(\'annotations.action.validate.success\')\",\n failureText : \"$services.localization.render(\'annotations.action.validate.loaderror\')\"\n });\n }.bindAsEventListener(this));\n },\n\n addEditListener : function(item, id, container, inBubble) {\n item.observe(\'click\', function(event) {\n item.blur();\n event.stop();\n if (item.disabled) {\n // Do nothing if the button was already clicked and it\'s waiting for a response from the server.\n return;\n } else {\n require([\'xwiki-meta\'], function (xm) {\n new Ajax.Request(\'$xwiki.getURL(\"AnnotationCode.EditForm\")\', {\n parameters: {\n \'xpage\' : \'plain\',\n \'wiki\' : XWiki.currentWiki,\n \'space\' : XWiki.currentSpace,\n \'page\' : XWiki.currentPage,\n \'reference\' : xm.document,\n \'id\' : id\n },\n onCreate : function() {\n // save the original content to be able to cancel or to be able to recover at callback failure\n container.originalContentHTML = container.innerHTML;\n // Disable the button, to avoid a cascade of clicks from impatient users\n item.disabled = true;\n // set the container as loading -> might not really work on bubble since it doesn\'t have fixed size\n container.update(new Element(\'div\', {\'class\' : \'loading\'}));\n },\n onSuccess : function(response) {\n // fill the edit bubble\n this.fillEditForm(container, response.responseText, id, inBubble);\n }.bind(this),\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n // show the error message at the bottom\n this._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.edit.form.loaderror\')\" + failureReason, \'error\', {timeout : 5});\n // load the original content of the container\n this.fillViewPanel(container, container.originalContentHTML, id, inBubble);\n }.bind(this),\n on0: function (response) {\n response.request.options.onFailure(response);\n }.bind(this),\n onComplete : function() {\n // In the end: re-enable the button\n item.disabled = false;\n }\n });\n }.bind(this));\n }\n }.bindAsEventListener(this));\n },\n\n addAnnotationMarkers : function(annotations) {\n annotations.each(function(item){\n // get the last span of this annotation\n var allSpans = this.annotatedElement.select(\'[class~=ID\' + item.annotationId + \']\');\n if (allSpans.size() == 0) {\n return;\n }\n var lastSpan = allSpans[allSpans.size() - 1];\n // create the annotation markers hidden by default, since annotations are added on the document hidden by default\n var markerSpan = new Element(\'span\', {\'id\': \'ID\' + item.annotationId, \'class\' : \'hidden annotation-marker \' + item.state});\n lastSpan.insert({after: markerSpan});\n // annotations are displayed on mouseover\n markerSpan.observe(\'click\', this.onMarkerClick.bindAsEventListener(this, item.annotationId));\n }.bind(this));\n },\n\n // maybe this should be moved in a function to display a bubble from an address, to call for all dialogs for different parameters\n onMarkerClick : function(event, id) {\n var bubbleId = \'annotation-bubble-\' + id;\n var bubble = $(bubbleId);\n if (!this.displayHighlight) {\n this.toggleAnnotationHighlight(id, !bubble);\n }\n if (bubble) {\n // Close the bubble.\n this.hideBubble(bubble);\n } else {\n // Show the bubble and fetch the annotation display in it.\n var bubble = this.displayLoadingBubble(event.element().cumulativeOffset().top,\n event.element().cumulativeOffset().left);\n bubble.writeAttribute(\'id\', bubbleId);\n this.fetchAndShowAnnotationDetails(id, bubble);\n }\n },\n\n fetchAndShowAnnotationDetails : function(annotationId, container) {\n require([\'xwiki-meta\'], function (xm) {\n new Ajax.Request(\'$xwiki.getURL(\"AnnotationCode.DisplayForm\")\', {\n parameters: {\n \'id\' : annotationId,\n \'xpage\' : \'plain\',\n \'wiki\' : XWiki.currentWiki,\n \'space\' : XWiki.currentSpace,\n \'page\' : XWiki.currentPage,\n \'reference\' : xm.document\n },\n onSuccess: function(response) {\n // display the annotation creation form\n this.fillViewPanel(container, response.responseText, annotationId, true);\n }.bind(this),\n\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n // hide the loading bubble\n this.hideBubble(newBubble);\n // show the error message at the bottom\n this._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.view.form.loaderror\')\" + failureReason, \'error\', {timeout : 5});\n }.bind(this),\n\n on0: function (response) {\n response.request.options.onFailure(response);\n }.bind(this)\n });\n }.bind(this));\n },\n\n displayLoadingBubble : function(top, left) {\n // create an element with the form\n var bubble = new Element(\'div\', {\'class\' : \'annotation-bubble\'});\n // and a nice loading panel inside\n bubble.insert({top : new Element(\'div\', {\'class\' : \'loading\'})});\n // and put it in the content\n document.body.insert({bottom : bubble});\n // make it hidden for the moment\n bubble.toggleClassName(\'hidden\');\n // position it\n bubble.style.left = left + \'px\';\n bubble.style.top = top + \'px\';\n // make it visible\n bubble.toggleClassName(\'hidden\');\n // put this bubble in the bubbles stack\n this.bubbles.push(bubble);\n\n return bubble;\n },\n\n displayAnnotationViewBubble : function(marker) {\n },\n\n /**\n * Updates the container with the passed content only if the container is still displayed, and returns true if this is the case.\n */\n safeUpdate : function(container, content) {\n if (!container.parentNode) {\n // it\'s not attached anymore: either mouseout or escape\n return false;\n }\n\n // put the content in\n container.update(content);\n return true;\n },\n\n /**\n * Fills the edit form in the passed container, with the content passed (which should be the edit form) and sets all\n * listeners for the annotation with the passed id. If inBubble is true, the edit form is in a bubble, not in the\n * bottom panel.\n */\n fillEditForm : function(container, content, annotationId, inBubble) {\n if (!this.safeUpdate(container, content)) {\n return;\n }\n // remove the mouseout listener (if any), edit form should stay on\n container.stopObserving(\'mouseout\');\n // add the delete and validate listeners to the respective delete buttons\n var deleteButton = container.down(\'a.delete\');\n if (deleteButton) {\n this.addDeleteListener(deleteButton, inBubble, container);\n }\n var validateButton = container.down(\'a.validate\');\n if (validateButton) {\n this.addValidateListener(validateButton, annotationId, container, inBubble);\n }\n container.down(\'form\').focusFirstElement();\n // and add the button listeners\n container.down(\'input[type=submit]\').observe(\'click\', this.onAnnotationEdit.bindAsEventListener(this, container, annotationId, inBubble));\n container.down(\'input[type=reset]\').observe(\'click\', function(event) {\n if (inBubble) {\n // close this bubble.\n this.hideBubble(container);\n } else {\n // reload the original content on cancel\n this.fillViewPanel(container, container.originalContentHTML, annotationId, false);\n }\n }.bindAsEventListener(this));\n },\n\n onAnnotationEdit : function(event, container, annotationId, inBubble) {\n event.stop();\n var form = container.down(\'form\');\n var formData = new Hash(form.serialize(true));\n // aaand update\n this.updateAnnotationAsync(container, annotationId, inBubble, form.action, form.method, formData,\n {\n successText : \"$services.localization.render(\'annotations.action.edit.success\')\",\n failureText : \"$services.localization.render(\'annotations.action.edit.loaderror\')\"\n });\n },\n\n /**\n * Handles the asynchronous update of annotation given by annotatinId, to the specified url, sending the specified\n * parameters and using the passed messages. Container will pass in loading state while the async call takes place,\n * and the tab update & form hiding will be handled as specified by inBubble. The passed messages must specify\n * successText and failureText.\n */\n updateAnnotationAsync : function(container, annotationId, inBubble, action, method, parameters, messages) {\n // create the async request to update the annotation\n new Ajax.Request(action, {\n method : method,\n parameters : this.prepareRequestParameters(parameters),\n onCreate : function() {\n // make it load when starting to send the async call\n if (container.parentNode) {\n container.update(new Element(\'div\', {\'class\' : \'loading\'}));\n }\n },\n onSuccess : function (response) {\n // check the response to see if all went fine\n if (this.checkResponseCodeAndFail(response)) {\n return;\n }\n this._x_notification = new XWiki.widgets.Notification(messages.successText, \'done\');\n if (inBubble) {\n // close the bubble on successful update\n this.hideBubble(container);\n }\n this.fetchedAnnotations = true;\n // reload the received annotated content, with scroll to tab\n this.loadAnnotatedContent(response.responseJSON.annotatedContent, this.displayAnnotationsCheckbox ? this.displayAnnotationsCheckbox.checked : this.displayedByDefault, !inBubble);\n }.bind(this),\n onFailure : function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n this._x_notification.replace(new XWiki.widgets.Notification(messages.failureText + failureReason, \'error\', {timeout : 5}));\n if (inBubble) {\n // and close the bubble on failure to update\n this.hideBubble(container);\n } else {\n // reload the original content on failure\n this.fillViewPanel(container, container.originalContentHTML, annotationId, false);\n }\n }.bind(this),\n on0 : function (response) {\n response.request.options.onFailure(response);\n }\n });\n },\n\n /**\n * Fills the display panel for the passed container, with the passed content, for the passed annotation and sets the\n * edit and delete listeners. If inBubble is set to true, then the panel is in a view bubble, not in the bottom panel\n * (or other place).\n */\n fillViewPanel : function(container, content, annotationId, inBubble) {\n if (!this.safeUpdate(container, content)) {\n return;\n }\n // and add the button observers\n /*\n No hide button ftm\n bubble.down(\'a.annotation-view-hide\').observe(\'click\', function(event, bubble) {\n event.stop();\n this.hideBubble(bubble);\n }.bindAsEventListener(this, bubble));\n */\n // add the delete listener to the delete button\n var deleteButton = container.down(\'a.delete\');\n if (deleteButton) {\n this.addDeleteListener(deleteButton, inBubble, container);\n }\n var validateButton = container.down(\'a.validate\');\n if (validateButton) {\n this.addValidateListener(validateButton, annotationId, container, inBubble);\n }\n var editButton = container.down(\'a.edit\');\n if (editButton) {\n this.addEditListener(editButton, annotationId, container, inBubble);\n }\n // Annotations can have a reply button when they are merged with comments (and thus stored as comments). Custom annotations will not have this button displayed.\n var replyButton = container.down(\'a.reply\');\n if (replyButton) {\n // When a click is done on this button, fire a click on the corresponding button in the comments tab.\n\n // Locate the button in the comments tab.\n var replyButtonInTab = $$(\'#Commentspane #xwikicomment_\' + annotationId + \' a.commentreply\')[0];\n\n // If the replyButtonInTab is not found, then the comments tab is not visible so we hide the reply button as well, otherwise it just does not work.\n if (!replyButtonInTab) {\n replyButton.hide();\n } else {\n // When the reply button from the bubble is clicked, also click the reply button from the comments tab.\n replyButton.observe(\'click\', function(event) {\n // Stop the bubble click event.\n event.stop();\n\n // The content of the Comments tab is reloaded when a comment is added so we can\'t cache the reference to the\n // reply button.\n replyButtonInTab = $$(\'#Commentspane #xwikicomment_\' + annotationId + \' a.commentreply\')[0];\n // Click the reply button from the comments tab button instead.\n replyButtonInTab.click();\n\n // Lose the focus on the bubble so that it can go away.\n container.blur();\n });\n }\n }\n },\n\n /**\n * Hides the passed bubble and removes it from the bubbles stack.\n */\n hideBubble : function(bubble) {\n if (!bubble.parentNode) {\n // it\'s not attached anymore: either mouseout or escape\n return;\n }\n bubble.remove();\n var bubbleIndex = this.bubbles.indexOf(bubble);\n if (bubbleIndex >= 0) {\n // remove it\n this.bubbles.splice(bubbleIndex, 1);\n }\n },\n\n registerShortcuts : function(annotationShorcuts, method) {\n for (var i = 0; i < annotationShorcuts.size(); ++i) {\n shortcut.add(annotationShorcuts[i], method.bindAsEventListener(this));\n }\n },\n unregisterShortcuts : function(annotationShorcuts) {\n for (var i = 0; i < annotationShorcuts.size(); ++i) {\n shortcut.remove(annotationShorcuts[i]);\n }\n },\n\n registerAddAnnotationShortcut : function() {\n this.registerShortcuts(this.addAnnotationShortcuts, this.onAddAnnotationShortcut);\n },\n unregisterAddAnnotationShortcut : function() {\n this.unregisterShortcuts(this.addAnnotationShortcuts);\n },\n\n registerCloseDialogShortcut : function() {\n this.registerShortcuts(this.closeDialogShortcuts, this.closeOpenBubble);\n },\n\n registerToggleAnnotationsShortcut : function() {\n this.registerShortcuts(this.toggleAnnotationsShortcuts, this.onToggleAnnotationsShortcut);\n },\n\n onToggleAnnotationsShortcut : function() {\n if (this.fetchedAnnotations) {\n this.setAnnotationVisibility(!this.displayingAnnotations);\n this.toggleAnnotations(this.displayingAnnotations);\n } else {\n this.fetchAnnotations(true);\n }\n },\n\n /**\n * Closes the last opened bubble (i.e. last bubble in the this.bubbles stack).\n */\n closeOpenBubble : function() {\n if (this.bubbles.length > 0) {\n // get the last one\n var lastBubble = this.bubbles[this.bubbles.length - 1];\n if (lastBubble == this.createPanel) {\n this.hideAnnotationCreationForm();\n } else {\n this.hideBubble(lastBubble);\n }\n }\n },\n\n /**\n * Execute the add annotation shortcut: get selection, compute context, open dialog, register listeners.\n */\n onAddAnnotationShortcut : function() {\n // if the document is in 1.0 syntax, prevent the create dialog to be displayed, display a warning and stop everything\n if (XWiki.docsyntax == \'xwiki/1.0\') {\n new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.create.error.wrongsyntax\')\", \'warning\');\n return;\n }\n // parse the selection\n this.selectionService.computeSelection();\n var selectionText = this.selectionService.selectionText;\n if (!selectionText) {\n // show an \'invalid selection message\'. Shorter time here, otherwise it\'s a bit confusing...\n new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.create.selection.invalid\')\", \'error\', {timeout : 5});\n } else {\n this.selectionService.computeContext();\n require([\'xwiki-meta\'], function (xm) {\n // fetch the creation for this annotation and display it at the position of the selection\n new Ajax.Request(\'$xwiki.getURL(\"AnnotationCode.CreateForm\")\', {\n parameters: {\n \'xpage\' : \'plain\',\n \'selection\' : selectionText,\n \'selectionContext\' : this.selectionService.selectionContext,\n \'selectionOffset\' : this.selectionService.selectionOffset,\n \'reference\' : xm.document\n },\n onCreate: function() {\n // create nice loading panel\n this.displayAnnotationCreationForm();\n }.bind(this),\n\n onSuccess: function(response) {\n // display the annotation creation form\n this.fillCreateForm(this.createPanel, response.responseText);\n }.bind(this),\n\n onFailure: function(response) {\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n // show the error message at the bottom\n this._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.create.form.loaderror\')\" + failureReason, \'error\', {timeout : 5});\n // and hide the create form panel\n this.hideAnnotationCreationForm();\n }.bind(this),\n\n on0: function (response) {\n response.request.options.onFailure(response);\n }.bind(this)\n });\n }.bind(this));\n }\n },\n\n displayAnnotationCreationForm : function() {\n // TODO: get this color from the color theme\n this.selectionService.highlightSelection(\'#FFEE99\');\n // get the position and build the loading bubble\n var position = this.selectionService.getPositionNextToSelection();\n this.createPanel = this.displayLoadingBubble(position.top, position.left);\n // remove the ctrl + M listeners, so that only one dialog is displayed at one moment\n this.unregisterAddAnnotationShortcut();\n },\n\n fillCreateForm : function(container, panelContent) {\n // put the content in. Safe update because an escape might have been hit\n if (!this.safeUpdate(this.createPanel, panelContent)) {\n return;\n }\n // set the focus in the first element of type input\n this.createPanel.select(\'form\').first().focusFirstElement();\n // and add the button observers\n this.createPanel.down(\'input[type=submit]\').observe(\'click\', this.onAnnotationAdd.bindAsEventListener(this));\n this.createPanel.down(\'input[type=reset]\').observe(\'click\', function() {\n this.hideAnnotationCreationForm();\n }.bind(this));\n },\n\n hideAnnotationCreationForm : function(skipSelectionHighlightClear) {\n // remove it from document and remove it from the open bubbles\n this.hideBubble(this.createPanel);\n if (!skipSelectionHighlightClear) {\n // rollback selection coloring\n this.selectionService.removeSelectionHighlight();\n }\n // and listen to the create shortcut again\n this.registerAddAnnotationShortcut();\n },\n\n onAnnotationAdd : function(event) {\n // don\'t submit\n event.stop();\n var form = this.createPanel.down(\'form\');\n var formData = new Hash(form.serialize(true));\n // aaand submit\n new Ajax.Request(form.action, {\n method : form.method,\n parameters : this.prepareRequestParameters(formData),\n onCreate : function() {\n // make it load while update is in progress\n this.createPanel.update(new Element(\'div\', {\'class\' : \'loading\'}));\n }.bind(this),\n onSuccess : function (response) {\n // check the response to see if all went fine\n if (this.checkResponseCodeAndFail(response)) {\n return;\n }\n if (this.displayAnnotationsCheckbox) {\n this.displayAnnotationsCheckbox.checked = true;\n }\n this.loadAnnotatedContent(response.responseJSON.annotatedContent, true);\n this.fetchedAnnotations = true;\n form._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.create.success\')\", \'done\');\n // and hide the create bubble, skipping selection highlight clear\n this.hideAnnotationCreationForm(true);\n }.bind(this),\n onFailure : function(response) {\n this.hideAnnotationCreationForm();\n var failureReason = response.statusText;\n if (response.statusText == \'\' /* No response */ || response.status == 12031 /* In IE */) {\n failureReason = \'Server not responding\';\n }\n this._x_notification = new XWiki.widgets.Notification(\"$services.localization.render(\'annotations.action.create.loaderror\')\" + failureReason, \'error\', {timeout : 5});\n }.bind(this),\n on0 : function (response) {\n response.request.options.onFailure(response);\n }\n });\n },\n\n /**\n * Handles the refresh of the document content when an annotations is deleted from the comments tab.\n * It applies only to the case when annotations are merged with (and stored as) comments. Custom annotations will not use this.\n */\n refreshAnnotationsOnCommentDelete : function(event) {\n // if the annotations are currently visible, re-fetch the annotations and display them\n var visible = this.displayAnnotationsCheckbox ? this.displayAnnotationsCheckbox.checked : this.displayedByDefault;\n if (visible) {\n // Force the reloading in case this annotation was the last one.\n this.fetchAnnotations(true, true);\n } else {\n // Mark the loaded annotations as dirty and make sure the next time the annotations checkbox is checked, the annotations will be fetched.\n this.fetchedAnnotations = false;\n }\n }\n});\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));\n\ndocument.observe(\'xwiki:dom:loaded\', function() {\n // Load the annotations only in view mode, if the document content is displayed\n // (the document content is not displayed when viewer=history for instance).\n if (XWiki.contextaction != \'view\' || !$(\'xwikicontent\')) {\n return;\n }\n\n #if ($annotationHighlightByDefault && $annotationHighlightByDefault != 0)\n var displayHighlight = true;\n #else\n var displayHighlight = false;\n #end\n #if ($annotationsDisplayedByDefault && $annotationsDisplayedByDefault != 0)\n var displayed = true;\n #else\n var displayed = false;\n #end\n #if ($annotationsActivated && $annotationsActivated != 0)\n var activated = true;\n #else\n var activated = false;\n #end\n\n // parse the exception spaces and check where is the current space in that list\n var exceptions = [];\n #foreach($space in $exceptionSpaces)\n exceptions.push(\'$space\');\n #end\n var currentSpaceInExceptions = exceptions.indexOf(XWiki.currentSpace);\n // if the annotations are activated and the current space is not an exception or the annotations are not activated but the current space is an exception\n if ((activated && currentSpaceInExceptions < 0) || (!activated && currentSpaceInExceptions >= 0)) {\n // initialize the annotations on the xwikicontent element which is the document content by default\n new XWiki.Annotation(displayHighlight, $(\'xwikicontent\'), displayed);\n }\n});\n'),(7924876905070109905,'query','fq=type:DOCUMENT\nqf=title^2 name'),(7932957494993908410,'code','.docdoesnotexist-solr-container {\n margin-top: 1em;\n}'),(7951221076831937111,'code','@import \"$services.webjars.url(\'org.webjars:font-awesome\', \'css/font-awesome.min.css\')\"'),(7951663437198471340,'code','require([\'jquery\'], function ($) {\n \'use strict\';\n\n $(document).ready(function() {\n\n /**\n * Show only options of the current scope (local/global)\n */\n var refreshDisplayer = function (displayer) {\n var select = displayer.find(\'select\');\n var currentScope = select.data(\'current-scope\');\n var optgroups = select.find(\'optgroup\');\n for (var i = 0; i < optgroups.length; ++i) {\n var optgroup = $(optgroups[i]);\n if (optgroup.data(\'scope\') != currentScope) {\n optgroup.hide();\n } else {\n optgroup.show();\n }\n }\n }\n\n /**\n * Initialization\n */\n var init = function () {\n $(\'.XWikiColorThemeDisplayer\').each(function() {\n var displayer = $(this);\n\n // Refresh the displayer to hide unecessary elements\n refreshDisplayer(displayer);\n\n /**\n * Event called when the user click on a tab and so change the current scope\n */\n displayer.find(\'li > a[role=\"tab\"]\').click(function () {\n var tabLink = $(this);\n var displayer = tabLink.parents(\'.XWikiColorThemeDisplayer\');\n var select = displayer.find(\'select\');\n var newScope = tabLink.data(\'scope\');\n var currentScope = newScope == \'local\' ? \'global\' : \'local\';\n // Record the current value\n select.data(\'value-\' + currentScope, select.val());\n // Update the current scope\n select.data(\'current-scope\', newScope);\n // Refresh the displayer according to the new scope\n refreshDisplayer(displayer);\n // Set the previous value for that scope\n var oldValue = select.data(\'value-\' + newScope);\n select.val(oldValue ? oldValue : \'\');\n });\n });\n }\n\n\n init();\n\n });\n});\n'),(7968266485493343853,'code','require([\'jquery\', \'xwiki-meta\'], function ($, xm) {\n \'use strict\';\n $(document).ready(function() {\n /**\n * Save the new user status.\n */\n var changeUserStatus = function (action) {\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.saving\'))\", \'inprogress\');\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.Notifications.Code.NotificationPreferenceService\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(url, {\n \'action\': action,\n \'csrf\': xm.form_token,\n \'userId\': XWiki.Model.serialize(xm.documentReference)\n }).done(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.done\'))\", \'done\');\n if (action == \'watchUser\') {\n $(\'.notificationWatchUserNotFollowing\').addClass(\'hidden\');\n $(\'.notificationWatchUserFollowing\').removeClass(\'hidden\')\n } else {\n $(\'.notificationWatchUserFollowing\').addClass(\'hidden\');\n $(\'.notificationWatchUserNotFollowing\').removeClass(\'hidden\');\n }\n }).fail(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.error\'))\", \'error\');\n });\n };\n\n var setUserDisableStatus = function(action) {\n var notification = new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.saving\'))\", \'inprogress\');\n var url = new XWiki.Document(XWiki.Model.resolve(\'XWiki.XWikiUserProfileSheet\', XWiki.EntityType.DOCUMENT)).getURL(\'get\', \'outputSyntax=plain\');\n $.post(url, {\n \'action\': action,\n \'csrf\': xm.form_token,\n \'userId\': XWiki.Model.serialize(xm.documentReference)\n }).done(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.done\'))\", \'done\');\n if (action == \'disable\') {\n $(\'#disable\').addClass(\'hidden\');\n $(\'#enable\').removeClass(\'hidden\');\n } else {\n $(\'#disable\').removeClass(\'hidden\');\n $(\'#enable\').addClass(\'hidden\');\n }\n }).fail(function() {\n notification.hide();\n new XWiki.widgets.Notification(\"$escapetool.javascript($services.localization.render(\'user.profile.network.error\'))\", \'error\');\n });\n };\n\n $(\'#disable\').click(function (event) {\n setUserDisableStatus(\'disable\');\n });\n\n $(\'#enable\').click(function (event) {\n setUserDisableStatus(\'enable\');\n });\n\n /**\n * DOM events\n */\n $(\'.notificationWatchUserAdd\').click(function (event) {\n changeUserStatus(\'watchUser\');\n });\n $(\'.notificationWatchUserRemove\').click(function (event) {\n changeUserStatus(\'unwatchUser\');\n });\n });\n});'),(7993816430830576439,'code','.actionjoin {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/user_add.png\')\");\n}\n\n.actionleave {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/user_delete.png\')\");\n}\n\n.actionrequestJoin {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/bell.png\')\");\n}\n\n.actioncancelJoinRequest {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/bell_delete.png\')\");\n}\n\n.actionviewInvitation {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/script.png\')\");\n}'),(8009908531353325490,'async_context',''),(8009908531353325490,'code','{{velocity}}\n##\n## List spaces within the wiki.\n##\n$xwiki.ssx.use(\'Main.Spaces\')##\n#set($spaceList = $services.query.xwql(\'select distinct doc.space from Document doc order by doc.space\').addFilter(\'hidden\').execute())\n{{html}}\n<ul class=\"xlist\">\n ##\n ## List spaces.\n ##\n #foreach($space in $spaceList)\n ## Display space only if the user has view right on space home and if the space is not blacklisted.\n ## $blacklistedSpaces is set in xwikivars.vm\n #set ($spaceHomeDocumentReference = $services.model.resolveSpace($space))\n #if($xwiki.hasAccessLevel(\'view\', $services.model.serialize($spaceHomeDocumentReference)) && !$blacklistedSpaces.contains($space))\n <li class=\"xitem xunderline xhighlight space\">\n <div class=\"xitemcontainer\">\n <div class=\"spSpaceName\"><a href=\"$xwiki.getURL($spaceHomeDocumentReference)\">${escapetool.xml($space)}</a></div>\n <div class=\"xshowonhover spSpaceActions\">\n ## Link to the space index.\n <a href=\"$xwiki.getURL(\'Main.SpaceIndex\', \'view\', \"space=$escapetool.url($space)\")\" title=\"$services.localization.render(\'index.spacesMacro.spaceIndex.title\')\">\n <img src=\"$xwiki.getSkinFile(\'icons/silk/book_open.png\')\" alt=\"$services.localization.render(\'index.spacesMacro.spaceIndex.alt\')\"/>\n </a>\n ## If the user has admin right on the space display links to administration and delete.\n #set ($spacePreferencesDocumentReference = $services.model.createEntityReference(\'WebPreferences\', \'DOCUMENT\', $spaceHomeDocumentReference))\n #if($xwiki.hasAccessLevel(\'admin\', $services.model.serialize($spacePreferencesDocumentReference)))\n <a href=\"$xwiki.getURL($spacePreferencesDocumentReference, \'admin\', \'\')\" title=\"$services.localization.render(\'index.spacesMacro.spaceAdministration.title\')\">\n <img src=\"$xwiki.getSkinFile(\'icons/silk/wrench.png\')\" alt=\"$services.localization.render(\'index.spacesMacro.spaceAdministration.alt\')\"/>\n </a>\n #end\n </div>\n <div class=\"xspacer\"> </div>\n </div>\n </li>\n #end\n #end\n ##\n ## Space creation.\n ##\n ## Only if the current user has the right to create spaces and the current action is not inline.\n ## If it\'s inline, then there is already a form, and if we render the second, nested one, the DOM is messed up in IE.\n #if($hasCreateSpace && \"$!xcontext.action\" != \"inline\" && \"$!xcontext.action\" != \"edit\")\n <li id=\"spSpaceCreateItem\" class=\"xitem space\">\n <div class=\"xitemcontainer\">\n <div id=\"spSpaceCreateLabel\" class=\"spSpaceName\"><a href=\"$xwiki.getURL(\'XWiki.CreatePage\', \'view\', \'tocreate=space\')\" onclick=\"toggleClass($(\'spSpaceCreateForm\'), \'hidden\'); return false;\">$services.localization.render(\'index.spacesMacro.createSpace.link\')</a></div>\n <div class=\"spacer\"> </div>\n <div id=\"spSpaceCreateForm\" class=\"hidden\">\n <form method=\"post\" action=\"$doc.getURL(\'create\')\" class=\"xformInline\">\n <div>\n <input name=\"tocreate\" type=\"hidden\" value=\"space\" />\n #set($newSpaceName = $escapetool.xml($services.localization.render(\'index.spacesMacro.createSpace.defaultSpaceName\')))\n <label class=\"hidden\" for=\"spSpaceCreateTextInput\">$newSpaceName</label>\n <input id=\"spSpaceCreateTextInput\" type=\"text\" name=\"space\" value=\"$newSpaceName\" class=\"panelinput withTip\" />\n <span class=\"buttonwrapper\">\n <input type=\"submit\" value=\"$services.localization.render(\'index.spacesMacro.createSpace.submit\')\" class=\"button\" />\n </span>\n </div>\n </form>\n </div>\n <div class=\"spacer\"> </div>\n </div>\n </li>\n #end\n</ul>\n{{/html}}\n{{/velocity}}\n'),(8009908531353325490,'contentDescription',''),(8009908531353325490,'contentJavaType',''),(8009908531353325490,'description','Displays all the spaces in this wiki.'),(8025726430198530684,'async_context',''),(8025726430198530684,'content',''),(8025726430198530684,'parameters','label=Menu\ntarget=Menu.WebHome\nicon=icon:text_list_bullets'),(8033261753603887338,'description','Show the wiki pretty name instead of the wiki id when displaying a wiki node.'),(8035584766665143395,'groups',''),(8035584766665143395,'users',''),(8050289943775097487,'codeToExecute',''),(8090097450957698493,'description','Specifies the list of columns to display (e.g. \"doc.name,doc.space\"). If not specified then the default column list of used (\"doc.name,doc.space,doc.date,doc.author\")'),(8152517734083872539,'async_context',''),(8152517734083872539,'content','{{velocity}}\n#panelheader($services.localization.render(\'welcome\'))\n$services.localization.render(\'xe.panels.welcome.xwiki\')\n#panelfooter()\n{{/velocity}}'),(8152517734083872539,'description','Displays a simple welcome message to all visitors. This message is meant to be customized to display whatever welcome information you\'d like to show.'),(8220020539647411516,'columns','first_name last_name'),(8273498943401499746,'async_context',''),(8273498943401499746,'content','{{velocity}}\n#set ($discard = $xwiki.ssx.use(\'Panels.NewPage\'))\n#if ($hasEdit || $showEmptyPanels)\n#panelheader($services.localization.render(\'core.create.pageTitle\'))\n#set ($panelId = $util.generateRandomString(4))\n{{html clean=\"false\"}}\n<form method=\"post\" action=\"$doc.getURL(\'create\')\" onsubmit=\"cancelCancelEdit()\" class=\'xform\'>\n{{/html}}\n (% class=\'\' %)\n (((\n (% class=\"hidden\" %)\n {{html}}\n <input type=\"hidden\" name=\"form_token\" value=\"$!{services.csrf.getToken()}\" />\n <input type=\"hidden\" name=\"tocreate\" value=\"page\"/>\n <input type=\"hidden\" name=\"parent\" value=\"$!services.model.serialize($doc.documentReference, \'local\')\"/>\n {{/html}}\n #set ($spaceInputId = \"space$!{panelId}\")\n #set ($spaceReference = $!services.model.serialize($doc.documentReference.parent, \'local\'))\n #set ($pageInputId = \"page$!{panelId}\")\n #set ($pageText = $services.localization.render(\'core.create.pageText\'))\n ; {{html}}<label for=\"$spaceInputId\">$services.localization.render(\'core.create.space\')</label>{{/html}}\n : {{html}}<input type=\"text\" id=\"$spaceInputId\" name=\"spaceReference\" value=\"$!spaceReference\" class=\"suggestSpaces\" />{{/html}}\n ; {{html}}<label for=\"$pageInputId\">$services.localization.render(\'core.create.page\')</label>{{/html}}\n : {{html}}<input type=\"text\" id=\"$pageInputId\" class=\"withTip\" name=\"name\" value=\"$pageText\" />{{/html}}\n (% class=\"buttonwrapper\" %)\n (((\n {{html}}<input type=\"submit\" class=\"button\" value=\"$services.localization.render(\'create\')\" />{{/html}}\n )))\n )))\n{{html clean=\"false\"}}\n</form>\n{{/html}}\n#panelfooter()\n#end\n{{/velocity}}'),(8273498943401499746,'description','Form for creating a new page in the wiki.'),(8296242758058445750,'longText1',' '),(8296242758058445750,'staticList1',''),(8334590174041001341,'sections','personal\ncontact\nlinks'),(8350928796547166764,'code','#template(\'colorThemeInit.vm\')\n\n.xwikiIconPickerContainer {\n width: 520px;\n height: 300px;\n border: 1px solid black;\n position: fixed;\n z-index: 1000;\n background-color: $theme.pageContentBackgroundColor;\n}\n\n.xwikiIconPickerList {\n overflow-y: scroll;\n height: 240px;\n}\n\n.xwikiIconPickerIcon {\n float: left;\n height: 80px;\n width: 100px;\n text-align: center;\n border-radius: 4px;\n vertical-align: middle;\n overflow: hidden;\n padding: 10px;\n cursor: pointer;\n}\n\n.xwikiIconPickerIcon:hover {\n background-color: $theme.highlightColor;\n}\n\n.xwikiIconPickerIconImage {\n font-size: 24px;\n margin: 0;\n}\n\n.xwikiIconPickerIconImage img{\n width: 24px;\n}\n\n.xwikiIconPickerIconThemeSelector {\n width: 100%;\n background-color: $theme.menuBackgroundColor;\n color: $theme.menuLinkColor;\n padding: 10px;\n text-align: center;\n clear: left;\n height: 60px;\n}\n'),(8378817854146866053,'code','#template(\'colorThemeInit.vm\')\n\n.overrideTitle:hover, .deprecatedProperties h2:hover{\n background-color: $theme.highlightColor;\n cursor: pointer;\n}\n\n.overrideProperties {\n margin-left: 25px;\n}\n\n.overrideObjectDelete {\n position: relative;\n text-align: right;\n margin-top: -40px;\n float: right;\n font-size: 130%;\n}\n\n.skin-colibri .overrideObjectDelete {\n margin-top: -55px;\n}\n\n.newPathLabel {\n color: $theme.linkColor;\n display: inline;\n font-size: 100%;\n font-style: italic;\n font-weight: normal;\n margin: 0px;\n text-transform: none;\n}\n'),(8410165592087257905,'async_context',''),(8410165592087257905,'content',''),(8410165592087257905,'parameters','## If one property is empty then the entry point won\'t be listed. Thus we check for Admin rights since we don\'t want to show the Panels Application if the user does\'t have Admin rights.\nlabel=#if($hasAdmin)$services.localization.render(\'xe.panels\')#end\ntarget=Panels.WebHome\nicon=icon:layout\n'),(8517600323452833280,'code','require([\'jquery\', \'$xwiki.getURL(\'SyntaxHighlighting.SyntaxHighlighting\', \'jsx\', \"minify=$!services.debug.minify\")\', \'xwiki-events-bridge\'], function($, SH) {\n /* Initialize the CodeMirror library and then start registering the extra modules. */\n var initCodeMirrorInternals = function() {\n initCodeMirrors();\n\n // Override the insertTags method for the wiki syntax editor so that we can intercept commands from\n // the attached toolbar and execute them on the CodeMirror instance instead of the simple textarea\n if (XWiki.editor == \'wiki\' && insertTags) {\n insertTags = function(tagOpen, tagClose, sampleText) {\n var codeMirror = SH.codeMirrors[0];\n if (!codeMirror) {\n return;\n }\n codeMirror.replaceSelection(tagOpen + (codeMirror.doc.getSelection() || sampleText) + tagClose, \'end\');\n }\n }\n }\n\n /* Initialize all possible CodeMirror instances. */\n var initCodeMirrors = function () {\n // Use the theme chosen in the wiki\'s administration and passed in the request.\n var theme = \"$!{request.theme}\";\n if(!theme) theme = \'default\';\n SH.setTheme(theme);\n\n var options = [[], {\n extraKeys : {\n // Fullscreen on\n \'F11\' : function(cm) {\n var editorDiv = cm.getWrapperElement();\n if (!editorDiv.hasClassName(\'CodeMirror-fullscreen\')) {\n var fullScreenActivatorElement = editorDiv.up().select(\'.fullScreenEditButton\', \'.fullScreenEditLink\')[0];\n fullScreenActivatorElement.click();\n }\n },\n // Fullscreen off\n \'Esc\' : function(cm) {\n var editorDiv = cm.getWrapperElement();\n if (editorDiv.hasClassName(\'CodeMirror-fullscreen\')) {\n var fullScreenDeactivatorElement = $$(\'.bottombuttons\')[0].down(\'.button\');\n fullScreenDeactivatorElement.click();\n }\n }\n },\n lineWrapping : \"$!{request.lineWrapping}\" == \'true\'\n }];\n if (XWiki.editor == \'object\' || XWiki.editor == \'inline\') {\n // Object editor highlighting support\n SH.initCodeMirror(\"textarea[id^=\'XWiki.StyleSheetExtension_\'][id$=\'_code\']\", \'css\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.JavaScriptExtension_\'][id$=\'_code\']\", \'javascript\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.XWikiSkins_\'][id$=\'.css\']\", \'css\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.XWikiSkins_\'][id$=\'.js\']\", \'javascript\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.XWikiSkins_\'][id$=\'.vm\']\", \'velocity\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.WikiMacroClass_\'][id$=\'_code\']\", XWiki.docsyntax, options);\n SH.initCodeMirror(\"textarea[id^=\'Panels.PanelClass_\'][id$=\'_content\']\", XWiki.docsyntax, options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.UIExtensionClass_\'][id$=\'_content\']\", XWiki.docsyntax, options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.SchedulerJobClass_\'][id$=\'_script\']\", \'groovy\', options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.ComponentMethodClass_\'][id$=\'_code\']\", XWiki.docsyntax, options);\n SH.initCodeMirror(\"textarea[id^=\'XWiki.ConfigurableClass_\'][id$=\'_codeToExecute\']\", XWiki.docsyntax, options);\n } else if (XWiki.editor == \'wiki\') {\n // Document content editor highlighting support using the document\'s syntax.\n SH.initCodeMirror(\"textarea[id=\'content\']\", XWiki.docsyntax, options);\n }\n }\n /**\n * Entry point.\n */\n if (XWiki.domIsLoaded && XWiki.contextaction == \'edit\') {\n initCodeMirrorInternals();\n } else {\n $(document).on(\'xwiki:dom:loaded\', function() {\n // Try not to pollute the other XWiki actions with CodeMirror specific code\n if (XWiki.contextaction == \'edit\')\n initCodeMirrorInternals();\n });\n }\n});\n\n(function() {\nif (XWiki.contextaction == \'edit\') {\n\n /* Synchronize the original textareas\' contents with the codemirrors\' contents just before saving the page. */\n document.observe(\'xwiki:actions:save\', function(event){\n var codeMirrors = $$(\'.CodeMirror\');\n for (var i=0; i < codeMirrors.length; ++i) {\n codeMirrors[i].CodeMirror.save();\n }\n });\n\n /*\n * Fullscreen handling\n */\n\n /* Before going into fullscreen editing, record the element\'s original dimensions. */\n document.observe(\'xwiki:fullscreen:enter\', function(event) {\n var codeMirror = getCodeMirrorFromFullScreenEvent(event);\n if (!codeMirror) {\n // Something else is entering fullscreen.\n return;\n }\n var editorDiv = codeMirror.getWrapperElement();\n // Height as an integer (pixels), Width as percent string\n toggleFullscreenEditing.dimensionsBeforeFullscreen = {\n // px\n height: editorDiv.clientHeight,\n // x%\n width: editorDiv.style.width\n };\n toggleFullscreenEditing.scrollBeforeFullscreen = document.viewport.getScrollOffsets();\n });\n\n /* Full screen editing when pressing the maximize button/link. */\n document.observe(\'xwiki:fullscreen:entered\', function(event) {\n var codeMirror = getCodeMirrorFromFullScreenEvent(event);\n if (!codeMirror) {\n // Something else entered fullscreen.\n return;\n }\n toggleFullscreenEditing(codeMirror, true);\n });\n\n /* Fullscreen left by pressing the bottom button. */\n document.observe(\'xwiki:fullscreen:exited\', function(event) {\n var codeMirror = getCodeMirrorFromFullScreenEvent(event);\n if (!codeMirror) {\n // Something else exited fullscreen.\n return;\n }\n toggleFullscreenEditing(codeMirror, false);\n });\n\n var getCodeMirrorFromFullScreenEvent = function(event) {\n var codeMirrorTextArea;\n if(event.memo) {\n var originalTextArea = event.memo.target;\n codeMirrorTextArea = originalTextArea.up().down(\'.CodeMirror textarea\');\n }\n else if(event.explicitOriginalTarget) {\n codeMirrorTextArea = event.explicitOriginalTarget;\n }\n var codeMirrors = $$(\'.CodeMirror\');\n var codeMirror = getCodeMirrorFromInternalTextArea(codeMirrorTextArea, codeMirrors);\n return codeMirror;\n }\n\n var getCodeMirrorFromInternalTextArea = function(textArea, codeMirrors) {\n for(var j=0; j<codeMirrors.length; ++j) {\n var codeMirror = codeMirrors[j].CodeMirror;\n var codeMirrorTextArea = codeMirror.getInputField();\n if (textArea == codeMirrorTextArea) {\n return codeMirror;\n }\n }\n }\n\n /* Display the given codeMirror instance in full screen. */\n var toggleFullscreenEditing = function (codeMirror, enabled) {\n var editorDiv = codeMirror.getWrapperElement();\n if (enabled) {\n editorDiv.addClassName(\'CodeMirror-fullscreen\');\n\n // Set proper dimensions\n editorDiv.style.height = getNewCodeMirrorHeightInFullscreen() + \'px\';\n editorDiv.style.width =\'100%\';\n } else {\n editorDiv.removeClassName(\'CodeMirror-fullscreen\');\n\n // Restore the editor\'s dimensions\n editorDiv.style.height = toggleFullscreenEditing.dimensionsBeforeFullscreen.height + \'px\';\n // Set the editor\'s width (percent string)\n editorDiv.style.width = toggleFullscreenEditing.dimensionsBeforeFullscreen.width;\n\n // Restore the window\'s scrolling position\n window.scrollTo(toggleFullscreenEditing.scrollBeforeFullscreen.left, toggleFullscreenEditing.scrollBeforeFullscreen.top);\n }\n codeMirror.refresh();\n codeMirror.focus();\n }\n\n var getNewCodeMirrorHeightInFullscreen = function() {\n // Should always exist.\n var bottomButtonsHeight = $$(\'.bottombuttons\')[0].getHeight();\n\n // May not always exist (like in the object editor)\n var toolbarElement = $$(\'.leftmenu2\')[0];\n var toolbarHeight = 0;\n if (toolbarElement) {\n toolbarHeight = toolbarElement.getHeight();\n }\n\n var result = getWindowHeight() - bottomButtonsHeight - toolbarHeight;\n\n return result;\n }\n\n var getWindowHeight = function() {\n return window.innerHeight || (document.documentElement || document.body).clientHeight;\n }\n\n /* Fullscreen: Resize the editor while in fullscreen and the window gets resized */\n Event.observe(window, \'resize\', function(event) {\n var editorDiv = $$(\'.CodeMirror-fullscreen\')[0];\n\n // If not in fullscreen mode, ignore the resize event.\n if (!editorDiv) {\n return;\n }\n\n // Recompute and set the height; the width is already set to 100% so we don`t worry about that.\n editorDiv.style.height = getNewCodeMirrorHeightInFullscreen() + \'px\';\n editorDiv.CodeMirror.refresh();\n });\n}\n})();'),(8518805819756488702,'content','{{documentTree showTranslations=\"false\" showAttachments=\"false\"/}}'),(8571391572246925880,'groups','XWiki.XWikiAdminGroup'),(8571391572246925880,'users',''),(8619938190454890474,'async_context',''),(8619938190454890474,'code','{{velocity output=\"false\"}}\n$xwiki.jsfx.use(\'js/xwiki/widgets/modalPopup.js\', true)##\n$xwiki.ssfx.use(\'js/xwiki/widgets/modalPopup.css\', true)##\n$xwiki.jsx.use($xcontext.macro.doc.fullName)##\n$xwiki.ssx.use($xcontext.macro.doc.fullName)##\n$xwiki.jsfx.use(\'js/scriptaculous/builder.js\')##\n## Integrates the optional Lightbox widget (from http://extensions.xwiki.org/xwiki/bin/view/Extension/Lightbox+Application )\n#if ($xwiki.exists(\'XWiki.Lightbox\'))\n $xwiki.jsx.use(\'XWiki.Lightbox\')\n $xwiki.ssx.use(\'XWiki.Lightbox\')\n#end\n\n##\n## Prepare parameters\n##\n## Keep track for when we have a target document\n#set ($hasTargetDoc = false)\n#set ($targetdoc = \"$!{xcontext.macro.params.targetdocname}\")\n###\n## Set the targetdoc we want to save to (default to current doc if not set)\n#if (\"$!{targetdoc}\" != \'\')\n ## Check access on targetdocname\n #set ($targetPermView = $xwiki.hasAccessLevel(\'view\',$xcontext.user,${targetdoc}))\n #set ($targetPermEdit = $xwiki.hasAccessLevel(\'edit\',$xcontext.user,${targetdoc}))\n #set ($targetdoc = $xwiki.getDocument($targetdoc) )\n #set ($hasTargetDoc = true)\n#else\n ## The user should have edit and view permissions for the current doc\n #set ($targetPermView = true)\n #set ($targetPermEdit = true)\n #set($targetdoc = $doc)\n#end\n#set ($classname = \"$!{xcontext.macro.params.classname}\")\n#set ($property = \"$!{xcontext.macro.params.property}\")\n#set ($object = $mathtool.toInteger(\"$!{xcontext.macro.params.object}\"))\n#if (\"$!{object}\" != $!{xcontext.macro.params.object})\n #set ($object = ${doc.getObject($classname).number})\n #if (\"$!{object}\" == \'\')\n #set ($object = 0)\n #end\n#end\n\n#if (\"$!{xcontext.macro.params.displayImage}\" == \'true\' && $targetPermView)\n #set ($displayImage = true)\n#else\n #set ($displayImage = false)\n#end\n#if ($displayImage)\n #set ($alt = \"$!{xcontext.macro.params.alternateText}\")\n #set ($width = \"$!{xcontext.macro.params.width}\")\n #set ($height = \"$!{xcontext.macro.params.height}\")\n #set ($imageParams = \'\')\n #if (\"${width}\" != \'\')\n #set($imageParams = \"$!{imageParams} width=${width}\")\n #end\n #if (\"${height}\" != \'\')\n #set ($imageParams = \"$!{imageParams} height=${height}\")\n #end\n #set ($imageParams = \"$!{imageParams} alt=\'${alt}\'\")\n #if (\"$!{imageParams}\" != \'\')\n #set ($imageParams = \"||${imageParams.trim()}\")\n #end\n#end\n#if (\"$!{xcontext.macro.params.link}\" == \'true\')\n #set ($link = true)\n#else\n #set ($link = false)\n#end\n\n#set ($cssClass = \"displayed x-attachment $!{xcontext.macro.params.cssClass}\")\n#set ($defaultValue = \"$!{xcontext.macro.params.defaultValue}\")\n#if ($defaultValue != \'\')\n #set ($defaultReference = $services.model.resolveAttachment($defaultValue))\n#else\n #set ($defaultReference = false)\n#end\n#set ($filter = ${xcontext.macro.params.filter})\n\n#set ($buttontext = \"$!{xcontext.macro.params.buttontext}\")\n#if ($buttontext == \'\')\n #set ($buttontext = $services.localization.render(\'xe.attachmentSelector.selectFile\'))\n#end\n\n#set ($savemode = \"$!{xcontext.macro.params.savemode}\")\n#if ($savemode != \'direct\')\n #set ($savemode = \'form\')\n#end\n\n#set ($propValue = \"$!{doc.getObject($classname, $object).getProperty($property).value}\")\n##\n\n#macro (attachmentPicker_displayAttachment $name $displayImage $withLink $forceElement)\n #set ($attachment = $targetdoc.getAttachment(\"$!{name}\"))\n #if (\"$!{name}\" != \'\' && \"$!{attachment}\" != \'\')\n #set ($attachmentRef = $services.model.createAttachmentReference(${targetdoc.documentReference}, ${name}))\n #set ($attachmentName = $name)\n #else\n #set ($attachmentRef = $defaultReference)\n #if ($attachmentRef)\n #set ($docReference = $attachmentRef.documentReference)\n #else\n #set ($docReference = $targetdoc.documentReference)\n #end\n #set ($attachmentName = $attachmentRef.name)\n #set ($attachment = $xwiki.getDocument($docReference).getAttachment($attachmentName))\n #if (!$attachment)\n #set ($withLink = false)\n #end\n #end\n #if ($attachmentRef)\n #set ($attachmentResource = $services.model.serialize($attachmentRef, \'local\'))\n #else\n #set ($attachmentResource = \'\')\n #end\n #if ($displayImage)\n (% class=\"$!{cssClass}#if (!$attachment) hidden#end\" %)(((#if (\"$!{attachmentResource}\" != \'\' || $forceElement)#if($withLink)[[#end[[image:${attachmentResource}$!{imageParams}]]#if($withLink)>>attach:${attachmentResource}||rel=lightbox]]#{end}#end)))##\n #else\n (% class=\"$!{cssClass}\" %)#if (\"$!{attachmentResource}\" != \'\' || $forceElement)#if ($withLink)[[attach:${attachmentResource}||rel=__blank]]#{else}(% class=\"displayed\" %)#if($targetPermView)$!{attachmentName}#{else}Access Denied#{end}(% %)#{end}#end(%%)##\n #end\n#end\n\n## Display the \"Choose an attachment\" button if they can:\n## 1. Edit the current page\n## 2. View the target attachment page. (can be the same page)\n#macro (attachmentPicker_displayButton)\n #if ($hasEdit && $targetPermView)\n #set ($queryString = {\n \'docname\': $doc.fullName,\n \'classname\': $classname,\n \'property\': $property,\n \'object\': $object,\n \'savemode\': $savemode,\n \'defaultValue\': $defaultValue,\n \'filter\': $filter,\n \'displayImage\': $displayImage,\n \'versionSummary\': $xcontext.macro.params.versionSummary.equals(\'true\')\n })\n #if ($hasTargetDoc)\n #set ($queryString.targetdocname = $targetdoc.fullName)\n #end\n (% class=\"buttonwrapper\" %)[[$buttontext>>$xcontext.macro.doc.fullName||queryString=\"$escapetool.url($queryString)\"\n class=\"attachment-picker-start button\" title=\"$buttontext\"]](%%)##\n #end\n#end\n{{/velocity}}\n\n{{velocity}}\n#if (\"${savemode}\" == \'direct\')\n (% class=\"attachment-picker\" %)(((#attachmentPicker_displayAttachment($propValue $displayImage $link true) #attachmentPicker_displayButton())))\n#elseif ($xcontext.action == \'inline\' || $xcontext.action == \'edit\')\n (% class=\"attachment-picker\" %)(((##\n #attachmentPicker_displayAttachment($propValue $displayImage false true) #attachmentPicker_displayButton()##\n {{html}}<input type=\"hidden\" name=\"${classname}_${object}_${property}\" value=\"${propValue}\"/>{{/html}}##\n )))\n#else\n #attachmentPicker_displayAttachment($propValue $displayImage $link false)\n#end\n{{/velocity}}'),(8619938190454890474,'contentDescription',''),(8619938190454890474,'contentJavaType',''),(8619938190454890474,'description','A control to be used for object properties of the current document that are supposed to contain the name of an attachment from the current (or target) document. Allows uploading new attachments, and deleting attachments from the target document. If no target document is specified, the current document will be used. Object properties are only saved to the current document.'),(8637810832810116247,'code','require.config({\n paths: {\n \'xwiki-livetable-modal\': new XWiki.Document(\'AdminGroupsSheet\', \'XWiki\').getURL(\'jsx\', \'r=1\')\n }\n});\n\n//\n// Scope Filtering\n//\nrequire([\'jquery\'], function($) {\n var options = $(\'#userstable\').prev(\'.tipfilters\').remove().find(\'select[name=\"wiki\"]\').html();\n var scopeFilter = $(\'#userstable .xwiki-livetable-display-filters select[name=\"scope\"]\')\n scopeFilter.attr(\'name\', \'wiki\').html(options);\n});\n\nrequire([\'jquery\', \'xwiki-meta\', \'xwiki-livetable-modal\', \'xwiki-events-bridge\'], function($, xm) {\n //\n // User Creation\n //\n var createUserModal = $(\'#createUserModal\');\n\n var validateCreateUserForm = function(form) {\n return form.size() > 0 && (!window.LiveValidation ||\n LiveValidation.massValidate(LiveValidationForm.getInstance(form[0]).fields));\n };\n\n createUserModal.on(\'show.bs.modal\', function() {\n var createUserButton = createUserModal.find(\'.btn-primary\').prop(\'disabled\', true);\n var createUserURL = XWiki.currentDocument.getURL(\'view\', \'xpage=registerinline\');\n var createUserModalBody = createUserModal.find(\'.modal-body\').empty().addClass(\'loading\');\n $.get(createUserURL, function(html) {\n var createUserForm = $(\'<div/>\').html(html).find(\'form#register\').removeClass(\'half\');\n // Use the modal button instead of the form submit button.\n createUserForm.find(\'p.buttons\').remove();\n createUserModalBody.removeClass(\'loading\').append(createUserForm);\n $(document).trigger(\'xwiki:dom:updated\', {\'elements\': createUserModalBody.toArray()});\n createUserForm.find(\':input\').filter(\':visible\').first().focus();\n createUserButton.prop(\'disabled\', createUserForm.size() === 0);\n });\n }).on(\'click\', \'.btn-primary\', function(event) {\n var createUserForm = createUserModal.find(\'form#register\');\n if (!validateCreateUserForm(createUserForm)) {\n return;\n }\n var createUserButton = $(this).prop(\'disabled\', true);\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.create.inProgress\')),\n \'inprogress\'\n );\n $.post(createUserForm.attr(\'action\'), createUserForm.serialize()).done(function(html) {\n var errorMessage = $(\'<div/>\').html(html).find(\'.errormessage, .LV_validation_message.LV_invalid\');\n if (errorMessage.size() > 0) {\n createUserButton.prop(\'disabled\', false);\n notification.replace(new XWiki.widgets.Notification(errorMessage.text(), \'error\'));\n } else {\n createUserModal.modal(\'hide\');\n window.livetable_userstable.refresh();\n $(\'#userstable\').trigger(\'xwiki:user:created\');\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.create.done\')),\n \'done\'\n ));\n }\n }).fail(function (response) {\n createUserButton.prop(\'disabled\', false);\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.create.failed\')),\n \'error\'\n ));\n });\n });\n\n //\n // User Editing\n //\n var editUserModal = $(\'#editUserModal\');\n\n var loadEditForm = function(forceLock) {\n var saveButton = editUserModal.find(\'.btn-primary\').prop(\'disabled\', true);\n var rowData = editUserModal.data(\'rowData\');\n var userReference = XWiki.Model.resolve(rowData.doc_fullName, XWiki.EntityType.DOCUMENT, [rowData.doc_wiki]);\n var userDocument = new XWiki.Document(userReference);\n var editUserURL = userDocument.getURL(\'edit\');\n var parameters = {xpage: \'edituser\'};\n if (forceLock === true) {\n parameters.force = 1;\n }\n editUserModal.find(\'.modal-body\').first().empty().addClass(\'loading\').load(editUserURL, parameters, function() {\n this.removeClass(\'loading\');\n this.find(\'.column.half\').removeClass(\'half\').addClass(\'full\');\n $(document).trigger(\'xwiki:dom:updated\', {\'elements\': this.toArray()});\n var editUserForm = editUserModal.find(\'form#edituser\');\n editUserForm.find(\':input\').filter(\':visible\').first().focus();\n saveButton.prop(\'disabled\', editUserForm.size() === 0);\n });\n };\n\n editUserModal.on(\'show.bs.modal\', function(event) {\n // The modal body may contain nested modals..\n event.target === this && loadEditForm();\n }).on(\'click\', \'a.forceLock\', function(event) {\n event.preventDefault();\n loadEditForm(true);\n }).on(\'click\', \'.btn-primary\', function(event) {\n var editForm = editUserModal.find(\'form\');\n var saveButton = $(this).prop(\'disabled\', true);\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'core.editors.saveandcontinue.notification.inprogress\')),\n \'inprogress\'\n );\n $(document).trigger(\'xwiki:actions:beforeSave\');\n $.post(editForm.attr(\'action\'), editForm.serialize()).done(function() {\n $(document).trigger(\'xwiki:document:saved\');\n editUserModal.modal(\'hide\').data(\'liveTable\').refresh();\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'core.editors.saveandcontinue.notification.done\')),\n \'done\'\n ));\n }).fail(function (response) {\n saveButton.prop(\'disabled\', false);\n var message = $jsontool.serialize($services.localization.render(\'core.editors.saveandcontinue.notification.error\',\n [\'__reason__\']));\n notification.replace(new XWiki.widgets.Notification(message.replace(\'__reason__\', response.statusText), \'error\'));\n });\n }).on(\'hide.bs.modal\', function() {\n if (!editUserModal.find(\'.btn-primary\').prop(\'disabled\')) {\n // Prevent the leave page confirmation from CKEditor if the edit form is canceled.\n $(document).trigger(\'xwiki:actions:cancel\');\n }\n });\n\n //\n // Disable / Enable User Accounts\n //\n (function() {\n var notificationMessage = {\n enable: {\n inProgress: $jsontool.serialize($services.localization.render(\'administration.section.users.enableUser.inProgress\')),\n done: $jsontool.serialize($services.localization.render(\'administration.section.users.enableUser.done\')),\n failed: $jsontool.serialize($services.localization.render(\'administration.section.users.enableUser.failed\'))\n },\n disable: {\n inProgress: $jsontool.serialize($services.localization.render(\'administration.section.users.disableUser.inProgress\')),\n done: $jsontool.serialize($services.localization.render(\'administration.section.users.disableUser.done\')),\n failed: $jsontool.serialize($services.localization.render(\'administration.section.users.disableUser.failed\'))\n }\n }\n var onToggleUser = function(action, event) {\n event.preventDefault();\n var actionTrigger = $(this);\n if (actionTrigger.hasClass(\'pending\')) {\n // Another request is already in progress.\n return;\n }\n actionTrigger.addClass(\'pending\');\n var notification = new XWiki.widgets.Notification(notificationMessage[action].inProgress, \'inprogress\');\n // The enable and disable actions redirect to the user profile by default which may take a lot of time to render so\n // we redirect to a URL that doesn\'t render anything.\n var emptyResponseURL = new XWiki.Document(\'AdminUsersSheet\', \'XWiki\').getURL(\'get\', \'outputSyntax=plain\');\n $.post(actionTrigger.attr(\'href\'), {\'xredirect\': emptyResponseURL}).done(function() {\n window[\'livetable_userstable\'].refresh();\n notification.replace(new XWiki.widgets.Notification(notificationMessage[action].done, \'done\'));\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(notificationMessage[action].failed, \'error\'));\n }).always(function() {\n actionTrigger.removeClass(\'pending\');\n });\n };\n $(\'#userstable\').on(\'click\', \'a.actionenable\', $.proxy(onToggleUser, null, \'enable\'));\n $(\'#userstable\').on(\'click\', \'a.actiondisable\', $.proxy(onToggleUser, null, \'disable\'));\n })();\n\n //\n // User Deletion\n //\n var deleteUserModal = $(\'#deleteUserModal\');\n var deleteUserModalBody = deleteUserModal.find(\'.modal-body\');\n var deleteUserButton = deleteUserModal.find(\'.btn-danger\');\n\n var deleteUserModalContentRequest;\n var deleteUserModalContentURL = new XWiki.Document(\'AdminUsersSheet\', \'XWiki\').getURL(\'get\',\n \'data=deleteUserModalContent\');\n\n var loadDeleteUserModalContent = function(userReference) {\n // Abort any pending request (the user can close the modal before the response is received).\n if (deleteUserModalContentRequest) {\n deleteUserModalContentRequest.abort();\n }\n deleteUserButton.prop(\'disabled\', true);\n deleteUserModalBody.empty().addClass(\'loading\');\n deleteUserModalContentRequest = $.get(deleteUserModalContentURL, {\n \'userReference\': userReference\n }, function(html) {\n deleteUserModalBody.html(html);\n $(document).trigger(\'xwiki:dom:updated\', {\'elements\': deleteUserModalBody.toArray()});\n }, \'html\').always(function() {\n deleteUserModalBody.removeClass(\'loading\');\n deleteUserButton.prop(\'disabled\', false);\n });\n };\n\n deleteUserModal.on(\'show.bs.modal\', function() {\n var rowData = deleteUserModal.data(\'rowData\');\n var userReference = rowData.doc_fullName;\n if (XWiki.currentWiki !== rowData.doc_wiki) {\n userReference = XWiki.Model.resolve(userReference, XWiki.EntityType.DOCUMENT, [rowData.doc_wiki]);\n userReference = XWiki.Model.serialize(userReference);\n }\n deleteUserModal.data(\'userReference\', userReference);\n loadDeleteUserModalContent(userReference);\n });\n\n // Validate that the selected new author has the required access rights.\n var newAuthorValidationRequest;\n var validateNewAuthor = function(newAuthor, requiredRight) {\n // Abort the previous validation request.\n if (newAuthorValidationRequest) {\n newAuthorValidationRequest.abort();\n }\n if (newAuthor) {\n var url = new XWiki.Document(\'AdminUsersSheet\', \'XWiki\').getURL(\'get\');\n newAuthorValidationRequest = $.get(url, {\n data: \'validateNewAuthor\',\n newAuthor: newAuthor,\n requiredRight: requiredRight\n });\n return newAuthorValidationRequest;\n } else {\n return $.Deferred().resolve({valid: true}).promise();\n }\n };\n deleteUserModal.on(\'change\', \'#newAuthor\', function(event) {\n // Disable the modal submit button while we validate the new author.\n deleteUserButton.prop(\'disabled\', true);\n var newAuthorField = $(event.target);\n // Hide the previous error message.\n newAuthorField.nextAll(\'.xErrorMsg\').addClass(\'hidden\');\n validateNewAuthor(newAuthorField.val(), newAuthorField.data(\'requiredRight\')).done(function(result) {\n if (result.valid === false) {\n newAuthorField.nextAll(\'.xErrorMsg\').removeClass(\'hidden\');\n }\n }).always(function() {\n // Re-enable the modal submit button.\n deleteUserButton.prop(\'disabled\', false);\n });\n });\n\n deleteUserButton.click(function() {\n var notification = new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.delete.inProgress\')),\n \'inprogress\'\n );\n var userReference = deleteUserModal.data(\'userReference\');\n $.post(\'\', {\n xpage: \'deleteuorg\',\n docname: userReference,\n newAuthor: deleteUserModal.find(\'#newAuthor\').val(),\n form_token: xm.form_token\n }).done(function() {\n deleteUserModal.data(\'liveTable\').deleteRow(deleteUserModal.data(\'rowIndex\'));\n deleteUserModal.data(\'liveTableElement\').trigger(\'xwiki:user:deleted\', {reference: userReference});\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.delete.done\')),\n \'done\'\n ));\n }).fail(function() {\n notification.replace(new XWiki.widgets.Notification(\n $jsontool.serialize($services.localization.render(\'xe.admin.users.delete.failed\')),\n \'error\'\n ));\n });\n });\n});'),(8639981451080313602,'codeToExecute','{{include reference=\"Rendering.RenderingConfigSheet\"/}}'),(8640530933596875890,'code','#template(\'colorThemeInit.vm\')\n\n.templateProviderSheet > .xHint {\n margin-bottom: 2em;\n}\n\n.templateProviderSheet .paths {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.templateProviderSheet .paths .breadcrumb {\n margin-bottom: 3px;\n padding-right: 30px;\n}\n\n.templateProviderSheet .paths .path-add {\n border: 1px dashed $theme.borderColor;\n border-radius: 4px;\n cursor: pointer;\n padding: 7px 15px;\n}\n\n.templateProviderSheet .paths .path-delete {\n cursor: pointer;\n margin-top: 8px;\n position: absolute;\n right: 30px;\n}\n\n.templateProviderSheet .breadcrumb > .loading {\n min-height: 16px;\n min-width: 16px;\n vertical-align: middle;\n}\n\n.templateProviderSheet label input[type=\"checkbox\"] {\n margin-top: 0;\n vertical-align: middle;\n}'),(8657470991531922034,'code','var XWiki = (function (XWiki) {\n// Start XWiki augmentation.\n/**\n * Handles the form field display (through AJAX), configure (toggle) and delete.\n */\nXWiki.FormField = Class.create({\n initialize : function(container) {\n this.container = container;\n },\n enhance : function(data) {\n this.container.insert({top: this._createToolBox()});\n if (data) {\n this.container.addClassName(\'loading\');\n new Ajax.Request(data, {\n method: \'get\',\n onSuccess: this._display.bind(this)\n });\n } else {\n this._display(null);\n }\n },\n getContainer : function() {\n return this.container;\n },\n getViewer : function() {\n return this.container.down(\'.field-viewer\')\n },\n getConfig : function() {\n return this.container.down(\'.field-config\');\n },\n getToolBox : function() {\n return this.container.down(\'.toolBox\');\n },\n getName : function() {\n if (!this.container._typeInput) {\n // Field type should be stored in the first hidden input under the field container.\n this.container._typeInput = this.container.down(\'input[type=hidden]\');\n }\n return this.container._typeInput.name.substring(\'type-\'.length);\n },\n getPropertyId : function(propertyName) {\n return \'field-\' + this.getName() + \'_\' + propertyName;\n },\n _display : function(response) {\n // If the field container is still attached, update its content.\n if (this.container.parentNode) {\n if (response) {\n this.container.removeClassName(\'loading\');\n this._injectHTML(response.responseText);\n }\n\n this.getToolBox().insert({top: this._createConfigIcon()});\n this._onConfigure();\n\n document.fire(\'xwiki:class:displayField\', {field: this, \'new\': !!response});\n\n this._twoColumnConfigDisplay();\n }\n },\n _injectHTML : function(html) {\n // We don\'t use Element#update() because it doesn\'t move external scripts and sheets into HEAD and also because we\n // don\'t want to support in-line scripts in displayers.\n var container = new Element(\'div\');\n container.innerHTML = html;\n var head = document.body.previous(\'head\');\n container.select(\'link\').each(function(link) {\n head.insert(link);\n });\n container.select(\'script\').each(function(script) {\n if (script.src) {\n head.insert(new Element(\'script\', {type: script.type, src: script.readAttribute(\'src\')}));\n }\n script.remove();\n });\n this.container.insert(container);\n },\n _createToolBox : function() {\n var deleteIcon = new Element(\'img\', {\n src: \'$xwiki.getAttachmentURL(\'AppWithinMinutes.ClassEditSheet\', \'bulletcross.png\')\',\n alt: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorDeleteFieldLabel\'))\',\n title: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorDeleteFieldLabel\'))\'\n });\n deleteIcon.observe(\'click\', this._onDelete.bindAsEventListener(this));\n\n var toolBox = new Element(\'div\', {\'class\': \'toolBox\'});\n toolBox.insert(deleteIcon);\n return toolBox;\n },\n _createConfigIcon : function() {\n return new Element(\'img\').observe(\'click\', this._onConfigure.bindAsEventListener(this));\n },\n _onConfigure : function(event) {\n var icon = event ? event.element() : this.getToolBox().down(\'img\');\n var fieldConfig = this.getConfig();\n if (fieldConfig.visible()) {\n fieldConfig.hide();\n icon.alt = icon.title = \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorConfigureFieldLabel\'))\';\n icon.src = \'$xwiki.getSkinFile(\'icons/silk/bullet_wrench.png\')\';\n this._maybePreview();\n } else {\n fieldConfig.show();\n icon.alt = \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorPreviewFieldLabel\'))\';\n icon.title = \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorPreviewFieldHint\'))\';\n icon.src = \'$xwiki.getAttachmentURL(\'AppWithinMinutes.ClassEditSheet\', \'bullettick.png\')\';\n this._maybeSavePreviewData();\n }\n },\n _onDelete : function(event) {\n new XWiki.widgets.ConfirmationBox({\n onYes : this._onConfirmedDelete.bind(this)\n }, {\n confirmationText : \'$services.localization.render(\'core.editors.class.deleteProperty.confirm\')\'\n });\n },\n _onConfirmedDelete : function() {\n this.container.remove();\n document.fire(\'xwiki:class:deleteField\', {field: this});\n },\n _maybeSavePreviewData : function() {\n // Initialize the preview data.\n this.previewData || this._savePreviewData();\n // Make sure the preview data is updated when the field is renamed.\n if (!this._renameListener) {\n this._renameListener = function(event) {\n if (event.memo.field.getContainer() == this.container) {\n this._savePreviewData();\n }\n }.bindAsEventListener(this);\n document.observe(\'xwiki:class:renameField\', this._renameListener);\n }\n },\n _savePreviewData : function() {\n this.previewData = this._asHash();\n // Ignore properties that don\'t affect the preview.\n [\'name\', \'prettyName\', \'hint\', \'required\', \'number\'].each(function(propertyName) {\n this.previewData.unset(this.getPropertyId(propertyName));\n }.bind(this));\n // Add parameters required by the AJAX preview request.\n this.previewData.set(\'preview\', true);\n this.previewData.set(\'xpage\', \'plain\');\n },\n _maybePreview : function() {\n if(!this.previewData) {\n return;\n }\n // Check if there are configuration changes.\n var data = new Hash();\n var areEqual = function(alice, bob) {\n if (typeof alice == typeof bob) {\n if (alice.join) {\n return alice.join() == bob.join();\n }\n return alice == bob;\n }\n return false;\n }\n this._asHash().each(function(pair) {\n var oldValue = this.previewData.get(pair.key);\n if (oldValue != undefined && !areEqual(pair.value, oldValue)) {\n data.set(pair.key, pair.value);\n }\n }.bind(this));\n var modifiedKeys = data.keys();\n if (modifiedKeys.length > 1 || (modifiedKeys.length == 1 && !modifiedKeys[0].endsWith(\'_0_\' + this.getName()))) {\n this._preview(this.previewData.clone().update(data));\n }\n },\n _preview : function(data) {\n var preview = this.getViewer().down(\'dd\');\n if (preview) {\n preview.addClassName(\'loading\');\n // Firefox 3.6 doesn\'t resolve the empty string to the current page URL so we have to explicitly specify it.\n new Ajax.Request(window.location.href, {\n parameters: data.toQueryString(),\n onSuccess: function(response) {\n preview.removeClassName(\'loading\');\n preview.update(response.responseText);\n this.previewData = data;\n document.fire(\'xwiki:class:previewField\', {field: this});\n document.fire(\'xwiki:dom:updated\', {elements: [preview]});\n }.bind(this)\n });\n }\n },\n _asHash : function() {\n // Simulate a submit so that we collect the right values.\n document.fire(\'xwiki:class:save\', {originalEvent: {memo: {}}});\n var inputs = this.container.select(\'input\', \'textarea\', \'select\');\n return new Hash(Form.serializeElements(inputs, {hash: true}));\n },\n _twoColumnConfigDisplay : function() {\n var leftColumn = this.getConfig();\n var fieldConfig = new Element(\'div\', {\'class\': leftColumn.className});\n leftColumn.insert({before: fieldConfig});\n fieldConfig.insert(leftColumn);\n fieldConfig.hide();\n leftColumn.className = \'leftColumn\';\n leftColumn.show();\n var rightColumn = new Element(\'dl\', {\'class\': \'rightColumn\'});\n fieldConfig.insert(rightColumn);\n\n var visibleDTs = [];\n leftColumn.select(\'dt\').each(function(dt) {\n if(dt.visible()) {\n visibleDTs.push(dt);\n }\n });\n\n var half = Math.ceil(visibleDTs.length / 2);\n for(var i = half; i < visibleDTs.length; i++) {\n var dt = visibleDTs[i];\n var dd = dt.next();\n rightColumn.insert(dt);\n if (dd && dd.tagName.toLowerCase() == \'dd\') {\n rightColumn.insert(dd);\n }\n }\n\n fieldConfig.insert(new Element(\'div\', {\'style\': \'clear: left\'}));\n }\n});\n\n/**\n * Manages the form field names. Generates unique names for newly added fields and renames field configuration property ids/names when a field is renamed.\n */\nXWiki.FormFieldNameManager = Class.create({\n initialize : function() {\n // Generate a unique field name when a new field is dragged from the palette to the form canvas.\n document.observe(\'xwiki:class:displayField\', this._maybeGenerateFieldName.bind(this));\n // Rename the field configuration property ids/names when a field is renamed. This is needed for AJAX Save & Continue.\n document.observe(\'xwiki:document:saved\', this._maybeRenameFields.bind(this));\n },\n _maybeGenerateFieldName : function(event) {\n if (!event.memo[\'new\']) {\n return;\n }\n var field = event.memo.field;\n var nameInput = $(field.getPropertyId(\'name\'));\n var counter = 1;\n // We check the type meta property because there can be unsupported field types for which we know only their type.\n while($(\'type-\' + nameInput.value + counter++));\n nameInput.value = nameInput.value + (counter - 1);\n this._maybeRenameField(field);\n },\n _maybeRenameFields : function() {\n $(\'fields\').childElements().each(function(item) {\n this._maybeRenameField(new XWiki.FormField(item));\n }.bind(this));\n },\n _maybeRenameField : function(field) {\n var oldName = field.getName();\n var newName = $(field.getPropertyId(\'name\')).value;\n if (oldName != newName) {\n this._maybeRenameElement(oldName, newName, field.getContainer());\n field.getContainer().descendants().each(this._maybeRenameElement.bind(this, oldName, newName));\n document.fire(\'xwiki:class:renameField\', {field: field});\n }\n },\n _maybeRenameElement : function(oldName, newName, element) {\n [\'id\', \'name\', \'for\'].each(function(attribute) {\n var value = element.readAttribute(attribute) || \'\';\n if (value.startsWith(\'xwiki-form-\' + oldName)) {\n // This is for fields with multiple values (e.g. radio buttons).\n value = \'xwiki-form-\' + newName + value.substring(11 + oldName.length);\n } else if (value.endsWith(\'_0_\' + oldName)) {\n // This is for field default value.\n value = value.substring(0, value.length - oldName.length) + newName;\n } else {\n // This is for field meta properties.\n var nameIndex = value.indexOf(\'-\') + 1;\n if (nameIndex > 0 && (value.substring(nameIndex) == oldName || value.substring(nameIndex).startsWith(oldName + \'_\'))) {\n value = value.substring(0, nameIndex) + newName + value.substring(nameIndex + oldName.length);\n }\n }\n if (value != \'\') {\n element.writeAttribute(attribute, value);\n }\n });\n }\n});\n\n/**\n * Enhances the way the field pretty name is edited. Allows users to edit the pretty name in-place inside the field preview.\n */\nXWiki.FormFieldPrettyNameManager = Class.create({\n initialize : function() {\n document.observe(\'xwiki:class:displayField\', this._onDisplayField.bindAsEventListener(this));\n },\n _onDisplayField : function(event) {\n var field = event.memo.field;\n var prettyNameInput = $(field.getPropertyId(\'prettyName\'));\n // Hide the DD containing the pretty name input.\n var parentDD = prettyNameInput.up(\'dd\');\n parentDD.hide();\n // Hide the DT containing the pretty name input label.\n var previousDT = parentDD.previous(\'dt\');\n previousDT.hide();\n // Use the label text as tool tip for the pretty name input, if the title attribute is not specified.\n if (!prettyNameInput.title) {\n var label = previousDT.down(\'label\');\n prettyNameInput.title = label.textContent || label.innerText;\n }\n // Replace the preview label with the pretty name input.\n var previewLabel = field.getViewer().down(\'label\');\n previewLabel.writeAttribute(\'for\', \'\');\n previewLabel.removeChild(previewLabel.lastChild);\n previewLabel.insert(prettyNameInput);\n // Enhance the pretty name input.\n new XWiki.InputWithTitle(prettyNameInput);\n new XWiki.AutoResizeInput(prettyNameInput);\n }\n});\n\n/**\n * Adds a tool tip to the default value input.\n */\nXWiki.FormFieldDefaultValueManager = Class.create({\n initialize : function() {\n var enhanceFieldDefaultValue = this._enhanceFieldDefaultValue.bindAsEventListener(this);\n document.observe(\'xwiki:class:displayField\', enhanceFieldDefaultValue);\n document.observe(\'xwiki:class:previewField\', enhanceFieldDefaultValue);\n\n // We need to listen to save event to rename the default value inputs to match the new field name.\n document.observe(\'xwiki:class:save\', this._onSave.bind(this));\n },\n _enhanceFieldDefaultValue : function(event) {\n var field = event.memo.field;\n var fieldName = field.getName();\n field.getViewer().select(\'input[type=text]\', \'textarea\').each(function(input) {\n if (!input.title && input.name.endsWith(\'_0_\' + fieldName)) {\n input.title = \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorFieldDefaultValueToolTip\'))\';\n }\n });\n },\n _onSave : function() {\n $(\'fields\').childElements().each(function(item) {\n this._maybeRenameDefaultValue(new XWiki.FormField(item));\n }.bind(this));\n },\n _maybeRenameDefaultValue : function(field) {\n var oldName = field.getName();\n var newName = $(field.getPropertyId(\'name\')).value;\n if(oldName != newName) {\n field.getViewer().select(\'input\', \'textarea\', \'select\').each(function(element) {\n if (element.name.endsWith(\'_0_\' + oldName)) {\n element.name = element.name.substring(0, element.name.length - oldName.length) + newName;\n }\n });\n }\n }\n});\n\n/**\n * Makes the hint editable in place.\n */\nXWiki.FormFieldHintManager = Class.create({\n initialize : function() {\n document.observe(\'xwiki:class:displayField\', this._onDisplayField.bindAsEventListener(this));\n },\n _onDisplayField : function(event) {\n var field = event.memo.field;\n var hintInput = $(field.getPropertyId(\'hint\'));\n // TODO: Remove this test after the \'hint\' meta property is added to the platform.\n if (hintInput) {\n hintInput.addClassName(\'xHint\');\n if (!hintInput.title) {\n hintInput.title = \'Hint\';\n }\n // Move the hint input below the pretty name input, in the field viewer.\n var dd = hintInput.up(\'dd\');\n var dt = dd.previous(\'dt\');\n field.getViewer().down(\'label\').insert({after: hintInput});\n dt.remove();\n dd.remove();\n // Enhance the hint input.\n new XWiki.InputWithTitle(hintInput);\n new XWiki.AutoResizeInput(hintInput);\n }\n }\n});\n\n/**\n * Replaces the input of the \"required\" field property with a toggle button.\n */\nXWiki.FormFieldRequiredManager = Class.create({\n initialize : function() {\n document.observe(\'xwiki:class:displayField\', this._onDisplayField.bindAsEventListener(this));\n },\n _onDisplayField : function(event) {\n var field = event.memo.field;\n var requiredInput = $(field.getPropertyId(\'required\'));\n // TODO: Remove this test after the \'required\' meta property is added to the platform.\n if (requiredInput) {\n var prettyNameLabel = field.getViewer().down(\'label\');\n var wrapper = new Element(\'div\', {\'class\': \'labelLine\'});\n prettyNameLabel.insert({before: wrapper});\n wrapper.insert(prettyNameLabel);\n wrapper.insert(\'<label><select class=\"xRequired\" title=\"Click to toggle between (Optional) and (Required)\"><option>(Optional)</option><option>(Required)</option></select></label>\');\n new XWiki.ToggleSelect(prettyNameLabel.next().down(\'select\'));\n }\n }\n});\n\n/**\n * Manages the sortable list of form fields. Accepts fields dragged from the field palette.\n */\nXWiki.FormCanvas = Class.create({\n initialize : function(container) {\n this.container = $(container);\n Droppables.add(this.container, {accept: \'field\', hoverclass: \'hovered\', onDrop: this._onDrop.bind(this)});\n\n document.observe(\'xwiki:class:deleteField\', this._onDeleteField.bind(this));\n document.observe(\'xwiki:class:displayField\', this._onDisplayField.bindAsEventListener(this));\n\n this.fields = this.container.down(\'ul\');\n if (!this.fields) {\n this.fields = new Element(\'ul\');\n this.container.insert(this.fields);\n }\n this.fields.id = \'fields\';\n if (this.fields.empty()) {\n this.container.addClassName(\'empty\');\n } else {\n this._enhanceFields();\n }\n },\n _enhanceFields : function() {\n this.fields.childElements().each(function(item) {\n new XWiki.FormField(item).enhance();\n });\n },\n _onDrop : function(field) {\n var fieldContainer = new Element(\'li\', {\'data-new\': \'true\'});\n this.fields.insert(fieldContainer);\n this.container.removeClassName(\'empty\');\n new XWiki.FormField(fieldContainer).enhance(field.down(\'.data\').value);\n },\n _onDeleteField : function() {\n if (this.fields.empty()) {\n this.container.addClassName(\'empty\');\n } else {\n this._updateOrder();\n }\n },\n _onDisplayField : function(event) {\n var field = event.memo.field;\n\n // We have to set the ID of the field container as otherwise Sortable.onUpdate() isn\'t triggered.\n field.getContainer().id = \'field-\' + field.getName();\n\n // Hide the property number, as ordering can be done by drag and drop\n var numberInput = $(field.getPropertyId(\'number\'));\n numberInput.up().hide();\n numberInput.up().previous().hide();\n\n // Create and insert the move icon.\n var moveIcon = new Element(\'img\', {\n src: \'$xwiki.getAttachmentURL(\'AppWithinMinutes.ClassEditSheet\', \'arrow-move.png\')\',\n alt: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorMoveFieldLabel\'))\',\n title: \'$escapetool.javascript($services.localization.render(\'platform.appwithinminutes.classEditorMoveFieldHint\'))\',\n \'class\': \'icon-move\'\n });\n field.getToolBox().insert({bottom: moveIcon});\n\n Sortable.create(\'fields\', {\n handle: \'icon-move\',\n format: /^[^_\\-](?:[A-Za-z0-9\\-\\_]*)[\\-](.*)$/,\n onUpdate : this._updateOrder.bind(this)\n });\n\n if (event.memo[\'new\']) {\n this._updateOrder();\n }\n },\n _updateOrder : function() {\n var items = this.fields.childElements();\n for(var i = 0; i < items.length; i++) {\n var field = new XWiki.FormField(items[i]);\n if (field.getConfig()) {\n $(field.getPropertyId(\'number\')).value = i + 1;\n } else {\n // Stop updating the order. This method will be called again when the field will be loaded.\n break;\n }\n }\n }\n});\n\n/**\n * Manages the palette of form fields.\n */\nXWiki.FormFieldPalette = Class.create({\n initialize : function(container) {\n $(container).select(\'.field\').each(function(field) {\n new Draggable(field, {\n revert: true,\n reverteffect: function(field) {\n // Reset the in-line style.\n field.setStyle({\n height: \'\',\n left: \'\',\n position: \'\',\n top: \'\',\n zIndex: \'\',\n width: \'\'\n });\n },\n ghosting: true\n });\n });\n }\n});\n// End XWiki augmentation.\nreturn XWiki;\n}(XWiki || {}));\n\n(function() {\n function init() {\n var form = $(\'inline\');\n if (!form) {\n return false;\n }\n // Let the sheet handle the form submit. The form is submitted by default to the preview action which dispatches the\n // request to the save action if the save button is detected on the request parameters. By submitting to the edit\n // action the edit sheet is evaluated and thus it can handle the save by itself.\n form.action = XWiki.currentDocument.getURL(\'edit\');\n\n // Apply the vertical form layout standard.\n form.addClassName(\'xform\');\n\n // Remove the preview button.\n form.down(\"input[name=\'action_preview\']\").remove();\n\n // Rename the save buttons.\n form.down(\"input[name=\'action_save\']\").name = \'xaction_save\';\n form.down(\"input[name=\'action_saveandcontinue\']\").name = \'xaction_saveandcontinue\';\n\n // Make sure the \'Save & Continue\' button is submitted when clicked.\n document.observe(\'xwiki:class:save\', function(event) {\n event = event.memo.originalEvent;\n if (event.memo[\'continue\']) {\n var submitButton = event.memo.originalEvent.element();\n submitButton.insert({after: new Element(\'input\', {type: \'hidden\', \'name\': submitButton.name})});\n (function () {\n submitButton.next().remove();\n }).defer();\n }\n }.bindAsEventListener(window));\n\n // Be prepared to enhance some of the field properties.\n new XWiki.FormFieldNameManager();\n new XWiki.FormFieldPrettyNameManager();\n new XWiki.FormFieldHintManager();\n new XWiki.FormFieldDefaultValueManager();\n new XWiki.FormFieldRequiredManager();\n\n // Make the palette and the canvas live.\n new XWiki.FormFieldPalette(\'palette\');\n new XWiki.FormCanvas(\'canvas\');\n\n return true;\n }\n (XWiki.domIsLoaded && init()) || document.observe(\'xwiki:dom:loaded\', init);\n}).call();\n\nrequire([\'jquery\', \'xwiki-events-bridge\'], function($) {\n $(document).on(\'xwiki:class:displayField xwiki:class:previewField\', function(event, data) {\n var container = $(data.field.getContainer());\n if (container.attr(\'data-new\') === \'true\') {\n // We can\'t suggest property values for properties that don\'t exist yet (have not been saved) so we provide\n // suggestions for the template property that was used to create them. Note that the suggested values depend on\n // the saved property meta data so changing the property (field) meta data may not affect the suggestions until\n // those changes are saved.\n var templateHiddenInput = container.find(\'#\' + \'template-\' + data.field.getName());\n var propertyValueSuggester = container.find(\'.field-viewer .suggest-propertyValues\').first();\n propertyValueSuggester.attr({\n \'data-className\': templateHiddenInput.val(),\n \'data-propertyName\': templateHiddenInput.attr(\'data-propertyName\')\n });\n }\n }).on(\'xwiki:document:saved\', function(event) {\n // We need to update the property value suggesters because:\n // * newly saved properties should have their own suggestions instead of relying on the template property\n // * for renamed properties we need to fetch the suggestions from a different location\n $(\'ul#fields > li\').each(function() {\n var container = $(this);\n container.removeAttr(\'data-new\');\n var propertyValueSuggester = container.find(\'.field-viewer .suggest-propertyValues\').first();\n if (propertyValueSuggester.length > 0) {\n // We need to preserve the selected values because they are lost when the suggester is destroyed.\n var selectedValues = propertyValueSuggester.children();\n propertyValueSuggester[0].selectize.destroy();\n // Restore the selected values.\n propertyValueSuggester.empty().append(selectedValues);\n var className = XWiki.Model.serialize(XWiki.currentDocument.documentReference.relativeTo(\n new XWiki.WikiReference(XWiki.currentWiki)));\n propertyValueSuggester.attr({\n \'data-className\': className,\n \'data-propertyName\': propertyValueSuggester.attr(\'name\').substr((className + \'_0_\').length)\n });\n propertyValueSuggester.suggestPropertyValues();\n }\n });\n });\n});'),(8674848262595070681,'groups',''),(8674848262595070681,'users','xwiki:XWiki.Admin'),(8718759523200097901,'code','require([\'jquery\', \'xwiki-events-bridge\'], function($) {\n var registerListeners = function(container) {\n // If no container is specified, using the entire document as default.\n if (!container) {\n container = document;\n }\n\n // Click listener for the audio CAPTCHA play/listen button.\n $(container).find(\'.captcha-play\').click(function() {\n $(this).siblings(\'audio.captcha-challenge\')[0].play();\n });\n\n // Click listener for the CAPTCHA refresh/reload button.\n $(container).find(\'.captcha-refresh\').click(function() {\n // We simply reset the \'src\' attribute\'s value to make the CAPTCHA display a new challenge.\n var currentSrc = $(this).siblings(\'.captcha-challenge\').prop(\'src\');\n // Make sure to append a cache-buster to the src, since some elements might not reload if the src is the same (e.g. image does not reload, but iframe reloads).\n $(this).siblings(\'.captcha-challenge\').prop(\'src\', currentSrc.replace(/&cache-buster=[0-9]+/gm, \'\') + \'&cache-buster=\' + new Date().getTime());\n });\n }\n\n // On load, register listeners for CAPTCHAs we can find.\n registerListeners(document);\n // Whenever a CAPTCHA is reloaded via AJAX, we need to re-register the listeners.\n $(document).on(\'xwiki:captcha:reloaded\', function(event, data) {\n registerListeners(event.target);\n });\n\n // Does nothing but break Firefox\'s bfcache (back-forward cache) to make sure the CAPTCHA is reloaded when pressing back and not showing a stale CAPTCHA.\n $(window).unload(function(){});\n});'),(8742304682129072707,'code','ol.tagCloud {\n text-align: justify;\n /* Overriding of toucan value */\n margin: 0;\n padding: 0;\n}\n\ndiv#dashboardleft ol.tagCloud {\n /* We re-set this value here on purpose so that uses of the cloud outside of the dashboard are not affected */\n margin: 0.5em;\n}\n\nol.tagCloud li {\n display:inline; padding: 0 3px;\n}\n\nol.tagCloud .notPopular {\n font-size:1.0em;\n}\n\nol.tagCloud .notVeryPopular {\n font-size:1.1em;\n}\n\nol.tagCloud .somewhatPopular {\n font-size:1.2em;\n}\n\nol.tagCloud .popular {\n font-size:1.3em;\n}\n\nol.tagCloud .veryPopular {\n font-size:1.4em;\n}\n\nol.tagCloud .ultraPopular {\n font-size:1.5em;\n}'),(8802735473570267791,'code','/* Hide the page content until the JavaScript code is loaded and executed. Also hide unnecessary headings.\n This is not needed anymore starting with XWiki 9.2RC1. */\n#admin-page-content > form,\n#admin-page-content > .codeToExecute,\n#admin-page-content > h1.wikigeneratedheader {\n display: none;\n}\n#admin-page-content.visible > form,\n#admin-page-content.visible > .codeToExecute {\n display: block;\n}\n\n.tab-content .ckeditor-config {\n margin-top: 1em;\n}\n\n/* Fix the styles that come from the GWT editor section (XWiki <9.2RC1). */\nform.xform .ckeditor-config dd input[type=\"text\"] {\n width: 100% !important;\n}'),(8869408063345511226,'description','The root node id. This is useful if you want to display only the descendants of a given node (which is the specified root). The tree displays the children of the root node on the first level, so the root node is not actually displayed. The entire tree is displayed if the root node is not specified.'),(8937813768450315248,'groups',''),(8937813768450315248,'users',''),(8979854512136325195,'code','#template(\'colorThemeInit.vm\')\n\nh1.xapp {\n border-bottom: 0 none;\n margin: 0;\n}\n\nh1.xapp + form {\n margin: 1.5em 0 1em;\n}\n\nh1.xapp * {\n vertical-align: middle;\n}\n\nh1.xapp .highlight {\n background: url(\"$xwiki.getSkinFile(\'icons/silk/tag_blue.png\')\") no-repeat 5px 50% $theme.backgroundSecondaryColor;\n border: solid 1px $theme.borderColor;\n border-radius: 10px;\n display: inline-block;\n font-weight: bold;\n padding: 2px 8px 2px 25px;\n white-space: nowrap;\n}\n\nh1.xapp .button {\n background: no-repeat 3px 50% $theme.pageContentBackgroundColor;\n border: solid 1px $theme.borderColor;\n border-radius: 7px;\n color: $theme.linkColor;\n display : inline-block;\n font-size: 50%;\n font-weight: normal;\n line-height: 1.5em;\n padding: 2px 5px 2px 20px;\n}\n\nh1.xapp .delete {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/cross.png\')\");\n}\n\nh1.xapp .rename {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/textfield_rename.png\')\");\n}\n\nh1.xapp .button:hover {\n background-color: $theme.highlightColor;\n text-decoration: none;\n}\n'),(9021566092119813787,'code','#template(\'colorThemeInit.vm\')\n\n.activity-follow {\n padding-bottom: 10px;\n margin-bottom: 20px;\n}\n\n.activity-follow .unfollow {\n background: transparent 0 center url(\"$xwiki.getSkinFile(\'icons/silk/cross.png\')\") no-repeat;\n color: $theme.notificationErrorColor;\n display: inline-block;\n overflow: hidden;\n font-size: 83.3%;\n text-indent: 17px;\n vertical-align: middle;\n width: 16px;\n}\n.activity-follow .unfollow:hover {\n overflow: visible;\n text-decoration: none;\n width: auto;\n}\n\n.activity-follow .follow, .activity-follow .following {\n background: $theme.menuAddEntryBackgroundColor 2px center url(\"$xwiki.getSkinFile(\'icons/silk/accept.png\')\") no-repeat;\n border-radius: 4px;\n color: $theme.menuAddEntryLinkColor !important;\n display: inline-block;\n font-size: 83.3%;\n line-height: 1.6em;\n min-height: 16px;\n padding: 3px 6px 3px 22px;\n}\n.activity-follow .follow {\n background-image: url(\"$xwiki.getSkinFile(\'icons/silk/add.png\')\");\n}\n\n.notificationWatchUser {\n position: relative;\n}\n\n.notificationWatchUser > p {\n font-size: 0.85em;\n font-weight: 700;\n margin-bottom: 0.3em;\n text-transform: uppercase;\n}'),(9027176932998785565,'description','The space to display the list of documents for. If missing, the current space will be used.'),(9048315314872062450,'codeToExecute','{{display reference=\"XWiki.LoggingAdmin\"/}}'),(9088924276358756200,'properties','email:email\ntel:phone\nadr:address'),(9099341308356375630,'description','Text of the button that triggers the picker. Defaults to $services.localization.render(\'xe.attachmentSelector.selectFile\').'),(9167561533596058563,'code','require([\'jquery\', \"$!services.webjars.url(\'org.xwiki.platform:xwiki-platform-tree-webjar\', \'require-config.min.js\', {\'evaluate\': true})\"], function($) {\n $(\'.paths\').on(\'click\', \'.path-delete\', function(event) {\n event.preventDefault();\n $(this).closest(\'.path\').remove();\n }).on(\'click\', \'.path-add\', function(event) {\n event.preventDefault();\n $(\'.location-picker.modal\').prop(\'modalTrigger\', $(this)).modal();\n });\n\n var getLocalSpaceReference = function(nodeId) {\n var separatorIndex = nodeId.indexOf(\':\');\n var nodeType = nodeId.substr(0, separatorIndex);\n var nodeStringReference = nodeId.substr(separatorIndex + 1);\n var currentDocRef = XWiki.currentDocument.getDocumentReference();\n var nodeReference = XWiki.Model.resolve(nodeStringReference, XWiki.EntityType.byName(nodeType), currentDocRef);\n var spaceReference = nodeReference.extractReference(XWiki.EntityType.SPACE);\n var localSpaceReference = spaceReference.relativeTo(currentDocRef.extractReference(XWiki.EntityType.WIKI));\n return XWiki.Model.serialize(localSpaceReference);\n };\n\n var addLocation = function(value, paths) {\n var template = paths.find(\'.path.hidden\');\n var newPath = template.clone().removeClass(\'hidden\').insertBefore(template);\n newPath.find(\'input\').prop(\'disabled\', false).val(value);\n $.post(XWiki.currentDocument.getURL(\'get\'), {\n \'xpage\': \'hierarchy_reference\',\n // The passed reference is resolved as document reference.\n \'reference\': value + \'.WebHome\',\n \'local\': true,\n \'selfIsActive\': false\n }, function(data) {\n newPath.find(\'.breadcrumb\').replaceWith(data);\n });\n };\n\n $(\'.location-picker.modal\').on(\'xwiki:locationTreePicker:select\', function(event, data) {\n var trigger = $(this).prop(\'modalTrigger\');\n data.tree.get_selected().map(getLocalSpaceReference).forEach(function(localReference) {\n addLocation(localReference, trigger.closest(\'.paths\'));\n });\n });\n\n // Location Tree Picker\n require([\'tree\'], function($) {\n $(\'.location-picker.modal\').each(function() {\n var modal = $(this);\n var treeElement = modal.find(\'.location-tree\');\n var selectButton = modal.find(\'.modal-footer .btn-primary\');\n\n modal.on(\'shown.bs.modal\', function(event) {\n if (!$.jstree.reference(treeElement)) {\n // Initialize the tree and hook the event listeners.\n treeElement.xtree({\n core: {\n multiple: true\n }\n }).on(\'changed.jstree\', function(event, data) {\n selectButton.prop(\'disabled\', data.selected.size() === 0);\n }).on(\'dblclick\', \'.jstree-anchor\', function() {\n selectButton.click();\n });\n }\n });\n\n selectButton.click(function() {\n modal.modal(\'hide\');\n modal.triggerHandler(\'xwiki:locationTreePicker:select\', {\n \'tree\': $.jstree.reference(treeElement)\n });\n });\n });\n });\n});'); /*!40000 ALTER TABLE `xwikilargestrings` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2023-11-20 15:19:01