diff --git a/modules/distribution/src/repository/jaggeryapps/iot/api/device-api.jag b/modules/distribution/src/repository/jaggeryapps/iot/api/device-api.jag
index 4fb5b99d..c1690750 100644
--- a/modules/distribution/src/repository/jaggeryapps/iot/api/device-api.jag
+++ b/modules/distribution/src/repository/jaggeryapps/iot/api/device-api.jag
@@ -44,7 +44,7 @@ if (uriMatcher.match("/{context}/api/device/sketch/")) {
}
//URL: /iotdevices/FireAlarmManager/device/firealarm/download
- fireAlarmManagerService = carbonHttpsServletTransport + "/iotdevices/FireAlarmManager";
+ fireAlarmManagerService = carbonHttpsServletTransport + "/firealarm/manager";
sketchDownloadEndPoint = fireAlarmManagerService + "/device/" + sketchType + "/download";
response.sendRedirect(sketchDownloadEndPoint + "?owner=" + user.username);
exit();
@@ -61,8 +61,8 @@ if (uriMatcher.match("/{context}/api/devices/")) {
}
//URL: /iotdevices/DevicesManager/devices/username
- devicesManagerService = carbonHttpsServletTransport + "/iotdevices/DevicesManager";
- listAllDevicesEndPoint = devicesManagerService + "/devices/" + user.username;
+ devicesManagerService = carbonHttpsServletTransport + "/devicecloud/manager";
+ listAllDevicesEndPoint = devicesManagerService + "/devices/username/" + user.username;
var data = {};
//XMLHTTPRequest's GET
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/pages/mydevice.hbs b/modules/distribution/src/repository/jaggeryapps/iot/pages/sensebot.hbs
similarity index 69%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/pages/mydevice.hbs
rename to modules/distribution/src/repository/jaggeryapps/iot/pages/sensebot.hbs
index 3f8b077d..6f479949 100644
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/pages/mydevice.hbs
+++ b/modules/distribution/src/repository/jaggeryapps/iot/pages/sensebot.hbs
@@ -1,9 +1,8 @@
-{{authorized}}
{{layout "fluid"}}
{{#zone "title"}}
WSO2 DC | FireAlarm
{{/zone}}
{{#zone "body"}}
{{unit "appbar"}}
- {{unit "mydevice"}}
+ {{unit "sensebot"}}
{{/zone}}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/css/daterangepicker.css b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/css/daterangepicker.css
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/css/daterangepicker.css
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/css/daterangepicker.css
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/css/nv.d3.css b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/css/nv.d3.css
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/css/nv.d3.css
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/css/nv.d3.css
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/bulb-off.png b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/bulb-off.png
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/bulb-off.png
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/bulb-off.png
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/bulb-on.png b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/bulb-on.png
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/bulb-on.png
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/bulb-on.png
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/fan.png b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/fan.png
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/fan.png
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/fan.png
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/temp.png b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/temp.png
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/images/temp.png
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/images/temp.png
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/bulb.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/bulb.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/bulb.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/bulb.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/cumulativelinechart.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/cumulativelinechart.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/cumulativelinechart.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/cumulativelinechart.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/d3.min.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/d3.min.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/d3.min.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/d3.min.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/date-range.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/date-range.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/date-range.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/date-range.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/discretebarchart.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/discretebarchart.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/discretebarchart.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/discretebarchart.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/graph_util.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/graph_util.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/graph_util.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/graph_util.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/jquery.daterangepicker.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/jquery.daterangepicker.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/jquery.daterangepicker.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/jquery.daterangepicker.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/light_graph.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/light_graph.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/light_graph.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/light_graph.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/linewithfocuschart.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/linewithfocuschart.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/linewithfocuschart.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/linewithfocuschart.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/moment.min.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/moment.min.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/moment.min.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/moment.min.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/motion_graph.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/motion_graph.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/motion_graph.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/motion_graph.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/nv.d3.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/nv.d3.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/nv.d3.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/nv.d3.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/sonar_graph.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/sonar_graph.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/sonar_graph.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/sonar_graph.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/stream_layers.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/stream_layers.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/stream_layers.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/stream_layers.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/temperature_graph.js b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/temperature_graph.js
similarity index 100%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/public/js/temperature_graph.js
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/public/js/temperature_graph.js
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/mydevice.hbs b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/sensebot.hbs
similarity index 97%
rename from modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/mydevice.hbs
rename to modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/sensebot.hbs
index b9c692a5..a3c07c41 100644
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/mydevice/mydevice.hbs
+++ b/modules/distribution/src/repository/jaggeryapps/iot/units/sensebot/sensebot.hbs
@@ -22,7 +22,7 @@
+
+
+
+
+
+
+
SenseBot
+
+ Connect your digital displays and start managing and controlling your devices.
+ Let us give you all that you need to know of the devices you own.
+
+
+
Connect
+
+
+
+
+
+
+
+
+
Digital Display
+
+ Connect your digital displays and start managing and controlling your devices.
+ Let us give you all that you need to know of the devices you own.
+
+
+
Connect
+
+
diff --git a/modules/distribution/src/repository/jaggeryapps/iot/units/theme/public/css/main.css b/modules/distribution/src/repository/jaggeryapps/iot/units/theme/public/css/main.css
index 4846f352..a33cde6b 100644
--- a/modules/distribution/src/repository/jaggeryapps/iot/units/theme/public/css/main.css
+++ b/modules/distribution/src/repository/jaggeryapps/iot/units/theme/public/css/main.css
@@ -471,6 +471,12 @@ header{background-color: #2a2a2a;}
border: 1px solid #ccc;
width: 300px;
}
+
+#device_id{
+ background: #fff none repeat scroll 0 0;
+ border: 1px solid #ccc;
+ width: 220px;
+}
.hour-range,.minute-range{background: #fff none repeat scroll 0 0; border: 1px solid #ccc;}
.btn-black-action{color: #ffffff; padding: 5px 20px; text-decoration: none; overflow: hidden; background:#5c5c5c; text-align: center; margin: 0 10px; float: left; cursor: pointer; border: none; outline:none;}
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/api/device-api.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/api/device-api.jag
deleted file mode 100644
index 28809f2b..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/api/device-api.jag
+++ /dev/null
@@ -1,50 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var uri = request.getRequestURI();
-var uriMatcher = new URIMatcher(String(uri));
-
-var log = new Log("api/device-api.jag");
-
-var constants = require("/modules/constants.js");
-var dcProps = require('/config/dc-props.js').config();
-var downloadModule = require("/modules/download.js").downloadModule;
-var utility = require("/modules/utility.js").utility;
-
-var carbon = require('carbon');
-var carbonHttpServletTransport = carbon.server.address('http');
-var carbonHttpsServletTransport = carbon.server.address('https');
-
-var result;
-
-if (uriMatcher.match("/{context}/api/device/sketch/")) {
- sketchType = request.getParameter("type");
- if(!sketchType){log.error("Sketch Type is empty");}
-
- senseBotManagerService = carbonHttpsServletTransport+"/iotdevices/SenseBotManager";
- sketchDownloadEndPoint = senseBotManagerService + "/downloadSketch/device/";
- response.sendRedirect(sketchDownloadEndPoint + sketchType + "?owner=anonymous");
- exit();
-}
-
-// returning the result.
-if (result) {
- print(result);
-}
-%>
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/api/stats-api.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/api/stats-api.jag
deleted file mode 100644
index 57034136..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/api/stats-api.jag
+++ /dev/null
@@ -1,144 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var uri = request.getRequestURI();
-var uriMatcher = new URIMatcher(String(uri));
-
-var log = new Log("api/stats-api.jag");
-
-var constants = require("/modules/constants.js");
-var dcProps = require('/config/dc-props.js').config();
-var utility = require("/modules/utility.js").utility;
-
-var result;
-var statsClient = new Packages.org.wso2.carbon.device.mgt.iot.usage.statistics.IoTUsageStatisticsClient;
-
-if (uriMatcher.match("/{context}/api/stats")) {
-
- var deviceId = request.getParameter("deviceId");
- var from = request.getParameter("from");
- var to = request.getParameter("to");
-
- log.info("deviceId : " + deviceId + " from : " + from + " to : " + to);
-
- result = getData(getUsername(), deviceId, from, to);
-
-}
-
-// returning the result.
-if (result) {
- print(result);
-}
-
-function getUsername() {
-
- var user = session.get(constants.USER_SESSION_KEY);
-
- if (user) {
- log.info("username: "+ user.username);
- return user.username;
- } else {
- log.info("username is null");
- return null;
- }
-
-
-
-}
-
-function getData(user, deviceId, from, to) {
-
- result = new Object();
-
- result['sonarData'] = getSensorData("SONAR_SENSOR_SUMMARY","sonar",user, deviceId, from, to);
- result['motionData'] = getSensorData("PIR_MOTION_SENSOR_SUMMARY","motion",user, deviceId, from, to);
- result['lightData'] = getSensorData("LDR_LIGHT_SENSOR_SUMMARY","light",user, deviceId, from, to);
- result['temperatureData'] = getSensorData("DEVICE_TEMPERATURE_SUMMARY","TEMPERATURE",user, deviceId, from, to);
-
- return result;
-
-}
-
-function getSensorData(table, column, user, deviceId, from, to) {
-
- var fetchedData = statsClient.getDeviceStats(table, column, user, deviceId, from, to);
-
- var temperatureData = [];
-
- for (var i = 0; i < fetchedData.size(); i++) {
- temperatureData.push({
- time: fetchedData.get(i).getTime(),
- value: fetchedData.get(i).getValue()
- });
- }
-
- return temperatureData;
-}
-
-// ------------- Sample data generation -----------------
-
-function getSampleData() {
-
- result = new Object();
-
- result['bulbStatusData'] = getBulbStatusSampleData();
- result['fanStatusData'] = getFanStatusSampleData();
- result['temperatureData'] = getTemperatureSampleData();
-
- return result;
-}
-
-function getBulbStatusSampleData(from, to) {
-
- var bulbStatusData = [];
-
- for (var i = 0; i < 100; i++) {
- bulbStatusData.push({
- time: Date.now() + (i * 1000),
- value: Math.floor((Math.random() * 100) + 1) % 2 == 0 ? 'ON' : 'OFF'});
- }
-
- return bulbStatusData;
-};
-
-
-function getFanStatusSampleData(from, to) {
-
- var fanStatusData = [];
-
- for (var i = 0; i < 100; i++) {
- fanStatusData.push({time: Date.now() + (i * 1000), value: Math.floor((Math.random() * 100) + 1) % 2 == 0 ? 'ON' : 'OFF'});
- }
-
- return fanStatusData;
-}
-
-function getTemperatureSampleData(from, to) {
-
- var temperatureData = [];
-
- for (var i = 0; i < 100; i++) {
- temperatureData.push({time: Date.now() + (i * 1000), value: Math.random() * 100});
- }
-
- return temperatureData;
-}
-
-
-%>
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/config/config.json b/modules/distribution/src/repository/jaggeryapps/sensebot/config/config.json
deleted file mode 100644
index 95a917df..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/config/config.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "appContext" : "/iot/",
- "apiContext" : "api",
- "httpsURL": "%https.ip%",
- "httpURL": "%http.ip%",
- "ssoConfiguration": {
- "enabled": false,
- "issuer": "iot",
- "appName": "iot",
- "identityProviderURL": "%https.ip%/sso/samlsso.jag",
- "responseSigningEnabled": "true",
- "keyStorePassword": "wso2carbon",
- "identityAlias": "wso2carbon",
- "keyStoreName": "/repository/resources/security/wso2carbon.jks"
- }
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/config/dc-props.js b/modules/distribution/src/repository/jaggeryapps/sensebot/config/dc-props.js
deleted file mode 100644
index 7911f514..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/config/dc-props.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var config = function () {
- var conf = application.get("PINCH_CONFIG");
- if (!conf) {//if not in cache
- var pinch = require('/modules/pinch.min.js').pinch;
- var server = require('carbon').server;
- var config = require('/config/config.json');
- pinch(config, /^/, function (path, key, value) {
- if ((typeof value === 'string') && value.indexOf('%https.ip%') > -1) {
- return value.replace('%https.ip%', server.address("https"));
- } else if ((typeof value === 'string') && value.indexOf('%http.ip%') > -1) {
- return value.replace('%http.ip%', server.address("http"));
- }
- return value;
- });
- application.put("PINCH_CONFIG", config);//caching
- conf = config;
- }
- return conf;
-};
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/config/init.js b/modules/distribution/src/repository/jaggeryapps/sensebot/config/init.js
deleted file mode 100644
index d492ae79..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/config/init.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var carbonModule = require("carbon");
-var dcProps = require('/config/dc-props.js').config();
-var carbonServer = new carbonModule.server.Server({
- tenanted: true,
- url: dcProps.httpsURL + '/admin'
-});
-application.put("carbonServer", carbonServer);
-var userModule = require("/modules/user.js").userModule;
-var utility = require("/modules/utility.js").utility;
-utility.insertAppPermissions(userModule, "init");
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/jaggery.conf b/modules/distribution/src/repository/jaggeryapps/sensebot/jaggery.conf
deleted file mode 100644
index c0d708f1..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/jaggery.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "displayName": "Fuse Sample",
- "logLevel": "info",
- "initScripts": ["/config/init.js"],
- "urlMappings": [
- {
- "url" : "/test/*",
- "path" : "test/testExecutor.jag"
- },
- {
- "url": "/api/stats/*",
- "path": "/api/stats-api.jag"
- },
- {
- "url": "/api/device/*",
- "path": "/api/device-api.jag"
- },
- {
- "url": "/*",
- "path": "/lib/fuse.jag"
- }
- ]
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/enrollment.hbs b/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/enrollment.hbs
deleted file mode 100644
index 388ca0d4..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/enrollment.hbs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
- {{ defineZone "title"}}
-
- {{ defineZone "topLibCss"}}
- {{ defineZone "topCss"}}
-
-
-
-
-
-
- {{ defineZone "body"}}
-
- {{ defineZone "bottomjquery" }}
- {{ defineZone "bottomLibJs" }}
- {{ defineZone "bottomJs" }}
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/fluid.hbs b/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/fluid.hbs
deleted file mode 100644
index 1c9a5847..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/fluid.hbs
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- {{ defineZone "title"}}
- {{ defineZone "topLibCss"}}
- {{ defineZone "topCss"}}
- {{ defineZone "topJs"}}
-
-
-
-
- {{ defineZone "header"}}
-
- {{ defineZone "body"}}
-
- {{ defineZone "bottomLibJs" }}
- {{ defineZone "bottomJs" }}
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/nav-fluid.hbs b/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/nav-fluid.hbs
deleted file mode 100644
index 00278772..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/layouts/nav-fluid.hbs
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
- {{ defineZone "title"}}
- {{ defineZone "topCss"}}
-
-
-
-
-
-
-
- - Login
- {{ defineZone "upperRight"}}
-
-
-
-
-
-
-
-
-
-
- {{ defineZone "left"}}
-
-
-
- {{ defineZone "content"}}
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/acs.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/acs.jag
deleted file mode 100644
index 147c20a2..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/acs.jag
+++ /dev/null
@@ -1,49 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var dataConfig = require('/config/dc-props.js').config();
-var sso = require('/modules/sso.js').sso;
-var constants = require('/modules/constants.js');
-var carbonModule = require("carbon");
-var log = new Log();
-var keyStoreParams = {
- keyStoreName: dataConfig.ssoConfiguration.keyStoreName,
- keyStorePassword: dataConfig.ssoConfiguration.keyStorePassword,
- identityAlias: dataConfig.ssoConfiguration.identityAlias
-};
-sso.configure(dataConfig.ssoConfiguration.issuer,
- dataConfig.ssoConfiguration.appName,
- keyStoreParams, dataConfig.ssoConfiguration.identityProviderURL);
-sso.acs(
- function(loggedInUser) {
- var carbonUser = carbonModule.server.tenantUser(loggedInUser);
- session.put(constants.USER_SESSION_KEY, carbonUser);
- var username = carbonUser.username;
- if(log.isDebugEnabled()){
- log.debug("User logged in: "+username);
- }
- response.sendRedirect(dataConfig.appContext);
- }, function() {
- if(log.isDebugEnabled()){
- log.debug("User logged out");
- }
- response.sendRedirect(dataConfig.appContext);
- }
-);
-%>
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse-router.js b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse-router.js
deleted file mode 100644
index 7aab77d7..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse-router.js
+++ /dev/null
@@ -1,210 +0,0 @@
-//public function declarations
-var route;
-
-(function () {
-
- //public
- /**
- * front controller entity point. acts as the main function for every request.
- */
- route = function () {
- //lets assume URL looks like https://my.domain.com/app/{one}/{two}/{three}/{four}
- var uri = request.getRequestURI(); // = app/{one}/{two}/{three}/{four}
- var parts = splitFirst(uri);
- fuseState.appName = parts.head;
- var path = parts.tail; // = /{one}/{two}/{three}/{four}
- var handled = false;
-
- parts = splitFirst(path);
- if (parts.head == 'public') { // {one} == 'public'
- parts = splitFirst(parts.tail);
- if (splitFirst(parts.tail).head == 'less') { // {three} == 'less'
- handled = renderLess(parts.head, parts.tail); // renderLess({two},{three}/{four})
- } else {
- handled = renderStatic(parts.head, parts.tail);
- }
- } else {
- handled = renderPage(path);
- if (!handled) {
- handled = renderUnit(path);
- }
- }
-
- if (!handled) {
- response.sendError(404, 'Requested resource not found');
- }
-
- };
-
-
- //private
- var log = new Log('fuse.router');
-
- var getMime = function (path) {
- var index = path.lastIndexOf('.') + 1;
- var knowMime = {
- 'js': 'application/javascript',
- 'html': 'text/html',
- 'htm': 'text/html',
- 'woff': 'application/x-font-woff',
- "png": "image/png",
- "css": "text/css",
- "hbs": "text/x-handlebars-template",
- "apk": "application/vnd.android.package-archive",
- "ipa": "application/octet-stream"
- };
- var mime;
- if (index >= 0) {
- mime = knowMime[path.substr(index)];
- }
- return mime || 'text/plain';
- };
-
- /**
- * '/a/b/c/d' -> {'a','b/c/d'}
- * @param path URI part, should start with '/'
- * @returns {{head: string, tail: string}}
- */
- var splitFirst = function (path) {
- var firstSlashPos = path.indexOf('/', 1);
- var head = path.substring(1, firstSlashPos);
- var tail = path.substring(firstSlashPos);
- return {head: head, tail: tail};
- };
-
- /**
- * @param str
- * @param prefix
- * @returns {boolean} true iif str starts with prefix
- */
- var startsWith = function (str, prefix) {
- return (str.lastIndexOf(prefix, 0) === 0);
- };
-
- var renderStatic = function (unit, path) {
- log.debug('[' + requestId + '] for unit "' + unit + '" a request received for a static file "' + path + '"');
- var staticFile = fuse.getFile(unit, 'public' + path);
- if (staticFile.isExists() && !staticFile.isDirectory()) {
- response.addHeader('Content-type', getMime(path));
- response.addHeader('Cache-Control', 'public,max-age=12960000');
- staticFile.open('r');
- var stream = staticFile.getStream();
- print(stream);
- staticFile.close();
- return true;
- }
- return false;
- };
-
- var renderPage = function (path) {
- var jagFile;
- if (path.indexOf('/', path.length - 1) !== -1) {
- jagFile = new File('/pages' + path + 'index.jag');
- } else {
- jagFile = new File('/pages' + path + '.jag');
- }
- if (jagFile.isExists()) {
- include(jagFile.getPath());
- return true;
- }else{
- return false;
- }
- };
-
- var renderUnit = function (path) {
- var mainUnit = null;
- var matchedUnits = fuse.getMatchedUnitDefinitions();
- fuse.addDependencies(matchedUnits);
- var zones = fuseState.zones;
-
- // A map of maps. this is used to ensure same zone is not render twice in to same definition.
- // zonesAdded = { titleZone : { zoneFromA : true, zoneFromB : true } }
- var zonesAdded = {};
-
- for (var i = 0; i < matchedUnits.length; i++) {
- var definition = matchedUnits[i];
-
- for (var j = 0; j < definition.zones.length; j++) {
- var zone = definition.zones[j];
- if (!zones[zone.name]) {
- zones[zone.name] = [];
- zonesAdded[zone.name] = {};
- }
- var zoneKey = zone.origin + ':' + zone.name; // temp unique key to identify zone form a given unit.
- if (!zonesAdded[zone.name][zoneKey]) {
- var zoneInfo = {unitName: definition.name};
- if (zone.origin != definition.name) {
- zoneInfo.originUnitName = zone.origin;
- }
- zones[zone.name].push(zoneInfo);
- zonesAdded[zone.name][zoneKey] = true;
- }
- }
-
- }
-
- var layout = fuseState.layout;
- if (layout !== null) {
- log.debug(
- '[' + requestId + '] request for "' + path + '" will be rendered using layout "' +
- layout + '" (defined in "' + mainUnit + '") and zones ' +
- stringify(zones)
- );
-
- var output = handlebars.Handlebars.compileFile(fuse.getLayoutPath(layout))({});
- response.addHeader('Content-type', 'text/html');
- print(output);
- return true;
- } else {
- log.debug(
- '[' + requestId + '] request for "' + path + '" will can\'t be rendered, since no layout is defined' +
- 'in any of the units ' + stringify(zones));
- return false;
- }
- };
-
- function fileToString(path) {
- }
-
- /**
- * convert less file to css and print to output. add '?nocache=true' to force regenerate.
- * @param unit name of the unit
- * @param path the path to the less file relative to unit root (should start with slash)
- * @returns {boolean} is successfully rendered.
- */
- function renderLess(unit, path) {
- //TODO: fix - incorrect less files makes it respond the old less even if it is nocahce.
- log.debug('[' + requestId + '] for unit "' + unit + '" a request received for a less file "' + path + '"');
- var cacheKey = '/tmp/cached_' + unit + path.replace(/[^\w\.-]/g, '_');
- fuseState.currentUnit = unit;
- var cachedCss = new File(cacheKey);
-
- //TODO: move this check to caller function ??
- if (fuseDebug || request.getParameter('nocache') == 'true' || !cachedCss.isExists()) {
- var parts = splitFirst(path);
- var lessPath = '/public/less' + parts.tail.replace(/\.css$/, '') + '.less';
- var lessFile = fuse.getFile(unit, lessPath);
-
- if (lessFile.isExists()) {
- var x = require('less-rhino-1.7.5.js');
- x.compile([lessFile.getPath(), cacheKey]);
- log.debug('[' + requestId + '] for unit "' + unit + '" request for "' + path + '" is cached as "' + cacheKey + '"');
- }
- }
-
-
- if (cachedCss.isExists()) {
- response.addHeader('Content-type', 'text/css');
- response.addHeader('Cache-Control', 'public,max-age=12960000');
- cachedCss.open('r');
- var stream = cachedCss.getStream();
- print(stream);
- cachedCss.close();
- return true;
- }
- return false;
-
- }
-
-
-})();
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.jag
deleted file mode 100644
index 597c9970..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.jag
+++ /dev/null
@@ -1,29 +0,0 @@
-<%
-
-//global object to pass request stat among fuse framework files.
-var fuseState = {
- zones: {},
- appName: '',
- zoneStack: [],
- currentUnit: null
-};
-
-var requestId = function makeId() {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for (var i = 0; i < 5; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
-
- return text;
-}();
-var fuseDebug = false;
-//var fuseDebug = true;
-
-var handlebars = require('handlebars-helpers.js');
-var fuseRouter = require('fuse-router.js');
-var fuse = require('fuse.js');
-
-
-fuseRouter.route();
-
-%>
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.js b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.js
deleted file mode 100644
index f802f4be..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/fuse.js
+++ /dev/null
@@ -1,417 +0,0 @@
-//public function declarations
-var getHbsFile, getFile, toRelativePath, cleanupAncestors,
- getUnitPath, getMatchedUnitDefinitions, getZoneDefinition, getUnitDefinition,
- getUnitDefinitions, getLayoutPath;
-
-(function () {
- //private
- var log = new Log('fuse.core');
- var lookUpTable = null;
- var definitions = null;
-
- var initLookUp = function (definitions) {
- if (lookUpTable === null) {
- lookUpTable = {};
- for (var i = 0; i < definitions.length; i++) {
- var definition = definitions[i];
- lookUpTable[definition.name] = i;
- }
- }
- };
-
- var isMatched = function (definition, layout) {
- var urlMatch = function (pattern) {
- var uriMatcher = new URIMatcher(request.getRequestURI());
- return Boolean(uriMatcher.match('/{appName}' + pattern));
- };
- var permission = function (permissionStr) {
- var carbonModule = require("carbon");
- var carbonServer = application.get("carbonServer");
- var carbonUser = session.get("USER");
- if (carbonUser) {
- var userManager = new carbonModule.user.UserManager(carbonServer, carbonUser.tenantId);
- var user = new carbonModule.user.User(userManager, carbonUser.username);
- return user.isAuthorized(permissionStr, "ui.execute");
- }
- return false;
- };
- var config = {'theme': 'default'};
- var predicateStr = definition.definition.predicate;
- if (predicateStr) {
- var js = 'function(config,urlMatch,permission,layout){ return ' + predicateStr + ';}';
- return Boolean(eval(js)(config, urlMatch,permission, layout ? layout : NaN));
- }
- return false;
- };
-
- var getAncestorModels = function (unit) {
- var unitModel = getUnitDefinition(unit);
- var ancestors = [unitModel];
- var parentName;
- while ((parentName = unitModel.definition.extends) != null) {
- unitModel = getUnitDefinition(parentName);
- ancestors.push(unitModel);
- }
- return ancestors;
- };
-
- addDependencies = function (unitModels) {
- var resolved = {};
- for (var i = 0; i < unitModels.length; i++) {
- resolved[unitModels[i].name] = true;
- }
-
- for (i = 0; i < unitModels.length; i++) {
- var unitModel = unitModels[i];
- var dependencies = unitModel.definition.dependencies;
- if (dependencies) {
- for (var j = 0; j < dependencies.length; j++) {
- var dependencyName = dependencies[j];
- unitModels.push(getUnitDefinition(dependencyName));
- resolved[dependencyName] = true;
- }
- }
- }
-
-
- };
-
-
- //public
- getMatchedUnitDefinitions = function () {
- //TODO: return map not list
- var unitDefinitions = getUnitDefinitions();
- var matched = [];
- var unMatched = [];
- var layout = null;
- var mainUnit = null;
-
- var addToMatched = function (model) {
- matched.push(model);
- if (model.layout) {
- if (layout == null) {
- layout = model.layout;
- mainUnit = model.name;
- } else {
- log.warn(
- '[' + requestId + '] multiple layouts ' + mainUnit + ':' +
- layout + ' vs ' + model.name + ':' + model.layout
- );
- }
- }
- };
-
-
- // first pass
- for (var i = 0; i < unitDefinitions.length; i++) {
- var unitDefinition = unitDefinitions[i];
- if (isMatched(unitDefinition)) {
- addToMatched(unitDefinition);
- } else {
- unMatched.push(unitDefinition);
- }
- }
-
- fuseState.layout = layout;
-
- // second pass : we have to do this two passes since we don't know the layout
- // first time around
- if (layout) {
- for (i = 0; i < unMatched.length; i++) {
- unitDefinition = unMatched[i];
- if (isMatched(unitDefinition, layout)) {
- addToMatched(unitDefinition)
- }
- }
- }
-
-
- var toDelete = [];
-
- for (i = 0; i < matched.length; i++) {
- var ancestors = getAncestorModels(matched[i].name);
- for (var j = 1; j < ancestors.length; j++) {
- var ancestor = ancestors[j];
- toDelete.push(ancestor.name);
- }
- }
-
-
- for (i = matched.length - 1; i >= 0; i--) {
- //log.info(matched[i].name);
- if (toDelete.indexOf(matched[i].name) >= 0) {
- matched.splice(i, 1);
- }
- }
-
- return matched;
- };
-
- getUnitDefinition = function (unit) {
- var definitions = getUnitDefinitions();
- initLookUp(definitions);
- var model = definitions[lookUpTable[unit]];
- if (!model) {
- log.warn('[' + requestId + '] unit "' + unit + '" does not exits');
- throw '[' + requestId + '] unit "' + unit + '" does not exits';
- }
- return model;
- };
-
- var flattenAllInheritance = function (unitModels) {
- var hasFlattend = {};
- for (var i = 0; i < unitModels.length; i++) {
- var model = unitModels[i];
- if (!hasFlattend[model]) {
- var ancestors = getAncestorModels(model.name);
- for (var j = ancestors.length - 1; j >= 1; j--) {
- flattenInheritance(ancestors[j], ancestors[j - 1]);
- }
- }
- }
- };
-
- var flattenInheritance = function (parent, child) {
- var parentZones = parent.zones;
- for (var i = 0; i < parentZones.length; i++) {
- var parentZone = parentZones[i];
- child.zones.push(parentZone);
- }
- };
-
- getUnitDefinitions = function () {
- if (definitions !== null) {
- return definitions;
- } else {
- definitions = [];
- }
-
- var unitDirs = new File('/units').listFiles();
- for (var i = 0; i < unitDirs.length; i++) {
- var unitDir = unitDirs[i];
- if (unitDir.isDirectory()) {
-
- var unitName = unitDir.getName();
- var unitModel = {
- name: unitName,
- path: unitDir.getPath()
- };
-
- // unit definition is read form is the .json file.
- // if doesn't exits it will be an empty json.
- var definitionFile = new File(fuse.getUnitPath(unitName) + '/' + unitName + '.json');
- if (definitionFile.isExists() && !definitionFile.isDirectory()) {
- var path = definitionFile.getPath();
- log.debug('[' + requestId + '] reading file "' + path + '"');
- unitModel.definition = require(path);
- } else {
- log.warn('[' + requestId + '] for unit "' + unitName + '", unable to find a definition file');
- unitModel.definition = {};
- }
-
- // add the information derived by parsing hbs file to the same model
- var hbsMetadata = getHbsMetadata(unitModel);
- unitModel.zones = hbsMetadata.zones;
- if (hbsMetadata.layout) {
- unitModel.layout = hbsMetadata.layout;
- }
-
- definitions.push(unitModel);
- }
- }
-
- addPageUnitDefinitions(definitions);
-
- initLookUp(definitions);
- flattenAllInheritance(definitions);
-
- return definitions;
- };
-
- addPageUnitDefinitions = function (unitModels, dir) {
- var pageFiles = new File(dir || '/pages').listFiles();
- for (var i = 0; i < pageFiles.length; i++) {
- var pageFile = pageFiles[i];
- var fileName = pageFile.getName();
- if (pageFile.isDirectory()) {
- addPageUnitDefinitions(unitModels, pageFile.getPath())
- } else if (fileName.indexOf('.hbs', fileName.length - 4) !== -1) { // File name ends with '.hbs'
-
- var isLeaf = true;
- //path relative to app root
- var relativePath = pageFile.getPath()
- .substring(6 + pageFile.getPath().indexOf('/pages/'), pageFile.getPath().length - 4);
-
- if (relativePath.match(/\/index$/)) {
- relativePath = relativePath.replace(/\/index$/, '');
- var parentFile = new File(pageFile.getPath().substr(0, pageFile.getPath().lastIndexOf('/')));
- var hasSiblings = parentFile.listFiles().length != 1;
- if (hasSiblings) {
- isLeaf = false;
- }
- }
-
- //this will be used as a name for the virtual unit, useful for debugging purposes.
- var unitName = (relativePath == '' ? 'index' : relativePath.substr(1).replace(/\//, '-') ) + '-page';
-
- var predicate = "urlMatch('" + relativePath + "')";
- // leaf is page that can handle multiple URLs. in this case it should have a wildcard at end.
- // but since our current matcher doesn't support {/wildcard*} patten, "OR" ( || ) is used
- if (isLeaf) {
- predicate += " || urlMatch('" + relativePath + "/{+wildcard}')";
- }
- var unitModel = {
- name: unitName,
-
- path: pageFile.getPath(),
- definition: {predicate: predicate}
- };
- var hbsMetadata = getHbsMetadata(unitModel);
- unitModel.zones = hbsMetadata.zones;
- if (hbsMetadata.layout) {
- unitModel.layout = hbsMetadata.layout;
- }
-
- unitModels.push(unitModel);
- }
- }
- };
-
-
- getLayoutPath = function (layout) {
- return '/layouts/' + layout + '.hbs';
- };
-
- getHbsFile = function (unit) {
- // we determining if it's page unit or a proper unit
- // by checking if path ends with '.hbs'
- // TODO: improve getFile to do include this logic
- if (unit.path.indexOf('.hbs', unit.path.length - 4) !== -1) {
- return new File(unit.path);
- } else {
- return new File(unit.path + '/' + unit.name + '.hbs');
- }
- };
-
- var getHbsMetadata = function (unit) {
- var zoneDef = {'zones': []};
- var hbsFile = getHbsFile(unit);
- if (!hbsFile.isExists()) {
- return zoneDef;
- }
- var output = handlebars.Handlebars.compileFile(hbsFile)({});
- var zonesAndLayouts = output.trim().split(/\s+/gm);
- for (var i = 0; i < zonesAndLayouts.length; i++) {
- var name = zonesAndLayouts[i];
- if (name.lastIndexOf('zone_', 0) === 0) {
- zoneDef.zones.push({name: name.substr(5), origin: unit.name});
- } else if (name.lastIndexOf('layout_', 0) === 0) {
- zoneDef.layout = name.substr(7);
- }
- }
- return zoneDef;
- };
-
-
- getUnitPath = function (unit) {
- return '/units/' + unit;
- };
-
- cleanupAncestors = function (units) {
- var toDelete = {};
- var len = units.length;
- for (var i = 0; i < len; i++) {
- var unit = units[i];
- if (!toDelete[unit]) {
- var ancestors = getAncestorModels(unit.name);
- for (var j = 1; j < ancestors.length; j++) {
- toDelete[ancestors[j].name] = unit;
- }
- }
- }
- while (len--) {
- if (toDelete[units[len]]) {
- log.debug(
- '[' + requestId + '] unit "' + units[len] +
- '" is overridden by "' + toDelete[units[len]] + '"'
- );
- units.splice(len, 1);
- }
- }
- };
-
- toRelativePath = function (path) {
- var start = 0;
- if (path.lastIndexOf('/units/', 0) == 0) {
- start = 7; // len('/units/')
- }
- var slashPos = path.indexOf('/', 7);
- return {
- unit: path.substring(start, slashPos),
- path: path.substr(slashPos)
- }
- };
-
- /**
- * Get a file inside a unit by relative path. if the file is not available in the given unit,
- * the closest ancestor's file will be returned. if an optional suffix is used the relative path is
- * calculated as ( path + < unit name > + opt_suffix ). if no such a file exists a returned file object will
- * point to provided unit's non-existing file location (not to any ancestors).
- *
- * @param unitName name of the unit
- * @param path path relative to unit root.
- * @param opt_suffix
- * @returns {File}
- */
- getFile = function (unitName, path, opt_suffix) {
- var slashPath = ((path[0] === '/') ? '' : '/') + path;
- var selfFileName = '';
- var fileName = '';
- if (opt_suffix) {
- selfFileName = unitName + opt_suffix;
- slashPath = slashPath + ((slashPath[slashPath.length - 1] === '/') ? '' : '/');
- }
-
- //TODO: remove this hack that makes in page-unit, any file is same
- var unitDef = getUnitDefinition(unitName);
- if (unitDef.path.indexOf('.hbs', unitDef.path.length - 4) !== -1) {
- if (opt_suffix.indexOf('.hbs', opt_suffix.length - 4) !== -1) {
- return new File(unitDef.path);
- } else {
- return new File(unitDef.path.replace(/.hbs$/, opt_suffix));
- }
- }
-
- var selfFile = new File(getUnitPath(unitName) + slashPath + selfFileName);
- if (selfFile.isExists()) {
- log.debug(
- '[' + requestId + '] for unit "' + unitName + '" file resolved : "'
- + slashPath + selfFileName + '" -> "' + selfFile.getPath() + '"'
- );
-
- return selfFile;
- }
-
- var ancestors = getAncestorModels(unitName);
- for (var i = 1; i < ancestors.length; i++) {
- var ancestorName = ancestors[i].name;
- if (opt_suffix) {
- fileName = ancestorName + opt_suffix;
- }
- var file = new File(getUnitPath(ancestorName) + slashPath + fileName);
- if (file.isExists()) {
- log.debug(
- '[' + requestId + '] for unit "' + unitName + '" file resolved : "'
- + slashPath + selfFileName + '" -> "' + file.getPath() + '"'
- );
- return file;
- }
- }
- log.debug(
- '[' + requestId + '] for unit "' + unitName + '" (non-excising) file resolved : "'
- + slashPath + selfFileName + '" -> "' + selfFile.getPath() + '"'
- );
- return selfFile;
- };
-
-})();
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-helpers.js b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-helpers.js
deleted file mode 100644
index 80342019..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-helpers.js
+++ /dev/null
@@ -1,194 +0,0 @@
-var log = new Log('fuse.handlebars');
-//TODO: create a different set of helpers for init parsing
-
-var Handlebars = require('handlebars-v2.0.0.js').Handlebars;
-var USER_SESSION_KEY = "USER";
-var getScope = function (unit,configs) {
- var jsFile = fuse.getFile(unit, '', '.js');
- var templateConfigs = configs || {};
- var script;
- var onRequestCb = function(){}; //Assume that onRequest function will not be defined by the user
- var viewModel = {};
- var cbResult;
- if (jsFile.isExists()) {
- script = require(jsFile.getPath());
- //Eagerly make the viewModel the template configs
- viewModel = templateConfigs;
- //Check if the unit author has specified an onRequest
- //callback
- if(script.hasOwnProperty('onRequest')){
- script.app = {
- url: '/' + fuseState.appName,
- publicURL: '/' + fuseState.appName + '/public/' + unit,
- "class": unit + '-unit'
- };
- onRequestCb = script.onRequest;
- cbResult = onRequestCb(templateConfigs);
- log.debug("passing configs to unit "+unit+" configs: "+stringify(templateConfigs));
- //If the execution does not yield an object we will print
- //a warning as the unit author may have forgotten to return a data object
- if(cbResult===undefined){
- cbResult = {}; //Give an empty data object
- log.warn('[' + requestId + '] unit "' + unit + '" has a onRequest method which does not return a value.This may lead to the '
- +'unit not been rendered correctly.');
- }
- viewModel = cbResult;
- }
- }
- else{
- //If there is no script then the view should get the configurations
- //passed in the unit call
- viewModel = templateConfigs;
- }
- viewModel.app = {
- url: '/' + fuseState.appName
- };
- viewModel.self = {
- publicURL: '/' + fuseState.appName + '/public/' + unit,
- "class": unit + '-unit'
- };
- return viewModel;
-};
-
-Handlebars.innerZones = [];
-Handlebars.innerZonesFromUnit = null;
-
-Handlebars.registerHelper('defineZone', function (zoneName, zoneContent) {
- var result = '';
- var zone = Handlebars.Utils.escapeExpression(zoneName);
- fuseState.zoneStack.push(zone);
- var unitsToRender = fuseState.zones[zone] || [];
-
- if (Handlebars.innerZones.length > 0) {
- unitsToRender = fuseState.zones[Handlebars.innerZones[0]] || [];
- }
-
- // if there is no one overriding, then display inline zone
- if (zoneContent['fn'] && unitsToRender.length == 0) {
- return zoneContent.fn(this).trim();
- }
-
- for (var i = 0; i < unitsToRender.length; i++) {
- var unit = unitsToRender[i];
- if (Handlebars.innerZonesFromUnit == null || Handlebars.innerZonesFromUnit.unitName == unit.unitName) {
- var template = fuse.getFile(unit.originUnitName || unit.unitName, '', '.hbs');
- log.debug('[' + requestId + '] for zone "' + zone + '" including template :"' + template.getPath() + '"');
- result += Handlebars.compileFile(template)(getScope(unit.unitName, zoneContent.data.root));
- }
- }
-
- // we go to inner zones if result is empty, what we should really do it
- // if matched zone is fully made of sub-zones. this is a hack to
- // make it easy to implement.
- if (result.trim().length == 0 && zoneContent['fn']) {
- Handlebars.innerZones.push(zoneName);
- for (i = 0; i < unitsToRender.length; i++) {
- unit = unitsToRender[i];
- Handlebars.innerZonesFromUnit = unit;
- result += zoneContent.fn(this).trim();
- Handlebars.innerZonesFromUnit = null;
- }
- Handlebars.innerZones.pop();
- return result;
- }
-
- fuseState.zoneStack.pop();
- return new Handlebars.SafeString(result);
-});
-
-Handlebars.registerHelper('zone', function (zoneName, zoneContent) {
- var currentZone = fuseState.zoneStack[fuseState.zoneStack.length - 1];
- if (currentZone == null) {
- return 'zone_' + zoneName + ' ';
- }
-
- // if it's exact zone match or if any in inner zone matches we render zone.
- // this second condition is a hack. what we should really do is to keep another stack,
- // and only match with the peek of that stack and always fill it with next in innerZone stack.
- if (zoneName == currentZone || Handlebars.innerZones.indexOf(zoneName) >= 0) {
- return zoneContent.fn(this).trim();
- } else {
- return '';
- }
-});
-
-Handlebars.registerHelper('layout', function (layoutName) {
- var currentZone = fuseState.zoneStack[fuseState.zoneStack.length - 1];
- if (currentZone == null) {
- return 'layout_' + layoutName;
- } else {
- return '';
- }
-});
-
-Handlebars.registerHelper('authorized', function () {
- var currentZone = fuseState.zoneStack[fuseState.zoneStack.length - 1];
- if (currentZone == null) {
- return '';
- } else {
- var loggedUser = session.get(USER_SESSION_KEY);
- if(loggedUser == null){
- response.sendRedirect("/"+ fuseState.appName + "/login");
- exit();
- }
- }
-});
-
-Handlebars.registerHelper('unit', function (unitName,options) {
- var unitDef = fuse.getUnitDefinition(unitName);
- var baseUnit = null;
- var templateConfigs = options.hash || {};
- for (var i = 0; i < unitDef.zones.length; i++) {
- var zone = unitDef.zones[i];
- if (zone.name == 'main') {
- baseUnit = zone.origin;
- } else {
- var golbalZone = fuseState.zones[zone.name];
- if (!golbalZone) {
- fuseState.zones[zone.name] = [{"unitName": unitName}];
- } else {
- fuseState.zones[zone.name].push({"unitName": unitName});
- }
- }
- }
- if (baseUnit == null) {
- log.error('unit does not have a main zone');
- }
- //TODO warn when unspecified decencies are included.
- fuseState.zoneStack.push('main');
- var template = fuse.getFile(baseUnit, '', '.hbs');
- log.debug('[' + requestId + '] including "' + baseUnit + '"'+" with configs "+stringify(templateConfigs));
- var result = new Handlebars.SafeString(Handlebars.compileFile(template)(getScope(baseUnit,templateConfigs)));
- fuseState.zoneStack.pop();
- return result;
-});
-
-Handlebars.compileFile = function (file) {
- //TODO: remove this overloaded argument
- var f = (typeof file === 'string') ? new File(file) : file;
-
- if (!Handlebars.cache) {
- Handlebars.cache = {};
- }
-
- if (Handlebars.cache[f.getPath()] != null) {
- return Handlebars.cache[f.getPath()];
- }
-
- f.open('r');
- log.debug('[' + requestId + '] reading file "' + f.getPath() + '"');
- var content = f.readAll().trim();
- f.close();
- var compiled = Handlebars.compile(content);
- Handlebars.cache[f.getPath()] = compiled;
- return compiled;
-};
-Handlebars.registerHelper('equal', function(lvalue, rvalue, options) {
- if (arguments.length < 3)
- throw new Error("Handlebars Helper equal needs 2 parameters");
- if( lvalue!=rvalue ) {
- return options.inverse(this);
- } else {
- return options.fn(this);
- }
-});
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-v2.0.0.js b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-v2.0.0.js
deleted file mode 100644
index f826bbfd..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/handlebars-v2.0.0.js
+++ /dev/null
@@ -1,3079 +0,0 @@
-/*!
-
- handlebars v2.0.0
-
-Copyright (C) 2011-2014 by Yehuda Katz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-@license
-*/
-/* exported Handlebars */
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define([], factory);
- } else if (typeof exports === 'object') {
- module.exports = factory();
- } else {
- root.Handlebars = root.Handlebars || factory();
- }
-}(this, function () {
-// handlebars/safe-string.js
-var __module4__ = (function() {
- "use strict";
- var __exports__;
- // Build out our basic SafeString type
- function SafeString(string) {
- this.string = string;
- }
-
- SafeString.prototype.toString = function() {
- return "" + this.string;
- };
-
- __exports__ = SafeString;
- return __exports__;
-})();
-
-// handlebars/utils.js
-var __module3__ = (function(__dependency1__) {
- "use strict";
- var __exports__ = {};
- /*jshint -W004 */
- var SafeString = __dependency1__;
-
- var escape = {
- "&": "&",
- "<": "<",
- ">": ">",
- '"': """,
- "'": "'",
- "`": "`"
- };
-
- var badChars = /[&<>"'`]/g;
- var possible = /[&<>"'`]/;
-
- function escapeChar(chr) {
- return escape[chr];
- }
-
- function extend(obj /* , ...source */) {
- for (var i = 1; i < arguments.length; i++) {
- for (var key in arguments[i]) {
- if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
- obj[key] = arguments[i][key];
- }
- }
- }
-
- return obj;
- }
-
- __exports__.extend = extend;var toString = Object.prototype.toString;
- __exports__.toString = toString;
- // Sourced from lodash
- // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
- var isFunction = function(value) {
- return typeof value === 'function';
- };
- // fallback for older versions of Chrome and Safari
- /* istanbul ignore next */
- if (isFunction(/x/)) {
- isFunction = function(value) {
- return typeof value === 'function' && toString.call(value) === '[object Function]';
- };
- }
- var isFunction;
- __exports__.isFunction = isFunction;
- /* istanbul ignore next */
- var isArray = Array.isArray || function(value) {
- return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;
- };
- __exports__.isArray = isArray;
-
- function escapeExpression(string) {
- // don't escape SafeStrings, since they're already safe
- if (string instanceof SafeString) {
- return string.toString();
- } else if (string == null) {
- return "";
- } else if (!string) {
- return string + '';
- }
-
- // Force a string conversion as this will be done by the append regardless and
- // the regex test will do this transparently behind the scenes, causing issues if
- // an object's to string has escaped characters in it.
- string = "" + string;
-
- if(!possible.test(string)) { return string; }
- return string.replace(badChars, escapeChar);
- }
-
- __exports__.escapeExpression = escapeExpression;function isEmpty(value) {
- if (!value && value !== 0) {
- return true;
- } else if (isArray(value) && value.length === 0) {
- return true;
- } else {
- return false;
- }
- }
-
- __exports__.isEmpty = isEmpty;function appendContextPath(contextPath, id) {
- return (contextPath ? contextPath + '.' : '') + id;
- }
-
- __exports__.appendContextPath = appendContextPath;
- return __exports__;
-})(__module4__);
-
-// handlebars/exception.js
-var __module5__ = (function() {
- "use strict";
- var __exports__;
-
- var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
-
- function Exception(message, node) {
- var line;
- if (node && node.firstLine) {
- line = node.firstLine;
-
- message += ' - ' + line + ':' + node.firstColumn;
- }
-
- var tmp = Error.prototype.constructor.call(this, message);
-
- // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
- for (var idx = 0; idx < errorProps.length; idx++) {
- this[errorProps[idx]] = tmp[errorProps[idx]];
- }
-
- if (line) {
- this.lineNumber = line;
- this.column = node.firstColumn;
- }
- }
-
- Exception.prototype = new Error();
-
- __exports__ = Exception;
- return __exports__;
-})();
-
-// handlebars/base.js
-var __module2__ = (function(__dependency1__, __dependency2__) {
- "use strict";
- var __exports__ = {};
- var Utils = __dependency1__;
- var Exception = __dependency2__;
-
- var VERSION = "2.0.0";
- __exports__.VERSION = VERSION;var COMPILER_REVISION = 6;
- __exports__.COMPILER_REVISION = COMPILER_REVISION;
- var REVISION_CHANGES = {
- 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
- 2: '== 1.0.0-rc.3',
- 3: '== 1.0.0-rc.4',
- 4: '== 1.x.x',
- 5: '== 2.0.0-alpha.x',
- 6: '>= 2.0.0-beta.1'
- };
- __exports__.REVISION_CHANGES = REVISION_CHANGES;
- var isArray = Utils.isArray,
- isFunction = Utils.isFunction,
- toString = Utils.toString,
- objectType = '[object Object]';
-
- function HandlebarsEnvironment(helpers, partials) {
- this.helpers = helpers || {};
- this.partials = partials || {};
-
- registerDefaultHelpers(this);
- }
-
- __exports__.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {
- constructor: HandlebarsEnvironment,
-
- logger: logger,
- log: log,
-
- registerHelper: function(name, fn) {
- if (toString.call(name) === objectType) {
- if (fn) { throw new Exception('Arg not supported with multiple helpers'); }
- Utils.extend(this.helpers, name);
- } else {
- this.helpers[name] = fn;
- }
- },
- unregisterHelper: function(name) {
- delete this.helpers[name];
- },
-
- registerPartial: function(name, partial) {
- if (toString.call(name) === objectType) {
- Utils.extend(this.partials, name);
- } else {
- this.partials[name] = partial;
- }
- },
- unregisterPartial: function(name) {
- delete this.partials[name];
- }
- };
-
- function registerDefaultHelpers(instance) {
- instance.registerHelper('helperMissing', function(/* [args, ]options */) {
- if(arguments.length === 1) {
- // A missing field in a {{foo}} constuct.
- return undefined;
- } else {
- // Someone is actually trying to call something, blow up.
- throw new Exception("Missing helper: '" + arguments[arguments.length-1].name + "'");
- }
- });
-
- instance.registerHelper('blockHelperMissing', function(context, options) {
- var inverse = options.inverse,
- fn = options.fn;
-
- if(context === true) {
- return fn(this);
- } else if(context === false || context == null) {
- return inverse(this);
- } else if (isArray(context)) {
- if(context.length > 0) {
- if (options.ids) {
- options.ids = [options.name];
- }
-
- return instance.helpers.each(context, options);
- } else {
- return inverse(this);
- }
- } else {
- if (options.data && options.ids) {
- var data = createFrame(options.data);
- data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);
- options = {data: data};
- }
-
- return fn(context, options);
- }
- });
-
- instance.registerHelper('each', function(context, options) {
- if (!options) {
- throw new Exception('Must pass iterator to #each');
- }
-
- var fn = options.fn, inverse = options.inverse;
- var i = 0, ret = "", data;
-
- var contextPath;
- if (options.data && options.ids) {
- contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
- }
-
- if (isFunction(context)) { context = context.call(this); }
-
- if (options.data) {
- data = createFrame(options.data);
- }
-
- if(context && typeof context === 'object') {
- if (isArray(context)) {
- for(var j = context.length; i 0) {
- throw new Exception("Invalid path: " + original, this);
- } else if (part === "..") {
- depth++;
- depthString += '../';
- } else {
- this.isScoped = true;
- }
- } else {
- dig.push(part);
- }
- }
-
- this.original = original;
- this.parts = dig;
- this.string = dig.join('.');
- this.depth = depth;
- this.idName = depthString + this.string;
-
- // an ID is simple if it only has one part, and that part is not
- // `..` or `this`.
- this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
-
- this.stringModeValue = this.string;
- },
-
- PartialNameNode: function(name, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "PARTIAL_NAME";
- this.name = name.original;
- },
-
- DataNode: function(id, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "DATA";
- this.id = id;
- this.stringModeValue = id.stringModeValue;
- this.idName = '@' + id.stringModeValue;
- },
-
- StringNode: function(string, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "STRING";
- this.original =
- this.string =
- this.stringModeValue = string;
- },
-
- NumberNode: function(number, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "NUMBER";
- this.original =
- this.number = number;
- this.stringModeValue = Number(number);
- },
-
- BooleanNode: function(bool, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "BOOLEAN";
- this.bool = bool;
- this.stringModeValue = bool === "true";
- },
-
- CommentNode: function(comment, locInfo) {
- LocationInfo.call(this, locInfo);
- this.type = "comment";
- this.comment = comment;
-
- this.strip = {
- inlineStandalone: true
- };
- }
- };
-
-
- // Must be exported as an object rather than the root of the module as the jison lexer
- // most modify the object to operate properly.
- __exports__ = AST;
- return __exports__;
-})(__module5__);
-
-// handlebars/compiler/parser.js
-var __module9__ = (function() {
- "use strict";
- var __exports__;
- /* jshint ignore:start */
- /* istanbul ignore next */
- /* Jison generated parser */
- var handlebars = (function(){
- var parser = {trace: function trace() { },
- yy: {},
- symbols_: {"error":2,"root":3,"program":4,"EOF":5,"program_repetition0":6,"statement":7,"mustache":8,"block":9,"rawBlock":10,"partial":11,"CONTENT":12,"COMMENT":13,"openRawBlock":14,"END_RAW_BLOCK":15,"OPEN_RAW_BLOCK":16,"sexpr":17,"CLOSE_RAW_BLOCK":18,"openBlock":19,"block_option0":20,"closeBlock":21,"openInverse":22,"block_option1":23,"OPEN_BLOCK":24,"CLOSE":25,"OPEN_INVERSE":26,"inverseAndProgram":27,"INVERSE":28,"OPEN_ENDBLOCK":29,"path":30,"OPEN":31,"OPEN_UNESCAPED":32,"CLOSE_UNESCAPED":33,"OPEN_PARTIAL":34,"partialName":35,"param":36,"partial_option0":37,"partial_option1":38,"sexpr_repetition0":39,"sexpr_option0":40,"dataName":41,"STRING":42,"NUMBER":43,"BOOLEAN":44,"OPEN_SEXPR":45,"CLOSE_SEXPR":46,"hash":47,"hash_repetition_plus0":48,"hashSegment":49,"ID":50,"EQUALS":51,"DATA":52,"pathSegments":53,"SEP":54,"$accept":0,"$end":1},
- terminals_: {2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},
- productions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],
- performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
-
- var $0 = $$.length - 1;
- switch (yystate) {
- case 1: yy.prepareProgram($$[$0-1].statements, true); return $$[$0-1];
- break;
- case 2:this.$ = new yy.ProgramNode(yy.prepareProgram($$[$0]), {}, this._$);
- break;
- case 3:this.$ = $$[$0];
- break;
- case 4:this.$ = $$[$0];
- break;
- case 5:this.$ = $$[$0];
- break;
- case 6:this.$ = $$[$0];
- break;
- case 7:this.$ = new yy.ContentNode($$[$0], this._$);
- break;
- case 8:this.$ = new yy.CommentNode($$[$0], this._$);
- break;
- case 9:this.$ = new yy.RawBlockNode($$[$0-2], $$[$0-1], $$[$0], this._$);
- break;
- case 10:this.$ = new yy.MustacheNode($$[$0-1], null, '', '', this._$);
- break;
- case 11:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);
- break;
- case 12:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);
- break;
- case 13:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);
- break;
- case 14:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);
- break;
- case 15:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };
- break;
- case 16:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};
- break;
- case 17:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);
- break;
- case 18:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], yy.stripFlags($$[$0-2], $$[$0]), this._$);
- break;
- case 19:this.$ = new yy.PartialNode($$[$0-3], $$[$0-2], $$[$0-1], yy.stripFlags($$[$0-4], $$[$0]), this._$);
- break;
- case 20:this.$ = new yy.PartialNode($$[$0-2], undefined, $$[$0-1], yy.stripFlags($$[$0-3], $$[$0]), this._$);
- break;
- case 21:this.$ = new yy.SexprNode([$$[$0-2]].concat($$[$0-1]), $$[$0], this._$);
- break;
- case 22:this.$ = new yy.SexprNode([$$[$0]], null, this._$);
- break;
- case 23:this.$ = $$[$0];
- break;
- case 24:this.$ = new yy.StringNode($$[$0], this._$);
- break;
- case 25:this.$ = new yy.NumberNode($$[$0], this._$);
- break;
- case 26:this.$ = new yy.BooleanNode($$[$0], this._$);
- break;
- case 27:this.$ = $$[$0];
- break;
- case 28:$$[$0-1].isHelper = true; this.$ = $$[$0-1];
- break;
- case 29:this.$ = new yy.HashNode($$[$0], this._$);
- break;
- case 30:this.$ = [$$[$0-2], $$[$0]];
- break;
- case 31:this.$ = new yy.PartialNameNode($$[$0], this._$);
- break;
- case 32:this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0], this._$), this._$);
- break;
- case 33:this.$ = new yy.PartialNameNode(new yy.NumberNode($$[$0], this._$));
- break;
- case 34:this.$ = new yy.DataNode($$[$0], this._$);
- break;
- case 35:this.$ = new yy.IdNode($$[$0], this._$);
- break;
- case 36: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2];
- break;
- case 37:this.$ = [{part: $$[$0]}];
- break;
- case 38:this.$ = [];
- break;
- case 39:$$[$0-1].push($$[$0]);
- break;
- case 48:this.$ = [];
- break;
- case 49:$$[$0-1].push($$[$0]);
- break;
- case 52:this.$ = [$$[$0]];
- break;
- case 53:$$[$0-1].push($$[$0]);
- break;
- }
- },
- table: [{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],
- defaultActions: {4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},
- parseError: function parseError(str, hash) {
- throw new Error(str);
- },
- parse: function parse(input) {
- var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
- this.lexer.setInput(input);
- this.lexer.yy = this.yy;
- this.yy.lexer = this.lexer;
- this.yy.parser = this;
- if (typeof this.lexer.yylloc == "undefined")
- this.lexer.yylloc = {};
- var yyloc = this.lexer.yylloc;
- lstack.push(yyloc);
- var ranges = this.lexer.options && this.lexer.options.ranges;
- if (typeof this.yy.parseError === "function")
- this.parseError = this.yy.parseError;
- function popStack(n) {
- stack.length = stack.length - 2 * n;
- vstack.length = vstack.length - n;
- lstack.length = lstack.length - n;
- }
- function lex() {
- var token;
- token = self.lexer.lex() || 1;
- if (typeof token !== "number") {
- token = self.symbols_[token] || token;
- }
- return token;
- }
- var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
- while (true) {
- state = stack[stack.length - 1];
- if (this.defaultActions[state]) {
- action = this.defaultActions[state];
- } else {
- if (symbol === null || typeof symbol == "undefined") {
- symbol = lex();
- }
- action = table[state] && table[state][symbol];
- }
- if (typeof action === "undefined" || !action.length || !action[0]) {
- var errStr = "";
- if (!recovering) {
- expected = [];
- for (p in table[state])
- if (this.terminals_[p] && p > 2) {
- expected.push("'" + this.terminals_[p] + "'");
- }
- if (this.lexer.showPosition) {
- errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
- } else {
- errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
- }
- this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
- }
- }
- if (action[0] instanceof Array && action.length > 1) {
- throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
- }
- switch (action[0]) {
- case 1:
- stack.push(symbol);
- vstack.push(this.lexer.yytext);
- lstack.push(this.lexer.yylloc);
- stack.push(action[1]);
- symbol = null;
- if (!preErrorSymbol) {
- yyleng = this.lexer.yyleng;
- yytext = this.lexer.yytext;
- yylineno = this.lexer.yylineno;
- yyloc = this.lexer.yylloc;
- if (recovering > 0)
- recovering--;
- } else {
- symbol = preErrorSymbol;
- preErrorSymbol = null;
- }
- break;
- case 2:
- len = this.productions_[action[1]][1];
- yyval.$ = vstack[vstack.length - len];
- yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
- if (ranges) {
- yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
- }
- r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
- if (typeof r !== "undefined") {
- return r;
- }
- if (len) {
- stack = stack.slice(0, -1 * len * 2);
- vstack = vstack.slice(0, -1 * len);
- lstack = lstack.slice(0, -1 * len);
- }
- stack.push(this.productions_[action[1]][0]);
- vstack.push(yyval.$);
- lstack.push(yyval._$);
- newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
- stack.push(newState);
- break;
- case 3:
- return true;
- }
- }
- return true;
- }
- };
- /* Jison generated lexer */
- var lexer = (function(){
- var lexer = ({EOF:1,
- parseError:function parseError(str, hash) {
- if (this.yy.parser) {
- this.yy.parser.parseError(str, hash);
- } else {
- throw new Error(str);
- }
- },
- setInput:function (input) {
- this._input = input;
- this._more = this._less = this.done = false;
- this.yylineno = this.yyleng = 0;
- this.yytext = this.matched = this.match = '';
- this.conditionStack = ['INITIAL'];
- this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
- if (this.options.ranges) this.yylloc.range = [0,0];
- this.offset = 0;
- return this;
- },
- input:function () {
- var ch = this._input[0];
- this.yytext += ch;
- this.yyleng++;
- this.offset++;
- this.match += ch;
- this.matched += ch;
- var lines = ch.match(/(?:\r\n?|\n).*/g);
- if (lines) {
- this.yylineno++;
- this.yylloc.last_line++;
- } else {
- this.yylloc.last_column++;
- }
- if (this.options.ranges) this.yylloc.range[1]++;
-
- this._input = this._input.slice(1);
- return ch;
- },
- unput:function (ch) {
- var len = ch.length;
- var lines = ch.split(/(?:\r\n?|\n)/g);
-
- this._input = ch + this._input;
- this.yytext = this.yytext.substr(0, this.yytext.length-len-1);
- //this.yyleng -= len;
- this.offset -= len;
- var oldLines = this.match.split(/(?:\r\n?|\n)/g);
- this.match = this.match.substr(0, this.match.length-1);
- this.matched = this.matched.substr(0, this.matched.length-1);
-
- if (lines.length-1) this.yylineno -= lines.length-1;
- var r = this.yylloc.range;
-
- this.yylloc = {first_line: this.yylloc.first_line,
- last_line: this.yylineno+1,
- first_column: this.yylloc.first_column,
- last_column: lines ?
- (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:
- this.yylloc.first_column - len
- };
-
- if (this.options.ranges) {
- this.yylloc.range = [r[0], r[0] + this.yyleng - len];
- }
- return this;
- },
- more:function () {
- this._more = true;
- return this;
- },
- less:function (n) {
- this.unput(this.match.slice(n));
- },
- pastInput:function () {
- var past = this.matched.substr(0, this.matched.length - this.match.length);
- return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
- },
- upcomingInput:function () {
- var next = this.match;
- if (next.length < 20) {
- next += this._input.substr(0, 20-next.length);
- }
- return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
- },
- showPosition:function () {
- var pre = this.pastInput();
- var c = new Array(pre.length + 1).join("-");
- return pre + this.upcomingInput() + "\n" + c+"^";
- },
- next:function () {
- if (this.done) {
- return this.EOF;
- }
- if (!this._input) this.done = true;
-
- var token,
- match,
- tempMatch,
- index,
- col,
- lines;
- if (!this._more) {
- this.yytext = '';
- this.match = '';
- }
- var rules = this._currentRules();
- for (var i=0;i < rules.length; i++) {
- tempMatch = this._input.match(this.rules[rules[i]]);
- if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
- match = tempMatch;
- index = i;
- if (!this.options.flex) break;
- }
- }
- if (match) {
- lines = match[0].match(/(?:\r\n?|\n).*/g);
- if (lines) this.yylineno += lines.length;
- this.yylloc = {first_line: this.yylloc.last_line,
- last_line: this.yylineno+1,
- first_column: this.yylloc.last_column,
- last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length};
- this.yytext += match[0];
- this.match += match[0];
- this.matches = match;
- this.yyleng = this.yytext.length;
- if (this.options.ranges) {
- this.yylloc.range = [this.offset, this.offset += this.yyleng];
- }
- this._more = false;
- this._input = this._input.slice(match[0].length);
- this.matched += match[0];
- token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
- if (this.done && this._input) this.done = false;
- if (token) return token;
- else return;
- }
- if (this._input === "") {
- return this.EOF;
- } else {
- return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
- {text: "", token: null, line: this.yylineno});
- }
- },
- lex:function lex() {
- var r = this.next();
- if (typeof r !== 'undefined') {
- return r;
- } else {
- return this.lex();
- }
- },
- begin:function begin(condition) {
- this.conditionStack.push(condition);
- },
- popState:function popState() {
- return this.conditionStack.pop();
- },
- _currentRules:function _currentRules() {
- return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
- },
- topState:function () {
- return this.conditionStack[this.conditionStack.length-2];
- },
- pushState:function begin(condition) {
- this.begin(condition);
- }});
- lexer.options = {};
- lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
-
-
- function strip(start, end) {
- return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng-end);
- }
-
-
- var YYSTATE=YY_START
- switch($avoiding_name_collisions) {
- case 0:
- if(yy_.yytext.slice(-2) === "\\\\") {
- strip(0,1);
- this.begin("mu");
- } else if(yy_.yytext.slice(-1) === "\\") {
- strip(0,1);
- this.begin("emu");
- } else {
- this.begin("mu");
- }
- if(yy_.yytext) return 12;
-
- break;
- case 1:return 12;
- break;
- case 2:
- this.popState();
- return 12;
-
- break;
- case 3:
- yy_.yytext = yy_.yytext.substr(5, yy_.yyleng-9);
- this.popState();
- return 15;
-
- break;
- case 4: return 12;
- break;
- case 5:strip(0,4); this.popState(); return 13;
- break;
- case 6:return 45;
- break;
- case 7:return 46;
- break;
- case 8: return 16;
- break;
- case 9:
- this.popState();
- this.begin('raw');
- return 18;
-
- break;
- case 10:return 34;
- break;
- case 11:return 24;
- break;
- case 12:return 29;
- break;
- case 13:this.popState(); return 28;
- break;
- case 14:this.popState(); return 28;
- break;
- case 15:return 26;
- break;
- case 16:return 26;
- break;
- case 17:return 32;
- break;
- case 18:return 31;
- break;
- case 19:this.popState(); this.begin('com');
- break;
- case 20:strip(3,5); this.popState(); return 13;
- break;
- case 21:return 31;
- break;
- case 22:return 51;
- break;
- case 23:return 50;
- break;
- case 24:return 50;
- break;
- case 25:return 54;
- break;
- case 26:// ignore whitespace
- break;
- case 27:this.popState(); return 33;
- break;
- case 28:this.popState(); return 25;
- break;
- case 29:yy_.yytext = strip(1,2).replace(/\\"/g,'"'); return 42;
- break;
- case 30:yy_.yytext = strip(1,2).replace(/\\'/g,"'"); return 42;
- break;
- case 31:return 52;
- break;
- case 32:return 44;
- break;
- case 33:return 44;
- break;
- case 34:return 43;
- break;
- case 35:return 50;
- break;
- case 36:yy_.yytext = strip(1,2); return 50;
- break;
- case 37:return 'INVALID';
- break;
- case 38:return 5;
- break;
- }
- };
- lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/];
- lexer.conditions = {"mu":{"rules":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"inclusive":false},"emu":{"rules":[2],"inclusive":false},"com":{"rules":[5],"inclusive":false},"raw":{"rules":[3,4],"inclusive":false},"INITIAL":{"rules":[0,1,38],"inclusive":true}};
- return lexer;})()
- parser.lexer = lexer;
- function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
- return new Parser;
- })();__exports__ = handlebars;
- /* jshint ignore:end */
- return __exports__;
-})();
-
-// handlebars/compiler/helpers.js
-var __module10__ = (function(__dependency1__) {
- "use strict";
- var __exports__ = {};
- var Exception = __dependency1__;
-
- function stripFlags(open, close) {
- return {
- left: open.charAt(2) === '~',
- right: close.charAt(close.length-3) === '~'
- };
- }
-
- __exports__.stripFlags = stripFlags;
- function prepareBlock(mustache, program, inverseAndProgram, close, inverted, locInfo) {
- /*jshint -W040 */
- if (mustache.sexpr.id.original !== close.path.original) {
- throw new Exception(mustache.sexpr.id.original + ' doesn\'t match ' + close.path.original, mustache);
- }
-
- var inverse = inverseAndProgram && inverseAndProgram.program;
-
- var strip = {
- left: mustache.strip.left,
- right: close.strip.right,
-
- // Determine the standalone candiacy. Basically flag our content as being possibly standalone
- // so our parent can determine if we actually are standalone
- openStandalone: isNextWhitespace(program.statements),
- closeStandalone: isPrevWhitespace((inverse || program).statements)
- };
-
- if (mustache.strip.right) {
- omitRight(program.statements, null, true);
- }
-
- if (inverse) {
- var inverseStrip = inverseAndProgram.strip;
-
- if (inverseStrip.left) {
- omitLeft(program.statements, null, true);
- }
- if (inverseStrip.right) {
- omitRight(inverse.statements, null, true);
- }
- if (close.strip.left) {
- omitLeft(inverse.statements, null, true);
- }
-
- // Find standalone else statments
- if (isPrevWhitespace(program.statements)
- && isNextWhitespace(inverse.statements)) {
-
- omitLeft(program.statements);
- omitRight(inverse.statements);
- }
- } else {
- if (close.strip.left) {
- omitLeft(program.statements, null, true);
- }
- }
-
- if (inverted) {
- return new this.BlockNode(mustache, inverse, program, strip, locInfo);
- } else {
- return new this.BlockNode(mustache, program, inverse, strip, locInfo);
- }
- }
-
- __exports__.prepareBlock = prepareBlock;
- function prepareProgram(statements, isRoot) {
- for (var i = 0, l = statements.length; i < l; i++) {
- var current = statements[i],
- strip = current.strip;
-
- if (!strip) {
- continue;
- }
-
- var _isPrevWhitespace = isPrevWhitespace(statements, i, isRoot, current.type === 'partial'),
- _isNextWhitespace = isNextWhitespace(statements, i, isRoot),
-
- openStandalone = strip.openStandalone && _isPrevWhitespace,
- closeStandalone = strip.closeStandalone && _isNextWhitespace,
- inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
-
- if (strip.right) {
- omitRight(statements, i, true);
- }
- if (strip.left) {
- omitLeft(statements, i, true);
- }
-
- if (inlineStandalone) {
- omitRight(statements, i);
-
- if (omitLeft(statements, i)) {
- // If we are on a standalone node, save the indent info for partials
- if (current.type === 'partial') {
- current.indent = (/([ \t]+$)/).exec(statements[i-1].original) ? RegExp.$1 : '';
- }
- }
- }
- if (openStandalone) {
- omitRight((current.program || current.inverse).statements);
-
- // Strip out the previous content node if it's whitespace only
- omitLeft(statements, i);
- }
- if (closeStandalone) {
- // Always strip the next node
- omitRight(statements, i);
-
- omitLeft((current.inverse || current.program).statements);
- }
- }
-
- return statements;
- }
-
- __exports__.prepareProgram = prepareProgram;function isPrevWhitespace(statements, i, isRoot) {
- if (i === undefined) {
- i = statements.length;
- }
-
- // Nodes that end with newlines are considered whitespace (but are special
- // cased for strip operations)
- var prev = statements[i-1],
- sibling = statements[i-2];
- if (!prev) {
- return isRoot;
- }
-
- if (prev.type === 'content') {
- return (sibling || !isRoot ? (/\r?\n\s*?$/) : (/(^|\r?\n)\s*?$/)).test(prev.original);
- }
- }
- function isNextWhitespace(statements, i, isRoot) {
- if (i === undefined) {
- i = -1;
- }
-
- var next = statements[i+1],
- sibling = statements[i+2];
- if (!next) {
- return isRoot;
- }
-
- if (next.type === 'content') {
- return (sibling || !isRoot ? (/^\s*?\r?\n/) : (/^\s*?(\r?\n|$)/)).test(next.original);
- }
- }
-
- // Marks the node to the right of the position as omitted.
- // I.e. {{foo}}' ' will mark the ' ' node as omitted.
- //
- // If i is undefined, then the first child will be marked as such.
- //
- // If mulitple is truthy then all whitespace will be stripped out until non-whitespace
- // content is met.
- function omitRight(statements, i, multiple) {
- var current = statements[i == null ? 0 : i + 1];
- if (!current || current.type !== 'content' || (!multiple && current.rightStripped)) {
- return;
- }
-
- var original = current.string;
- current.string = current.string.replace(multiple ? (/^\s+/) : (/^[ \t]*\r?\n?/), '');
- current.rightStripped = current.string !== original;
- }
-
- // Marks the node to the left of the position as omitted.
- // I.e. ' '{{foo}} will mark the ' ' node as omitted.
- //
- // If i is undefined then the last child will be marked as such.
- //
- // If mulitple is truthy then all whitespace will be stripped out until non-whitespace
- // content is met.
- function omitLeft(statements, i, multiple) {
- var current = statements[i == null ? statements.length - 1 : i - 1];
- if (!current || current.type !== 'content' || (!multiple && current.leftStripped)) {
- return;
- }
-
- // We omit the last node if it's whitespace only and not preceeded by a non-content node.
- var original = current.string;
- current.string = current.string.replace(multiple ? (/\s+$/) : (/[ \t]+$/), '');
- current.leftStripped = current.string !== original;
- return current.leftStripped;
- }
- return __exports__;
-})(__module5__);
-
-// handlebars/compiler/base.js
-var __module8__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
- "use strict";
- var __exports__ = {};
- var parser = __dependency1__;
- var AST = __dependency2__;
- var Helpers = __dependency3__;
- var extend = __dependency4__.extend;
-
- __exports__.parser = parser;
-
- var yy = {};
- extend(yy, Helpers, AST);
-
- function parse(input) {
- // Just return if an already-compile AST was passed in.
- if (input.constructor === AST.ProgramNode) { return input; }
-
- parser.yy = yy;
-
- return parser.parse(input);
- }
-
- __exports__.parse = parse;
- return __exports__;
-})(__module9__, __module7__, __module10__, __module3__);
-
-// handlebars/compiler/compiler.js
-var __module11__ = (function(__dependency1__, __dependency2__) {
- "use strict";
- var __exports__ = {};
- var Exception = __dependency1__;
- var isArray = __dependency2__.isArray;
-
- var slice = [].slice;
-
- function Compiler() {}
-
- __exports__.Compiler = Compiler;// the foundHelper register will disambiguate helper lookup from finding a
- // function in a context. This is necessary for mustache compatibility, which
- // requires that context functions in blocks are evaluated by blockHelperMissing,
- // and then proceed as if the resulting value was provided to blockHelperMissing.
-
- Compiler.prototype = {
- compiler: Compiler,
-
- equals: function(other) {
- var len = this.opcodes.length;
- if (other.opcodes.length !== len) {
- return false;
- }
-
- for (var i = 0; i < len; i++) {
- var opcode = this.opcodes[i],
- otherOpcode = other.opcodes[i];
- if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {
- return false;
- }
- }
-
- // We know that length is the same between the two arrays because they are directly tied
- // to the opcode behavior above.
- len = this.children.length;
- for (i = 0; i < len; i++) {
- if (!this.children[i].equals(other.children[i])) {
- return false;
- }
- }
-
- return true;
- },
-
- guid: 0,
-
- compile: function(program, options) {
- this.opcodes = [];
- this.children = [];
- this.depths = {list: []};
- this.options = options;
- this.stringParams = options.stringParams;
- this.trackIds = options.trackIds;
-
- // These changes will propagate to the other compiler components
- var knownHelpers = this.options.knownHelpers;
- this.options.knownHelpers = {
- 'helperMissing': true,
- 'blockHelperMissing': true,
- 'each': true,
- 'if': true,
- 'unless': true,
- 'with': true,
- 'log': true,
- 'lookup': true
- };
- if (knownHelpers) {
- for (var name in knownHelpers) {
- this.options.knownHelpers[name] = knownHelpers[name];
- }
- }
-
- return this.accept(program);
- },
-
- accept: function(node) {
- return this[node.type](node);
- },
-
- program: function(program) {
- var statements = program.statements;
-
- for(var i=0, l=statements.length; i 0) {
- varDeclarations += ", " + locals.join(", ");
- }
-
- // Generate minimizer alias mappings
- for (var alias in this.aliases) {
- if (this.aliases.hasOwnProperty(alias)) {
- varDeclarations += ', ' + alias + '=' + this.aliases[alias];
- }
- }
-
- var params = ["depth0", "helpers", "partials", "data"];
-
- if (this.useDepths) {
- params.push('depths');
- }
-
- // Perform a second pass over the output to merge content when possible
- var source = this.mergeSource(varDeclarations);
-
- if (asObject) {
- params.push(source);
-
- return Function.apply(this, params);
- } else {
- return 'function(' + params.join(',') + ') {\n ' + source + '}';
- }
- },
- mergeSource: function(varDeclarations) {
- var source = '',
- buffer,
- appendOnly = !this.forceBuffer,
- appendFirst;
-
- for (var i = 0, len = this.source.length; i < len; i++) {
- var line = this.source[i];
- if (line.appendToBuffer) {
- if (buffer) {
- buffer = buffer + '\n + ' + line.content;
- } else {
- buffer = line.content;
- }
- } else {
- if (buffer) {
- if (!source) {
- appendFirst = true;
- source = buffer + ';\n ';
- } else {
- source += 'buffer += ' + buffer + ';\n ';
- }
- buffer = undefined;
- }
- source += line + '\n ';
-
- if (!this.environment.isSimple) {
- appendOnly = false;
- }
- }
- }
-
- if (appendOnly) {
- if (buffer || !source) {
- source += 'return ' + (buffer || '""') + ';\n';
- }
- } else {
- varDeclarations += ", buffer = " + (appendFirst ? '' : this.initializeBuffer());
- if (buffer) {
- source += 'return buffer + ' + buffer + ';\n';
- } else {
- source += 'return buffer;\n';
- }
- }
-
- if (varDeclarations) {
- source = 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n ') + source;
- }
-
- return source;
- },
-
- // [blockValue]
- //
- // On stack, before: hash, inverse, program, value
- // On stack, after: return value of blockHelperMissing
- //
- // The purpose of this opcode is to take a block of the form
- // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
- // replace it on the stack with the result of properly
- // invoking blockHelperMissing.
- blockValue: function(name) {
- this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
- var params = [this.contextName(0)];
- this.setupParams(name, 0, params);
-
- var blockName = this.popStack();
- params.splice(1, 0, blockName);
-
- this.push('blockHelperMissing.call(' + params.join(', ') + ')');
- },
-
- // [ambiguousBlockValue]
- //
- // On stack, before: hash, inverse, program, value
- // Compiler value, before: lastHelper=value of last found helper, if any
- // On stack, after, if no lastHelper: same as [blockValue]
- // On stack, after, if lastHelper: value
- ambiguousBlockValue: function() {
- this.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
- // We're being a bit cheeky and reusing the options value from the prior exec
- var params = [this.contextName(0)];
- this.setupParams('', 0, params, true);
-
- this.flushInline();
-
- var current = this.topStack();
- params.splice(1, 0, current);
-
- this.pushSource("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");
- },
-
- // [appendContent]
- //
- // On stack, before: ...
- // On stack, after: ...
- //
- // Appends the string value of `content` to the current buffer
- appendContent: function(content) {
- if (this.pendingContent) {
- content = this.pendingContent + content;
- }
-
- this.pendingContent = content;
- },
-
- // [append]
- //
- // On stack, before: value, ...
- // On stack, after: ...
- //
- // Coerces `value` to a String and appends it to the current buffer.
- //
- // If `value` is truthy, or 0, it is coerced into a string and appended
- // Otherwise, the empty string is appended
- append: function() {
- // Force anything that is inlined onto the stack so we don't have duplication
- // when we examine local
- this.flushInline();
- var local = this.popStack();
- this.pushSource('if (' + local + ' != null) { ' + this.appendToBuffer(local) + ' }');
- if (this.environment.isSimple) {
- this.pushSource("else { " + this.appendToBuffer("''") + " }");
- }
- },
-
- // [appendEscaped]
- //
- // On stack, before: value, ...
- // On stack, after: ...
- //
- // Escape `value` and append it to the buffer
- appendEscaped: function() {
- this.aliases.escapeExpression = 'this.escapeExpression';
-
- this.pushSource(this.appendToBuffer("escapeExpression(" + this.popStack() + ")"));
- },
-
- // [getContext]
- //
- // On stack, before: ...
- // On stack, after: ...
- // Compiler value, after: lastContext=depth
- //
- // Set the value of the `lastContext` compiler value to the depth
- getContext: function(depth) {
- this.lastContext = depth;
- },
-
- // [pushContext]
- //
- // On stack, before: ...
- // On stack, after: currentContext, ...
- //
- // Pushes the value of the current context onto the stack.
- pushContext: function() {
- this.pushStackLiteral(this.contextName(this.lastContext));
- },
-
- // [lookupOnContext]
- //
- // On stack, before: ...
- // On stack, after: currentContext[name], ...
- //
- // Looks up the value of `name` on the current context and pushes
- // it onto the stack.
- lookupOnContext: function(parts, falsy, scoped) {
- /*jshint -W083 */
- var i = 0,
- len = parts.length;
-
- if (!scoped && this.options.compat && !this.lastContext) {
- // The depthed query is expected to handle the undefined logic for the root level that
- // is implemented below, so we evaluate that directly in compat mode
- this.push(this.depthedLookup(parts[i++]));
- } else {
- this.pushContext();
- }
-
- for (; i < len; i++) {
- this.replaceStack(function(current) {
- var lookup = this.nameLookup(current, parts[i], 'context');
- // We want to ensure that zero and false are handled properly if the context (falsy flag)
- // needs to have the special handling for these values.
- if (!falsy) {
- return ' != null ? ' + lookup + ' : ' + current;
- } else {
- // Otherwise we can use generic falsy handling
- return ' && ' + lookup;
- }
- });
- }
- },
-
- // [lookupData]
- //
- // On stack, before: ...
- // On stack, after: data, ...
- //
- // Push the data lookup operator
- lookupData: function(depth, parts) {
- /*jshint -W083 */
- if (!depth) {
- this.pushStackLiteral('data');
- } else {
- this.pushStackLiteral('this.data(data, ' + depth + ')');
- }
-
- var len = parts.length;
- for (var i = 0; i < len; i++) {
- this.replaceStack(function(current) {
- return ' && ' + this.nameLookup(current, parts[i], 'data');
- });
- }
- },
-
- // [resolvePossibleLambda]
- //
- // On stack, before: value, ...
- // On stack, after: resolved value, ...
- //
- // If the `value` is a lambda, replace it on the stack by
- // the return value of the lambda
- resolvePossibleLambda: function() {
- this.aliases.lambda = 'this.lambda';
-
- this.push('lambda(' + this.popStack() + ', ' + this.contextName(0) + ')');
- },
-
- // [pushStringParam]
- //
- // On stack, before: ...
- // On stack, after: string, currentContext, ...
- //
- // This opcode is designed for use in string mode, which
- // provides the string value of a parameter along with its
- // depth rather than resolving it immediately.
- pushStringParam: function(string, type) {
- this.pushContext();
- this.pushString(type);
-
- // If it's a subexpression, the string result
- // will be pushed after this opcode.
- if (type !== 'sexpr') {
- if (typeof string === 'string') {
- this.pushString(string);
- } else {
- this.pushStackLiteral(string);
- }
- }
- },
-
- emptyHash: function() {
- this.pushStackLiteral('{}');
-
- if (this.trackIds) {
- this.push('{}'); // hashIds
- }
- if (this.stringParams) {
- this.push('{}'); // hashContexts
- this.push('{}'); // hashTypes
- }
- },
- pushHash: function() {
- if (this.hash) {
- this.hashes.push(this.hash);
- }
- this.hash = {values: [], types: [], contexts: [], ids: []};
- },
- popHash: function() {
- var hash = this.hash;
- this.hash = this.hashes.pop();
-
- if (this.trackIds) {
- this.push('{' + hash.ids.join(',') + '}');
- }
- if (this.stringParams) {
- this.push('{' + hash.contexts.join(',') + '}');
- this.push('{' + hash.types.join(',') + '}');
- }
-
- this.push('{\n ' + hash.values.join(',\n ') + '\n }');
- },
-
- // [pushString]
- //
- // On stack, before: ...
- // On stack, after: quotedString(string), ...
- //
- // Push a quoted version of `string` onto the stack
- pushString: function(string) {
- this.pushStackLiteral(this.quotedString(string));
- },
-
- // [push]
- //
- // On stack, before: ...
- // On stack, after: expr, ...
- //
- // Push an expression onto the stack
- push: function(expr) {
- this.inlineStack.push(expr);
- return expr;
- },
-
- // [pushLiteral]
- //
- // On stack, before: ...
- // On stack, after: value, ...
- //
- // Pushes a value onto the stack. This operation prevents
- // the compiler from creating a temporary variable to hold
- // it.
- pushLiteral: function(value) {
- this.pushStackLiteral(value);
- },
-
- // [pushProgram]
- //
- // On stack, before: ...
- // On stack, after: program(guid), ...
- //
- // Push a program expression onto the stack. This takes
- // a compile-time guid and converts it into a runtime-accessible
- // expression.
- pushProgram: function(guid) {
- if (guid != null) {
- this.pushStackLiteral(this.programExpression(guid));
- } else {
- this.pushStackLiteral(null);
- }
- },
-
- // [invokeHelper]
- //
- // On stack, before: hash, inverse, program, params..., ...
- // On stack, after: result of helper invocation
- //
- // Pops off the helper's parameters, invokes the helper,
- // and pushes the helper's return value onto the stack.
- //
- // If the helper is not found, `helperMissing` is called.
- invokeHelper: function(paramSize, name, isSimple) {
- this.aliases.helperMissing = 'helpers.helperMissing';
-
- var nonHelper = this.popStack();
- var helper = this.setupHelper(paramSize, name);
-
- var lookup = (isSimple ? helper.name + ' || ' : '') + nonHelper + ' || helperMissing';
- this.push('((' + lookup + ').call(' + helper.callParams + '))');
- },
-
- // [invokeKnownHelper]
- //
- // On stack, before: hash, inverse, program, params..., ...
- // On stack, after: result of helper invocation
- //
- // This operation is used when the helper is known to exist,
- // so a `helperMissing` fallback is not required.
- invokeKnownHelper: function(paramSize, name) {
- var helper = this.setupHelper(paramSize, name);
- this.push(helper.name + ".call(" + helper.callParams + ")");
- },
-
- // [invokeAmbiguous]
- //
- // On stack, before: hash, inverse, program, params..., ...
- // On stack, after: result of disambiguation
- //
- // This operation is used when an expression like `{{foo}}`
- // is provided, but we don't know at compile-time whether it
- // is a helper or a path.
- //
- // This operation emits more code than the other options,
- // and can be avoided by passing the `knownHelpers` and
- // `knownHelpersOnly` flags at compile-time.
- invokeAmbiguous: function(name, helperCall) {
- this.aliases.functionType = '"function"';
- this.aliases.helperMissing = 'helpers.helperMissing';
- this.useRegister('helper');
-
- var nonHelper = this.popStack();
-
- this.emptyHash();
- var helper = this.setupHelper(0, name, helperCall);
-
- var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
-
- this.push(
- '((helper = (helper = ' + helperName + ' || ' + nonHelper + ') != null ? helper : helperMissing'
- + (helper.paramsInit ? '),(' + helper.paramsInit : '') + '),'
- + '(typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper))');
- },
-
- // [invokePartial]
- //
- // On stack, before: context, ...
- // On stack after: result of partial invocation
- //
- // This operation pops off a context, invokes a partial with that context,
- // and pushes the result of the invocation back.
- invokePartial: function(name, indent) {
- var params = [this.nameLookup('partials', name, 'partial'), "'" + indent + "'", "'" + name + "'", this.popStack(), this.popStack(), "helpers", "partials"];
-
- if (this.options.data) {
- params.push("data");
- } else if (this.options.compat) {
- params.push('undefined');
- }
- if (this.options.compat) {
- params.push('depths');
- }
-
- this.push("this.invokePartial(" + params.join(", ") + ")");
- },
-
- // [assignToHash]
- //
- // On stack, before: value, ..., hash, ...
- // On stack, after: ..., hash, ...
- //
- // Pops a value off the stack and assigns it to the current hash
- assignToHash: function(key) {
- var value = this.popStack(),
- context,
- type,
- id;
-
- if (this.trackIds) {
- id = this.popStack();
- }
- if (this.stringParams) {
- type = this.popStack();
- context = this.popStack();
- }
-
- var hash = this.hash;
- if (context) {
- hash.contexts.push("'" + key + "': " + context);
- }
- if (type) {
- hash.types.push("'" + key + "': " + type);
- }
- if (id) {
- hash.ids.push("'" + key + "': " + id);
- }
- hash.values.push("'" + key + "': (" + value + ")");
- },
-
- pushId: function(type, name) {
- if (type === 'ID' || type === 'DATA') {
- this.pushString(name);
- } else if (type === 'sexpr') {
- this.pushStackLiteral('true');
- } else {
- this.pushStackLiteral('null');
- }
- },
-
- // HELPERS
-
- compiler: JavaScriptCompiler,
-
- compileChildren: function(environment, options) {
- var children = environment.children, child, compiler;
-
- for(var i=0, l=children.length; i this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }
- return this.topStackName();
- },
- topStackName: function() {
- return "stack" + this.stackSlot;
- },
- flushInline: function() {
- var inlineStack = this.inlineStack;
- if (inlineStack.length) {
- this.inlineStack = [];
- for (var i = 0, len = inlineStack.length; i < len; i++) {
- var entry = inlineStack[i];
- if (entry instanceof Literal) {
- this.compileStack.push(entry);
- } else {
- this.pushStack(entry);
- }
- }
- }
- },
- isInline: function() {
- return this.inlineStack.length;
- },
-
- popStack: function(wrapped) {
- var inline = this.isInline(),
- item = (inline ? this.inlineStack : this.compileStack).pop();
-
- if (!wrapped && (item instanceof Literal)) {
- return item.value;
- } else {
- if (!inline) {
- /* istanbul ignore next */
- if (!this.stackSlot) {
- throw new Exception('Invalid stack pop');
- }
- this.stackSlot--;
- }
- return item;
- }
- },
-
- topStack: function() {
- var stack = (this.isInline() ? this.inlineStack : this.compileStack),
- item = stack[stack.length - 1];
-
- if (item instanceof Literal) {
- return item.value;
- } else {
- return item;
- }
- },
-
- contextName: function(context) {
- if (this.useDepths && context) {
- return 'depths[' + context + ']';
- } else {
- return 'depth' + context;
- }
- },
-
- quotedString: function(str) {
- return '"' + str
- .replace(/\\/g, '\\\\')
- .replace(/"/g, '\\"')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
- .replace(/\u2029/g, '\\u2029') + '"';
- },
-
- objectLiteral: function(obj) {
- var pairs = [];
-
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- pairs.push(this.quotedString(key) + ':' + obj[key]);
- }
- }
-
- return '{' + pairs.join(',') + '}';
- },
-
- setupHelper: function(paramSize, name, blockHelper) {
- var params = [],
- paramsInit = this.setupParams(name, paramSize, params, blockHelper);
- var foundHelper = this.nameLookup('helpers', name, 'helper');
-
- return {
- params: params,
- paramsInit: paramsInit,
- name: foundHelper,
- callParams: [this.contextName(0)].concat(params).join(", ")
- };
- },
-
- setupOptions: function(helper, paramSize, params) {
- var options = {}, contexts = [], types = [], ids = [], param, inverse, program;
-
- options.name = this.quotedString(helper);
- options.hash = this.popStack();
-
- if (this.trackIds) {
- options.hashIds = this.popStack();
- }
- if (this.stringParams) {
- options.hashTypes = this.popStack();
- options.hashContexts = this.popStack();
- }
-
- inverse = this.popStack();
- program = this.popStack();
-
- // Avoid setting fn and inverse if neither are set. This allows
- // helpers to do a check for `if (options.fn)`
- if (program || inverse) {
- if (!program) {
- program = 'this.noop';
- }
-
- if (!inverse) {
- inverse = 'this.noop';
- }
-
- options.fn = program;
- options.inverse = inverse;
- }
-
- // The parameters go on to the stack in order (making sure that they are evaluated in order)
- // so we need to pop them off the stack in reverse order
- var i = paramSize;
- while (i--) {
- param = this.popStack();
- params[i] = param;
-
- if (this.trackIds) {
- ids[i] = this.popStack();
- }
- if (this.stringParams) {
- types[i] = this.popStack();
- contexts[i] = this.popStack();
- }
- }
-
- if (this.trackIds) {
- options.ids = "[" + ids.join(",") + "]";
- }
- if (this.stringParams) {
- options.types = "[" + types.join(",") + "]";
- options.contexts = "[" + contexts.join(",") + "]";
- }
-
- if (this.options.data) {
- options.data = "data";
- }
-
- return options;
- },
-
- // the params and contexts arguments are passed in arrays
- // to fill in
- setupParams: function(helperName, paramSize, params, useRegister) {
- var options = this.objectLiteral(this.setupOptions(helperName, paramSize, params));
-
- if (useRegister) {
- this.useRegister('options');
- params.push('options');
- return 'options=' + options;
- } else {
- params.push(options);
- return '';
- }
- }
- };
-
- var reservedWords = (
- "break else new var" +
- " case finally return void" +
- " catch for switch while" +
- " continue function this with" +
- " default if throw" +
- " delete in try" +
- " do instanceof typeof" +
- " abstract enum int short" +
- " boolean export interface static" +
- " byte extends long super" +
- " char final native synchronized" +
- " class float package throws" +
- " const goto private transient" +
- " debugger implements protected volatile" +
- " double import public let yield"
- ).split(" ");
-
- var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
-
- for(var i=0, l=reservedWords.length; i */
-
-//
-// Stub out `require` in rhino
-//
-function require(arg) {
- var split = arg.split('/');
- var resultModule = split.length == 1 ? less.modules[split[0]] : less[split[1]];
- if (!resultModule) {
- throw {message: "Cannot find module '" + arg + "'"};
- }
- return resultModule;
-}
-
-
-if (typeof(window) === 'undefined') {
- less = {}
-}
-else {
- less = window.less = {}
-}
-tree = less.tree = {};
-less.mode = 'rhino';
-
-(function () {
-
- console = function () {
- function doLog(out) {
- return function (a) {
- //TODO: for some reason loging dosn't work,fix later
- }
- }
-
- return {
- log: doLog(log.info),
- info: doLog(log.info),
- error: doLog(log.error),
- warn: doLog(log.warn)
- };
- }();
-
- less.modules = {};
-
- less.modules.path = {
- join: function () {
- var parts = [];
- for (i in arguments) {
- parts = parts.concat(arguments[i].split(/\/|\\/));
- }
- var result = [];
- for (i in parts) {
- var part = parts[i];
- if (part === '..' && result.length > 0 && result[result.length - 1] !== '..') {
- result.pop();
- } else if (part === '' && result.length > 0) {
- // skip
- } else if (part !== '.') {
- if (part.slice(-1) === '\\' || part.slice(-1) === '/') {
- part = part.slice(0, -1);
- }
- result.push(part);
- }
- }
- return result.join('/');
- },
- dirname: function (p) {
- var path = p.split('/');
- path.pop();
- return path.join('/');
- },
- basename: function (p, ext) {
- var base = p.split('/').pop();
- if (ext) {
- var index = base.lastIndexOf(ext);
- if (base.length === index + ext.length) {
- base = base.substr(0, index);
- }
- }
- return base;
- },
- extname: function (p) {
- var index = p.lastIndexOf('.');
- return index > 0 ? p.substring(index) : '';
- }
- };
-
- less.modules.fs = {
- readFileSync: function (name) {
- // read a file into a byte array
- var file = new java.io.File(name);
- new Log('xxxxxxxx').info(file.getCanonicalPath());
- var stream = new java.io.FileInputStream(file);
- var buffer = [];
- var c;
- while ((c = stream.read()) != -1) {
- buffer.push(c);
- }
- stream.close();
- return {
- length: buffer.length,
- toString: function (enc) {
- if (enc === 'base64') {
- return encodeBase64Bytes(buffer);
- } else if (enc) {
- return java.lang.String["(byte[],java.lang.String)"](buffer, enc);
- } else {
- return java.lang.String["(byte[])"](buffer);
- }
- }
- };
- }
- };
-
- less.encoder = {
- encodeBase64: function (str) {
- return encodeBase64String(str);
- }
- };
-
- // ---------------------------------------------------------------------------------------------
- // private helper functions
- // ---------------------------------------------------------------------------------------------
-
- function encodeBase64Bytes(bytes) {
- // requires at least a JRE Platform 6 (or JAXB 1.0 on the classpath)
- return javax.xml.bind.DatatypeConverter.printBase64Binary(bytes)
- }
-
- function encodeBase64String(str) {
- return encodeBase64Bytes(new java.lang.String(str).getBytes());
- }
-
-})();
-
-var less, tree;
-
-// Node.js does not have a header file added which defines less
-if (less === undefined) {
- less = exports;
- tree = require('./tree');
- less.mode = 'node';
-}
-//
-// less.js - parser
-//
-// A relatively straight-forward predictive parser.
-// There is no tokenization/lexing stage, the input is parsed
-// in one sweep.
-//
-// To make the parser fast enough to run in the browser, several
-// optimization had to be made:
-//
-// - Matching and slicing on a huge input is often cause of slowdowns.
-// The solution is to chunkify the input into smaller strings.
-// The chunks are stored in the `chunks` var,
-// `j` holds the current chunk index, and `currentPos` holds
-// the index of the current chunk in relation to `input`.
-// This gives us an almost 4x speed-up.
-//
-// - In many cases, we don't need to match individual tokens;
-// for example, if a value doesn't hold any variables, operations
-// or dynamic references, the parser can effectively 'skip' it,
-// treating it as a literal.
-// An example would be '1px solid #000' - which evaluates to itself,
-// we don't need to know what the individual components are.
-// The drawback, of course is that you don't get the benefits of
-// syntax-checking on the CSS. This gives us a 50% speed-up in the parser,
-// and a smaller speed-up in the code-gen.
-//
-//
-// Token matching is done with the `$` function, which either takes
-// a terminal string or regexp, or a non-terminal function to call.
-// It also takes care of moving all the indices forwards.
-//
-//
-less.Parser = function Parser(env) {
- var input, // LeSS input string
- i, // current index in `input`
- j, // current chunk
- saveStack = [], // holds state for backtracking
- furthest, // furthest index the parser has gone to
- chunks, // chunkified input
- current, // current chunk
- currentPos, // index of current chunk, in `input`
- parser,
- parsers,
- rootFilename = env && env.filename;
-
- // Top parser on an import tree must be sure there is one "env"
- // which will then be passed around by reference.
- if (!(env instanceof tree.parseEnv)) {
- env = new tree.parseEnv(env);
- }
-
- var imports = this.imports = {
- paths: env.paths || [], // Search paths, when importing
- queue: [], // Files which haven't been imported yet
- files: env.files, // Holds the imported parse trees
- contents: env.contents, // Holds the imported file contents
- contentsIgnoredChars: env.contentsIgnoredChars, // lines inserted, not in the original less
- mime: env.mime, // MIME type of .less files
- error: null, // Error in parsing/evaluating an import
- push: function (path, currentFileInfo, importOptions, callback) {
- var parserImports = this;
- this.queue.push(path);
-
- var fileParsedFunc = function (e, root, fullPath) {
- parserImports.queue.splice(parserImports.queue.indexOf(path), 1); // Remove the path from the queue
-
- var importedPreviously = fullPath === rootFilename;
-
- parserImports.files[fullPath] = root; // Store the root
-
- if (e && !parserImports.error) {
- parserImports.error = e;
- }
-
- callback(e, root, importedPreviously, fullPath);
- };
-
- if (less.Parser.importer) {
- less.Parser.importer(path, currentFileInfo, fileParsedFunc, env);
- } else {
- less.Parser.fileLoader(path, currentFileInfo, function (e, contents, fullPath, newFileInfo) {
- if (e) {
- fileParsedFunc(e);
- return;
- }
-
- var newEnv = new tree.parseEnv(env);
-
- newEnv.currentFileInfo = newFileInfo;
- newEnv.processImports = false;
- newEnv.contents[fullPath] = contents;
-
- if (currentFileInfo.reference || importOptions.reference) {
- newFileInfo.reference = true;
- }
-
- if (importOptions.inline) {
- fileParsedFunc(null, contents, fullPath);
- } else {
- new (less.Parser)(newEnv).parse(contents, function (e, root) {
- fileParsedFunc(e, root, fullPath);
- });
- }
- }, env);
- }
- }
- };
-
- function save() {
- currentPos = i;
- saveStack.push({current: current, i: i, j: j});
- }
-
- function restore() {
- var state = saveStack.pop();
- current = state.current;
- currentPos = i = state.i;
- j = state.j;
- }
-
- function forget() {
- saveStack.pop();
- }
-
- function sync() {
- if (i > currentPos) {
- current = current.slice(i - currentPos);
- currentPos = i;
- }
- }
-
- function isWhitespace(str, pos) {
- var code = str.charCodeAt(pos | 0);
- return (code <= 32) && (code === 32 || code === 10 || code === 9);
- }
-
- //
- // Parse from a token, regexp or string, and move forward if match
- //
- function $(tok) {
- var tokType = typeof tok,
- match, length;
-
- // Either match a single character in the input,
- // or match a regexp in the current chunk (`current`).
- //
- if (tokType === "string") {
- if (input.charAt(i) !== tok) {
- return null;
- }
- skipWhitespace(1);
- return tok;
- }
-
- // regexp
- sync();
- if (!(match = tok.exec(current))) {
- return null;
- }
-
- length = match[0].length;
-
- // The match is confirmed, add the match length to `i`,
- // and consume any extra white-space characters (' ' || '\n')
- // which come after that. The reason for this is that LeSS's
- // grammar is mostly white-space insensitive.
- //
- skipWhitespace(length);
-
- if (typeof(match) === 'string') {
- return match;
- } else {
- return match.length === 1 ? match[0] : match;
- }
- }
-
- // Specialization of $(tok)
- function $re(tok) {
- if (i > currentPos) {
- current = current.slice(i - currentPos);
- currentPos = i;
- }
- var m = tok.exec(current);
- if (!m) {
- return null;
- }
-
- skipWhitespace(m[0].length);
- if (typeof m === "string") {
- return m;
- }
-
- return m.length === 1 ? m[0] : m;
- }
-
- var _$re = $re;
-
- // Specialization of $(tok)
- function $char(tok) {
- if (input.charAt(i) !== tok) {
- return null;
- }
- skipWhitespace(1);
- return tok;
- }
-
- function skipWhitespace(length) {
- var oldi = i, oldj = j,
- curr = i - currentPos,
- endIndex = i + current.length - curr,
- mem = (i += length),
- inp = input,
- c;
-
- for (; i < endIndex; i++) {
- c = inp.charCodeAt(i);
- if (c > 32) {
- break;
- }
-
- if ((c !== 32) && (c !== 10) && (c !== 9) && (c !== 13)) {
- break;
- }
- }
-
- current = current.slice(length + i - mem + curr);
- currentPos = i;
-
- if (!current.length && (j < chunks.length - 1)) {
- current = chunks[++j];
- skipWhitespace(0); // skip space at the beginning of a chunk
- return true; // things changed
- }
-
- return oldi !== i || oldj !== j;
- }
-
- function expect(arg, msg, index) {
- // some older browsers return typeof 'function' for RegExp
- var result = (Object.prototype.toString.call(arg) === '[object Function]') ? arg.call(parsers) : $(arg);
- if (result) {
- return result;
- }
- error(msg || (typeof(arg) === 'string' ? "expected '" + arg + "' got '" + input.charAt(i) + "'"
- : "unexpected token"));
- }
-
- // Specialization of expect()
- function expectChar(arg, msg) {
- if (input.charAt(i) === arg) {
- skipWhitespace(1);
- return arg;
- }
- error(msg || "expected '" + arg + "' got '" + input.charAt(i) + "'");
- }
-
- function error(msg, type) {
- var e = new Error(msg);
- e.index = i;
- e.type = type || 'Syntax';
- throw e;
- }
-
- // Same as $(), but don't change the state of the parser,
- // just return the match.
- function peek(tok) {
- if (typeof(tok) === 'string') {
- return input.charAt(i) === tok;
- } else {
- return tok.test(current);
- }
- }
-
- // Specialization of peek()
- function peekChar(tok) {
- return input.charAt(i) === tok;
- }
-
-
- function getInput(e, env) {
- if (e.filename && env.currentFileInfo.filename && (e.filename !== env.currentFileInfo.filename)) {
- return parser.imports.contents[e.filename];
- } else {
- return input;
- }
- }
-
- function getLocation(index, inputStream) {
- var n = index + 1,
- line = null,
- column = -1;
-
- while (--n >= 0 && inputStream.charAt(n) !== '\n') {
- column++;
- }
-
- if (typeof index === 'number') {
- line = (inputStream.slice(0, index).match(/\n/g) || "").length;
- }
-
- return {
- line: line,
- column: column
- };
- }
-
- function getDebugInfo(index, inputStream, env) {
- var filename = env.currentFileInfo.filename;
- if (less.mode !== 'browser' && less.mode !== 'rhino') {
- filename = require('path').resolve(filename);
- }
-
- return {
- lineNumber: getLocation(index, inputStream).line + 1,
- fileName: filename
- };
- }
-
- function LessError(e, env) {
- var input = getInput(e, env),
- loc = getLocation(e.index, input),
- line = loc.line,
- col = loc.column,
- callLine = e.call && getLocation(e.call, input).line,
- lines = input.split('\n');
-
- this.type = e.type || 'Syntax';
- this.message = e.message;
- this.filename = e.filename || env.currentFileInfo.filename;
- this.index = e.index;
- this.line = typeof(line) === 'number' ? line + 1 : null;
- this.callLine = callLine + 1;
- this.callExtract = lines[callLine];
- this.stack = e.stack;
- this.column = col;
- this.extract = [
- lines[line - 1],
- lines[line],
- lines[line + 1]
- ];
- }
-
- LessError.prototype = new Error();
- LessError.prototype.constructor = LessError;
-
- this.env = env = env || {};
-
- // The optimization level dictates the thoroughness of the parser,
- // the lower the number, the less nodes it will create in the tree.
- // This could matter for debugging, or if you want to access
- // the individual nodes in the tree.
- this.optimization = ('optimization' in this.env) ? this.env.optimization : 1;
-
- //
- // The Parser
- //
- parser = {
-
- imports: imports,
- //
- // Parse an input string into an abstract syntax tree,
- // @param str A string containing 'less' markup
- // @param callback call `callback` when done.
- // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply
- //
- parse: function (str, callback, additionalData) {
- var root, line, lines, error = null, globalVars, modifyVars, preText = "";
-
- i = j = currentPos = furthest = 0;
-
- globalVars = (additionalData && additionalData.globalVars) ? less.Parser.serializeVars(additionalData.globalVars) + '\n' : '';
- modifyVars = (additionalData && additionalData.modifyVars) ? '\n' + less.Parser.serializeVars(additionalData.modifyVars) : '';
-
- if (globalVars || (additionalData && additionalData.banner)) {
- preText = ((additionalData && additionalData.banner) ? additionalData.banner : "") + globalVars;
- parser.imports.contentsIgnoredChars[env.currentFileInfo.filename] = preText.length;
- }
-
- str = str.replace(/\r\n/g, '\n');
- // Remove potential UTF Byte Order Mark
- input = str = preText + str.replace(/^\uFEFF/, '') + modifyVars;
- parser.imports.contents[env.currentFileInfo.filename] = str;
-
- // Split the input into chunks.
- chunks = (function (input) {
- var len = input.length, level = 0, parenLevel = 0,
- lastOpening, lastOpeningParen, lastMultiComment, lastMultiCommentEndBrace,
- chunks = [], emitFrom = 0,
- parserCurrentIndex, currentChunkStartIndex, cc, cc2, matched;
-
- function fail(msg, index) {
- error = new (LessError)({
- index: index || parserCurrentIndex,
- type: 'Parse',
- message: msg,
- filename: env.currentFileInfo.filename
- }, env);
- }
-
- function emitChunk(force) {
- var len = parserCurrentIndex - emitFrom;
- if (((len < 512) && !force) || !len) {
- return;
- }
- chunks.push(input.slice(emitFrom, parserCurrentIndex + 1));
- emitFrom = parserCurrentIndex + 1;
- }
-
- for (parserCurrentIndex = 0; parserCurrentIndex < len; parserCurrentIndex++) {
- cc = input.charCodeAt(parserCurrentIndex);
- if (((cc >= 97) && (cc <= 122)) || (cc < 34)) {
- // a-z or whitespace
- continue;
- }
-
- switch (cc) {
- case 40: // (
- parenLevel++;
- lastOpeningParen = parserCurrentIndex;
- continue;
- case 41: // )
- if (--parenLevel < 0) {
- return fail("missing opening `(`");
- }
- continue;
- case 59: // ;
- if (!parenLevel) {
- emitChunk();
- }
- continue;
- case 123: // {
- level++;
- lastOpening = parserCurrentIndex;
- continue;
- case 125: // }
- if (--level < 0) {
- return fail("missing opening `{`");
- }
- if (!level && !parenLevel) {
- emitChunk();
- }
- continue;
- case 92: // \
- if (parserCurrentIndex < len - 1) {
- parserCurrentIndex++;
- continue;
- }
- return fail("unescaped `\\`");
- case 34:
- case 39:
- case 96: // ", ' and `
- matched = 0;
- currentChunkStartIndex = parserCurrentIndex;
- for (parserCurrentIndex = parserCurrentIndex + 1; parserCurrentIndex < len; parserCurrentIndex++) {
- cc2 = input.charCodeAt(parserCurrentIndex);
- if (cc2 > 96) {
- continue;
- }
- if (cc2 == cc) {
- matched = 1;
- break;
- }
- if (cc2 == 92) { // \
- if (parserCurrentIndex == len - 1) {
- return fail("unescaped `\\`");
- }
- parserCurrentIndex++;
- }
- }
- if (matched) {
- continue;
- }
- return fail("unmatched `" + String.fromCharCode(cc) + "`", currentChunkStartIndex);
- case 47: // /, check for comment
- if (parenLevel || (parserCurrentIndex == len - 1)) {
- continue;
- }
- cc2 = input.charCodeAt(parserCurrentIndex + 1);
- if (cc2 == 47) {
- // //, find lnfeed
- for (parserCurrentIndex = parserCurrentIndex + 2; parserCurrentIndex < len; parserCurrentIndex++) {
- cc2 = input.charCodeAt(parserCurrentIndex);
- if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) {
- break;
- }
- }
- } else if (cc2 == 42) {
- // /*, find */
- lastMultiComment = currentChunkStartIndex = parserCurrentIndex;
- for (parserCurrentIndex = parserCurrentIndex + 2; parserCurrentIndex < len - 1; parserCurrentIndex++) {
- cc2 = input.charCodeAt(parserCurrentIndex);
- if (cc2 == 125) {
- lastMultiCommentEndBrace = parserCurrentIndex;
- }
- if (cc2 != 42) {
- continue;
- }
- if (input.charCodeAt(parserCurrentIndex + 1) == 47) {
- break;
- }
- }
- if (parserCurrentIndex == len - 1) {
- return fail("missing closing `*/`", currentChunkStartIndex);
- }
- parserCurrentIndex++;
- }
- continue;
- case 42: // *, check for unmatched */
- if ((parserCurrentIndex < len - 1) && (input.charCodeAt(parserCurrentIndex + 1) == 47)) {
- return fail("unmatched `/*`");
- }
- continue;
- }
- }
-
- if (level !== 0) {
- if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) {
- return fail("missing closing `}` or `*/`", lastOpening);
- } else {
- return fail("missing closing `}`", lastOpening);
- }
- } else if (parenLevel !== 0) {
- return fail("missing closing `)`", lastOpeningParen);
- }
-
- emitChunk(true);
- return chunks;
- })(str);
-
- if (error) {
- return callback(new (LessError)(error, env));
- }
-
- current = chunks[0];
-
- // Start with the primary rule.
- // The whole syntax tree is held under a Ruleset node,
- // with the `root` property set to true, so no `{}` are
- // output. The callback is called when the input is parsed.
- try {
- root = new (tree.Ruleset)(null, this.parsers.primary());
- root.root = true;
- root.firstRoot = true;
- } catch (e) {
- return callback(new (LessError)(e, env));
- }
-
- root.toCSS = (function (evaluate) {
- return function (options, variables) {
- options = options || {};
- var evaldRoot,
- css,
- evalEnv = new tree.evalEnv(options);
-
- //
- // Allows setting variables with a hash, so:
- //
- // `{ color: new(tree.Color)('#f01') }` will become:
- //
- // new(tree.Rule)('@color',
- // new(tree.Value)([
- // new(tree.Expression)([
- // new(tree.Color)('#f01')
- // ])
- // ])
- // )
- //
- if (typeof(variables) === 'object' && !Array.isArray(variables)) {
- variables = Object.keys(variables).map(function (k) {
- var value = variables[k];
-
- if (!(value instanceof tree.Value)) {
- if (!(value instanceof tree.Expression)) {
- value = new (tree.Expression)([value]);
- }
- value = new (tree.Value)([value]);
- }
- return new (tree.Rule)('@' + k, value, false, null, 0);
- });
- evalEnv.frames = [new (tree.Ruleset)(null, variables)];
- }
-
- try {
- var preEvalVisitors = [],
- visitors = [
- new (tree.joinSelectorVisitor)(),
- new (tree.processExtendsVisitor)(),
- new (tree.toCSSVisitor)({compress: Boolean(options.compress)})
- ], i, root = this;
-
- if (options.plugins) {
- for (i = 0; i < options.plugins.length; i++) {
- if (options.plugins[i].isPreEvalVisitor) {
- preEvalVisitors.push(options.plugins[i]);
- } else {
- if (options.plugins[i].isPreVisitor) {
- visitors.splice(0, 0, options.plugins[i]);
- } else {
- visitors.push(options.plugins[i]);
- }
- }
- }
- }
-
- for (i = 0; i < preEvalVisitors.length; i++) {
- preEvalVisitors[i].run(root);
- }
-
- evaldRoot = evaluate.call(root, evalEnv);
-
- for (i = 0; i < visitors.length; i++) {
- visitors[i].run(evaldRoot);
- }
-
- if (options.sourceMap) {
- evaldRoot = new tree.sourceMapOutput(
- {
- contentsIgnoredCharsMap: parser.imports.contentsIgnoredChars,
- writeSourceMap: options.writeSourceMap,
- rootNode: evaldRoot,
- contentsMap: parser.imports.contents,
- sourceMapFilename: options.sourceMapFilename,
- sourceMapURL: options.sourceMapURL,
- outputFilename: options.sourceMapOutputFilename,
- sourceMapBasepath: options.sourceMapBasepath,
- sourceMapRootpath: options.sourceMapRootpath,
- outputSourceFiles: options.outputSourceFiles,
- sourceMapGenerator: options.sourceMapGenerator
- });
- }
-
- css = evaldRoot.toCSS({
- compress: Boolean(options.compress),
- dumpLineNumbers: env.dumpLineNumbers,
- strictUnits: Boolean(options.strictUnits),
- numPrecision: 8
- });
- } catch (e) {
- throw new (LessError)(e, env);
- }
-
- if (options.cleancss && less.mode === 'node') {
- var CleanCSS = require('clean-css'),
- cleancssOptions = options.cleancssOptions || {};
-
- if (cleancssOptions.keepSpecialComments === undefined) {
- cleancssOptions.keepSpecialComments = "*";
- }
- cleancssOptions.processImport = false;
- cleancssOptions.noRebase = true;
- if (cleancssOptions.noAdvanced === undefined) {
- cleancssOptions.noAdvanced = true;
- }
-
- return new CleanCSS(cleancssOptions).minify(css);
- } else if (options.compress) {
- return css.replace(/(^(\s)+)|((\s)+$)/g, "");
- } else {
- return css;
- }
- };
- })(root.eval);
-
- // If `i` is smaller than the `input.length - 1`,
- // it means the parser wasn't able to parse the whole
- // string, so we've got a parsing error.
- //
- // We try to extract a \n delimited string,
- // showing the line where the parse error occured.
- // We split it up into two parts (the part which parsed,
- // and the part which didn't), so we can color them differently.
- if (i < input.length - 1) {
- i = furthest;
- var loc = getLocation(i, input);
- lines = input.split('\n');
- line = loc.line + 1;
-
- error = {
- type: "Parse",
- message: "Unrecognised input",
- index: i,
- filename: env.currentFileInfo.filename,
- line: line,
- column: loc.column,
- extract: [
- lines[line - 2],
- lines[line - 1],
- lines[line]
- ]
- };
- }
-
- var finish = function (e) {
- e = error || e || parser.imports.error;
-
- if (e) {
- if (!(e instanceof LessError)) {
- e = new (LessError)(e, env);
- }
-
- return callback(e);
- }
- else {
- return callback(null, root);
- }
- };
-
- if (env.processImports !== false) {
- new tree.importVisitor(this.imports, finish)
- .run(root);
- } else {
- return finish();
- }
- },
-
- //
- // Here in, the parsing rules/functions
- //
- // The basic structure of the syntax tree generated is as follows:
- //
- // Ruleset -> Rule -> Value -> Expression -> Entity
- //
- // Here's some Less code:
- //
- // .class {
- // color: #fff;
- // border: 1px solid #000;
- // width: @w + 4px;
- // > .child {...}
- // }
- //
- // And here's what the parse tree might look like:
- //
- // Ruleset (Selector '.class', [
- // Rule ("color", Value ([Expression [Color #fff]]))
- // Rule ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]]))
- // Rule ("width", Value ([Expression [Operation "+" [Variable "@w"][Dimension 4px]]]))
- // Ruleset (Selector [Element '>', '.child'], [...])
- // ])
- //
- // In general, most rules will try to parse a token with the `$()` function, and if the return
- // value is truly, will return a new node, of the relevant type. Sometimes, we need to check
- // first, before parsing, that's when we use `peek()`.
- //
- parsers: parsers = {
- //
- // The `primary` rule is the *entry* and *exit* point of the parser.
- // The rules here can appear at any level of the parse tree.
- //
- // The recursive nature of the grammar is an interplay between the `block`
- // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,
- // as represented by this simplified grammar:
- //
- // primary → (ruleset | rule)+
- // ruleset → selector+ block
- // block → '{' primary '}'
- //
- // Only at one point is the primary rule not called from the
- // block rule: at the root level.
- //
- primary: function () {
- var mixin = this.mixin, $re = _$re, root = [], node;
-
- while (current) {
- node = this.extendRule() || mixin.definition() || this.rule() || this.ruleset() ||
- mixin.call() || this.comment() || this.rulesetCall() || this.directive();
- if (node) {
- root.push(node);
- } else {
- if (!($re(/^[\s\n]+/) || $re(/^;+/))) {
- break;
- }
- }
- if (peekChar('}')) {
- break;
- }
- }
-
- return root;
- },
-
- // We create a Comment node for CSS comments `/* */`,
- // but keep the LeSS comments `//` silent, by just skipping
- // over them.
- comment: function () {
- var comment;
-
- if (input.charAt(i) !== '/') {
- return;
- }
-
- if (input.charAt(i + 1) === '/') {
- return new (tree.Comment)($re(/^\/\/.*/), true, i, env.currentFileInfo);
- }
- comment = $re(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/);
- if (comment) {
- return new (tree.Comment)(comment, false, i, env.currentFileInfo);
- }
- },
-
- comments: function () {
- var comment, comments = [];
-
- while (true) {
- comment = this.comment();
- if (!comment) {
- break;
- }
- comments.push(comment);
- }
-
- return comments;
- },
-
- //
- // Entities are tokens which can be found inside an Expression
- //
- entities: {
- //
- // A string, which supports escaping " and '
- //
- // "milky way" 'he\'s the one!'
- //
- quoted: function () {
- var str, j = i, e, index = i;
-
- if (input.charAt(j) === '~') {
- j++;
- e = true;
- } // Escaped strings
- if (input.charAt(j) !== '"' && input.charAt(j) !== "'") {
- return;
- }
-
- if (e) {
- $char('~');
- }
-
- str = $re(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/);
- if (str) {
- return new (tree.Quoted)(str[0], str[1] || str[2], e, index, env.currentFileInfo);
- }
- },
-
- //
- // A catch-all word, such as:
- //
- // black border-collapse
- //
- keyword: function () {
- var k;
-
- k = $re(/^%|^[_A-Za-z-][_A-Za-z0-9-]*/);
- if (k) {
- var color = tree.Color.fromKeyword(k);
- if (color) {
- return color;
- }
- return new (tree.Keyword)(k);
- }
- },
-
- //
- // A function call
- //
- // rgb(255, 0, 255)
- //
- // We also try to catch IE's `alpha()`, but let the `alpha` parser
- // deal with the details.
- //
- // The arguments are parsed with the `entities.arguments` parser.
- //
- call: function () {
- var name, nameLC, args, alpha_ret, index = i;
-
- name = /^([\w-]+|%|progid:[\w\.]+)\(/.exec(current);
- if (!name) {
- return;
- }
-
- name = name[1];
- nameLC = name.toLowerCase();
- if (nameLC === 'url') {
- return null;
- }
-
- i += name.length;
-
- if (nameLC === 'alpha') {
- alpha_ret = parsers.alpha();
- if (typeof alpha_ret !== 'undefined') {
- return alpha_ret;
- }
- }
-
- $char('('); // Parse the '(' and consume whitespace.
-
- args = this.arguments();
-
- if (!$char(')')) {
- return;
- }
-
- if (name) {
- return new (tree.Call)(name, args, index, env.currentFileInfo);
- }
- },
- arguments: function () {
- var args = [], arg;
-
- while (true) {
- arg = this.assignment() || parsers.expression();
- if (!arg) {
- break;
- }
- args.push(arg);
- if (!$char(',')) {
- break;
- }
- }
- return args;
- },
- literal: function () {
- return this.dimension() ||
- this.color() ||
- this.quoted() ||
- this.unicodeDescriptor();
- },
-
- // Assignments are argument entities for calls.
- // They are present in ie filter properties as shown below.
- //
- // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )
- //
-
- assignment: function () {
- var key, value;
- key = $re(/^\w+(?=\s?=)/i);
- if (!key) {
- return;
- }
- if (!$char('=')) {
- return;
- }
- value = parsers.entity();
- if (value) {
- return new (tree.Assignment)(key, value);
- }
- },
-
- //
- // Parse url() tokens
- //
- // We use a specific rule for urls, because they don't really behave like
- // standard function calls. The difference is that the argument doesn't have
- // to be enclosed within a string, so it can't be parsed as an Expression.
- //
- url: function () {
- var value;
-
- if (input.charAt(i) !== 'u' || !$re(/^url\(/)) {
- return;
- }
-
- value = this.quoted() || this.variable() ||
- $re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/) || "";
-
- expectChar(')');
-
- return new (tree.URL)((value.value != null || value instanceof tree.Variable)
- ? value : new (tree.Anonymous)(value), env.currentFileInfo);
- },
-
- //
- // A Variable entity, such as `@fink`, in
- //
- // width: @fink + 2px
- //
- // We use a different parser for variable definitions,
- // see `parsers.variable`.
- //
- variable: function () {
- var name, index = i;
-
- if (input.charAt(i) === '@' && (name = $re(/^@@?[\w-]+/))) {
- return new (tree.Variable)(name, index, env.currentFileInfo);
- }
- },
-
- // A variable entity useing the protective {} e.g. @{var}
- variableCurly: function () {
- var curly, index = i;
-
- if (input.charAt(i) === '@' && (curly = $re(/^@\{([\w-]+)\}/))) {
- return new (tree.Variable)("@" + curly[1], index, env.currentFileInfo);
- }
- },
-
- //
- // A Hexadecimal color
- //
- // #4F3C2F
- //
- // `rgb` and `hsl` colors are parsed through the `entities.call` parser.
- //
- color: function () {
- var rgb;
-
- if (input.charAt(i) === '#' && (rgb = $re(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/))) {
- var colorCandidateString = rgb.input.match(/^#([\w]+).*/); // strip colons, brackets, whitespaces and other characters that should not definitely be part of color string
- colorCandidateString = colorCandidateString[1];
- if (!colorCandidateString.match(/^[A-Fa-f0-9]+$/)) { // verify if candidate consists only of allowed HEX characters
- error("Invalid HEX color code");
- }
- return new (tree.Color)(rgb[1]);
- }
- },
-
- //
- // A Dimension, that is, a number and a unit
- //
- // 0.5em 95%
- //
- dimension: function () {
- var value, c = input.charCodeAt(i);
- //Is the first char of the dimension 0-9, '.', '+' or '-'
- if ((c > 57 || c < 43) || c === 47 || c == 44) {
- return;
- }
-
- value = $re(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/);
- if (value) {
- return new (tree.Dimension)(value[1], value[2]);
- }
- },
-
- //
- // A unicode descriptor, as is used in unicode-range
- //
- // U+0?? or U+00A1-00A9
- //
- unicodeDescriptor: function () {
- var ud;
-
- ud = $re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/);
- if (ud) {
- return new (tree.UnicodeDescriptor)(ud[0]);
- }
- },
-
- //
- // JavaScript code to be evaluated
- //
- // `window.location.href`
- //
- javascript: function () {
- var str, j = i, e;
-
- if (input.charAt(j) === '~') {
- j++;
- e = true;
- } // Escaped strings
- if (input.charAt(j) !== '`') {
- return;
- }
- if (env.javascriptEnabled !== undefined && !env.javascriptEnabled) {
- error("You are using JavaScript, which has been disabled.");
- }
-
- if (e) {
- $char('~');
- }
-
- str = $re(/^`([^`]*)`/);
- if (str) {
- return new (tree.JavaScript)(str[1], i, e);
- }
- }
- },
-
- //
- // The variable part of a variable definition. Used in the `rule` parser
- //
- // @fink:
- //
- variable: function () {
- var name;
-
- if (input.charAt(i) === '@' && (name = $re(/^(@[\w-]+)\s*:/))) {
- return name[1];
- }
- },
-
- //
- // The variable part of a variable definition. Used in the `rule` parser
- //
- // @fink();
- //
- rulesetCall: function () {
- var name;
-
- if (input.charAt(i) === '@' && (name = $re(/^(@[\w-]+)\s*\(\s*\)\s*;/))) {
- return new tree.RulesetCall(name[1]);
- }
- },
-
- //
- // extend syntax - used to extend selectors
- //
- extend: function (isRule) {
- var elements, e, index = i, option, extendList, extend;
-
- if (!(isRule ? $re(/^&:extend\(/) : $re(/^:extend\(/))) {
- return;
- }
-
- do {
- option = null;
- elements = null;
- while (!(option = $re(/^(all)(?=\s*(\)|,))/))) {
- e = this.element();
- if (!e) {
- break;
- }
- if (elements) {
- elements.push(e);
- } else {
- elements = [e];
- }
- }
-
- option = option && option[1];
- if (!elements)
- error("Missing target selector for :extend().");
- extend = new (tree.Extend)(new (tree.Selector)(elements), option, index);
- if (extendList) {
- extendList.push(extend);
- } else {
- extendList = [extend];
- }
-
- } while ($char(","));
-
- expect(/^\)/);
-
- if (isRule) {
- expect(/^;/);
- }
-
- return extendList;
- },
-
- //
- // extendRule - used in a rule to extend all the parent selectors
- //
- extendRule: function () {
- return this.extend(true);
- },
-
- //
- // Mixins
- //
- mixin: {
- //
- // A Mixin call, with an optional argument list
- //
- // #mixins > .square(#fff);
- // .rounded(4px, black);
- // .button;
- //
- // The `while` loop is there because mixins can be
- // namespaced, but we only support the child and descendant
- // selector for now.
- //
- call: function () {
- var s = input.charAt(i), important = false, index = i, elemIndex,
- elements, elem, e, c, args;
-
- if (s !== '.' && s !== '#') {
- return;
- }
-
- save(); // stop us absorbing part of an invalid selector
-
- while (true) {
- elemIndex = i;
- e = $re(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/);
- if (!e) {
- break;
- }
- elem = new (tree.Element)(c, e, elemIndex, env.currentFileInfo);
- if (elements) {
- elements.push(elem);
- } else {
- elements = [elem];
- }
- c = $char('>');
- }
-
- if (elements) {
- if ($char('(')) {
- args = this.args(true).args;
- expectChar(')');
- }
-
- if (parsers.important()) {
- important = true;
- }
-
- if (parsers.end()) {
- forget();
- return new (tree.mixin.Call)(elements, args, index, env.currentFileInfo, important);
- }
- }
-
- restore();
- },
- args: function (isCall) {
- var parsers = parser.parsers, entities = parsers.entities,
- returner = {args: null, variadic: false},
- expressions = [], argsSemiColon = [], argsComma = [],
- isSemiColonSeperated, expressionContainsNamed, name, nameLoop, value, arg;
-
- save();
-
- while (true) {
- if (isCall) {
- arg = parsers.detachedRuleset() || parsers.expression();
- } else {
- parsers.comments();
- if (input.charAt(i) === '.' && $re(/^\.{3}/)) {
- returner.variadic = true;
- if ($char(";") && !isSemiColonSeperated) {
- isSemiColonSeperated = true;
- }
- (isSemiColonSeperated ? argsSemiColon : argsComma)
- .push({variadic: true});
- break;
- }
- arg = entities.variable() || entities.literal() || entities.keyword();
- }
-
- if (!arg) {
- break;
- }
-
- nameLoop = null;
- if (arg.throwAwayComments) {
- arg.throwAwayComments();
- }
- value = arg;
- var val = null;
-
- if (isCall) {
- // Variable
- if (arg.value && arg.value.length == 1) {
- val = arg.value[0];
- }
- } else {
- val = arg;
- }
-
- if (val && val instanceof tree.Variable) {
- if ($char(':')) {
- if (expressions.length > 0) {
- if (isSemiColonSeperated) {
- error("Cannot mix ; and , as delimiter types");
- }
- expressionContainsNamed = true;
- }
-
- // we do not support setting a ruleset as a default variable - it doesn't make sense
- // However if we do want to add it, there is nothing blocking it, just don't error
- // and remove isCall dependency below
- value = (isCall && parsers.detachedRuleset()) || parsers.expression();
-
- if (!value) {
- if (isCall) {
- error("could not understand value for named argument");
- } else {
- restore();
- returner.args = [];
- return returner;
- }
- }
- nameLoop = (name = val.name);
- } else if (!isCall && $re(/^\.{3}/)) {
- returner.variadic = true;
- if ($char(";") && !isSemiColonSeperated) {
- isSemiColonSeperated = true;
- }
- (isSemiColonSeperated ? argsSemiColon : argsComma)
- .push({name: arg.name, variadic: true});
- break;
- } else if (!isCall) {
- name = nameLoop = val.name;
- value = null;
- }
- }
-
- if (value) {
- expressions.push(value);
- }
-
- argsComma.push({name: nameLoop, value: value});
-
- if ($char(',')) {
- continue;
- }
-
- if ($char(';') || isSemiColonSeperated) {
-
- if (expressionContainsNamed) {
- error("Cannot mix ; and , as delimiter types");
- }
-
- isSemiColonSeperated = true;
-
- if (expressions.length > 1) {
- value = new (tree.Value)(expressions);
- }
- argsSemiColon.push({name: name, value: value});
-
- name = null;
- expressions = [];
- expressionContainsNamed = false;
- }
- }
-
- forget();
- returner.args = isSemiColonSeperated ? argsSemiColon : argsComma;
- return returner;
- },
- //
- // A Mixin definition, with a list of parameters
- //
- // .rounded (@radius: 2px, @color) {
- // ...
- // }
- //
- // Until we have a finer grained state-machine, we have to
- // do a look-ahead, to make sure we don't have a mixin call.
- // See the `rule` function for more information.
- //
- // We start by matching `.rounded (`, and then proceed on to
- // the argument list, which has optional default values.
- // We store the parameters in `params`, with a `value` key,
- // if there is a value, such as in the case of `@radius`.
- //
- // Once we've got our params list, and a closing `)`, we parse
- // the `{...}` block.
- //
- definition: function () {
- var name, params = [], match, ruleset, cond, variadic = false;
- if ((input.charAt(i) !== '.' && input.charAt(i) !== '#') ||
- peek(/^[^{]*\}/)) {
- return;
- }
-
- save();
-
- match = $re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/);
- if (match) {
- name = match[1];
-
- var argInfo = this.args(false);
- params = argInfo.args;
- variadic = argInfo.variadic;
-
- // .mixincall("@{a}");
- // looks a bit like a mixin definition..
- // also
- // .mixincall(@a: {rule: set;});
- // so we have to be nice and restore
- if (!$char(')')) {
- furthest = i;
- restore();
- return;
- }
-
- parsers.comments();
-
- if ($re(/^when/)) { // Guard
- cond = expect(parsers.conditions, 'expected condition');
- }
-
- ruleset = parsers.block();
-
- if (ruleset) {
- forget();
- return new (tree.mixin.Definition)(name, params, ruleset, cond, variadic);
- } else {
- restore();
- }
- } else {
- forget();
- }
- }
- },
-
- //
- // Entities are the smallest recognized token,
- // and can be found inside a rule's value.
- //
- entity: function () {
- var entities = this.entities;
-
- return entities.literal() || entities.variable() || entities.url() ||
- entities.call() || entities.keyword() || entities.javascript() ||
- this.comment();
- },
-
- //
- // A Rule terminator. Note that we use `peek()` to check for '}',
- // because the `block` rule will be expecting it, but we still need to make sure
- // it's there, if ';' was ommitted.
- //
- end: function () {
- return $char(';') || peekChar('}');
- },
-
- //
- // IE's alpha function
- //
- // alpha(opacity=88)
- //
- alpha: function () {
- var value;
-
- if (!$re(/^\(opacity=/i)) {
- return;
- }
- value = $re(/^\d+/) || this.entities.variable();
- if (value) {
- expectChar(')');
- return new (tree.Alpha)(value);
- }
- },
-
- //
- // A Selector Element
- //
- // div
- // + h1
- // #socks
- // input[type="text"]
- //
- // Elements are the building blocks for Selectors,
- // they are made out of a `Combinator` (see combinator rule),
- // and an element name, such as a tag a class, or `*`.
- //
- element: function () {
- var e, c, v, index = i;
-
- c = this.combinator();
-
- e = $re(/^(?:\d+\.\d+|\d+)%/) || $re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||
- $char('*') || $char('&') || this.attribute() || $re(/^\([^()@]+\)/) || $re(/^[\.#](?=@)/) ||
- this.entities.variableCurly();
-
- if (!e) {
- save();
- if ($char('(')) {
- if ((v = this.selector()) && $char(')')) {
- e = new (tree.Paren)(v);
- forget();
- } else {
- restore();
- }
- } else {
- forget();
- }
- }
-
- if (e) {
- return new (tree.Element)(c, e, index, env.currentFileInfo);
- }
- },
-
- //
- // Combinators combine elements together, in a Selector.
- //
- // Because our parser isn't white-space sensitive, special care
- // has to be taken, when parsing the descendant combinator, ` `,
- // as it's an empty space. We have to check the previous character
- // in the input, to see if it's a ` ` character. More info on how
- // we deal with this in *combinator.js*.
- //
- combinator: function () {
- var c = input.charAt(i);
-
- if (c === '/') {
- save();
- var slashedCombinator = $re(/^\/[a-z]+\//i);
- if (slashedCombinator) {
- forget();
- return new (tree.Combinator)(slashedCombinator);
- }
- restore();
- }
-
- if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {
- i++;
- if (c === '^' && input.charAt(i) === '^') {
- c = '^^';
- i++;
- }
- while (isWhitespace(input, i)) {
- i++;
- }
- return new (tree.Combinator)(c);
- } else if (isWhitespace(input, i - 1)) {
- return new (tree.Combinator)(" ");
- } else {
- return new (tree.Combinator)(null);
- }
- },
- //
- // A CSS selector (see selector below)
- // with less extensions e.g. the ability to extend and guard
- //
- lessSelector: function () {
- return this.selector(true);
- },
- //
- // A CSS Selector
- //
- // .class > div + h1
- // li a:hover
- //
- // Selectors are made out of one or more Elements, see above.
- //
- selector: function (isLess) {
- var index = i, $re = _$re, elements, extendList, c, e, extend, when, condition;
-
- while ((isLess && (extend = this.extend())) || (isLess && (when = $re(/^when/))) || (e = this.element())) {
- if (when) {
- condition = expect(this.conditions, 'expected condition');
- } else if (condition) {
- error("CSS guard can only be used at the end of selector");
- } else if (extend) {
- if (extendList) {
- extendList.push(extend);
- } else {
- extendList = [extend];
- }
- } else {
- if (extendList) {
- error("Extend can only be used at the end of selector");
- }
- c = input.charAt(i);
- if (elements) {
- elements.push(e);
- } else {
- elements = [e];
- }
- e = null;
- }
- if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {
- break;
- }
- }
-
- if (elements) {
- return new (tree.Selector)(elements, extendList, condition, index, env.currentFileInfo);
- }
- if (extendList) {
- error("Extend must be used to extend a selector, it cannot be used on its own");
- }
- },
- attribute: function () {
- if (!$char('[')) {
- return;
- }
-
- var entities = this.entities,
- key, val, op;
-
- if (!(key = entities.variableCurly())) {
- key = expect(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/);
- }
-
- op = $re(/^[|~*$^]?=/);
- if (op) {
- val = entities.quoted() || $re(/^[0-9]+%/) || $re(/^[\w-]+/) || entities.variableCurly();
- }
-
- expectChar(']');
-
- return new (tree.Attribute)(key, op, val);
- },
-
- //
- // The `block` rule is used by `ruleset` and `mixin.definition`.
- // It's a wrapper around the `primary` rule, with added `{}`.
- //
- block: function () {
- var content;
- if ($char('{') && (content = this.primary()) && $char('}')) {
- return content;
- }
- },
-
- blockRuleset: function () {
- var block = this.block();
-
- if (block) {
- block = new tree.Ruleset(null, block);
- }
- return block;
- },
-
- detachedRuleset: function () {
- var blockRuleset = this.blockRuleset();
- if (blockRuleset) {
- return new tree.DetachedRuleset(blockRuleset);
- }
- },
-
- //
- // div, .class, body > p {...}
- //
- ruleset: function () {
- var selectors, s, rules, debugInfo;
-
- save();
-
- if (env.dumpLineNumbers) {
- debugInfo = getDebugInfo(i, input, env);
- }
-
- while (true) {
- s = this.lessSelector();
- if (!s) {
- break;
- }
- if (selectors) {
- selectors.push(s);
- } else {
- selectors = [s];
- }
- this.comments();
- if (s.condition && selectors.length > 1) {
- error("Guards are only currently allowed on a single selector.");
- }
- if (!$char(',')) {
- break;
- }
- if (s.condition) {
- error("Guards are only currently allowed on a single selector.");
- }
- this.comments();
- }
-
- if (selectors && (rules = this.block())) {
- forget();
- var ruleset = new (tree.Ruleset)(selectors, rules, env.strictImports);
- if (env.dumpLineNumbers) {
- ruleset.debugInfo = debugInfo;
- }
- return ruleset;
- } else {
- // Backtrack
- furthest = i;
- restore();
- }
- },
- rule: function (tryAnonymous) {
- var name, value, startOfRule = i, c = input.charAt(startOfRule), important, merge, isVariable;
-
- if (c === '.' || c === '#' || c === '&') {
- return;
- }
-
- save();
-
- name = this.variable() || this.ruleProperty();
- if (name) {
- isVariable = typeof name === "string";
-
- if (isVariable) {
- value = this.detachedRuleset();
- }
-
- this.comments();
- if (!value) {
- // prefer to try to parse first if its a variable or we are compressing
- // but always fallback on the other one
- value = !tryAnonymous && (env.compress || isVariable) ?
- (this.value() || this.anonymousValue()) :
- (this.anonymousValue() || this.value());
-
- important = this.important();
-
- // a name returned by this.ruleProperty() is always an array of the form:
- // [string-1, ..., string-n, ""] or [string-1, ..., string-n, "+"]
- // where each item is a tree.Keyword or tree.Variable
- merge = !isVariable && name.pop().value;
- }
-
- if (value && this.end()) {
- forget();
- return new (tree.Rule)(name, value, important, merge, startOfRule, env.currentFileInfo);
- } else {
- furthest = i;
- restore();
- if (value && !tryAnonymous) {
- return this.rule(true);
- }
- }
- } else {
- forget();
- }
- },
- anonymousValue: function () {
- var match;
- match = /^([^@+\/'"*`(;{}-]*);/.exec(current);
- if (match) {
- i += match[0].length - 1;
- return new (tree.Anonymous)(match[1]);
- }
- },
-
- //
- // An @import directive
- //
- // @import "lib";
- //
- // Depending on our environment, importing is done differently:
- // In the browser, it's an XHR request, in Node, it would be a
- // file-system operation. The function used for importing is
- // stored in `import`, which we pass to the Import constructor.
- //
- "import": function () {
- var path, features, index = i;
-
- var dir = $re(/^@import?\s+/);
-
- if (dir) {
- var options = (dir ? this.importOptions() : null) || {};
-
- if ((path = this.entities.quoted() || this.entities.url())) {
- features = this.mediaFeatures();
-
- if (!$(';')) {
- i = index;
- error("missing semi-colon or unrecognised media features on import");
- }
- features = features && new (tree.Value)(features);
- return new (tree.Import)(path, features, options, index, env.currentFileInfo);
- }
- else {
- i = index;
- error("malformed import statement");
- }
- }
- },
-
- importOptions: function () {
- var o, options = {}, optionName, value;
-
- // list of options, surrounded by parens
- if (!$char('(')) {
- return null;
- }
- do {
- o = this.importOption();
- if (o) {
- optionName = o;
- value = true;
- switch (optionName) {
- case "css":
- optionName = "less";
- value = false;
- break;
- case "once":
- optionName = "multiple";
- value = false;
- break;
- }
- options[optionName] = value;
- if (!$char(',')) {
- break;
- }
- }
- } while (o);
- expectChar(')');
- return options;
- },
-
- importOption: function () {
- var opt = $re(/^(less|css|multiple|once|inline|reference)/);
- if (opt) {
- return opt[1];
- }
- },
-
- mediaFeature: function () {
- var entities = this.entities, nodes = [], e, p;
- do {
- e = entities.keyword() || entities.variable();
- if (e) {
- nodes.push(e);
- } else if ($char('(')) {
- p = this.property();
- e = this.value();
- if ($char(')')) {
- if (p && e) {
- nodes.push(new (tree.Paren)(new (tree.Rule)(p, e, null, null, i, env.currentFileInfo, true)));
- } else if (e) {
- nodes.push(new (tree.Paren)(e));
- } else {
- return null;
- }
- } else {
- return null;
- }
- }
- } while (e);
-
- if (nodes.length > 0) {
- return new (tree.Expression)(nodes);
- }
- },
-
- mediaFeatures: function () {
- var entities = this.entities, features = [], e;
- do {
- e = this.mediaFeature();
- if (e) {
- features.push(e);
- if (!$char(',')) {
- break;
- }
- } else {
- e = entities.variable();
- if (e) {
- features.push(e);
- if (!$char(',')) {
- break;
- }
- }
- }
- } while (e);
-
- return features.length > 0 ? features : null;
- },
-
- media: function () {
- var features, rules, media, debugInfo;
-
- if (env.dumpLineNumbers) {
- debugInfo = getDebugInfo(i, input, env);
- }
-
- if ($re(/^@media/)) {
- features = this.mediaFeatures();
-
- rules = this.block();
- if (rules) {
- media = new (tree.Media)(rules, features, i, env.currentFileInfo);
- if (env.dumpLineNumbers) {
- media.debugInfo = debugInfo;
- }
- return media;
- }
- }
- },
-
- //
- // A CSS Directive
- //
- // @charset "utf-8";
- //
- directive: function () {
- var index = i, name, value, rules, nonVendorSpecificName,
- hasIdentifier, hasExpression, hasUnknown, hasBlock = true;
-
- if (input.charAt(i) !== '@') {
- return;
- }
-
- value = this['import']() || this.media();
- if (value) {
- return value;
- }
-
- save();
-
- name = $re(/^@[a-z-]+/);
-
- if (!name) {
- return;
- }
-
- nonVendorSpecificName = name;
- if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {
- nonVendorSpecificName = "@" + name.slice(name.indexOf('-', 2) + 1);
- }
-
- switch (nonVendorSpecificName) {
- /*
- case "@font-face":
- case "@viewport":
- case "@top-left":
- case "@top-left-corner":
- case "@top-center":
- case "@top-right":
- case "@top-right-corner":
- case "@bottom-left":
- case "@bottom-left-corner":
- case "@bottom-center":
- case "@bottom-right":
- case "@bottom-right-corner":
- case "@left-top":
- case "@left-middle":
- case "@left-bottom":
- case "@right-top":
- case "@right-middle":
- case "@right-bottom":
- hasBlock = true;
- break;
- */
- case "@charset":
- hasIdentifier = true;
- hasBlock = false;
- break;
- case "@namespace":
- hasExpression = true;
- hasBlock = false;
- break;
- case "@keyframes":
- hasIdentifier = true;
- break;
- case "@host":
- case "@page":
- case "@document":
- case "@supports":
- hasUnknown = true;
- break;
- }
-
- this.comments();
-
- if (hasIdentifier) {
- value = this.entity();
- if (!value) {
- error("expected " + name + " identifier");
- }
- } else if (hasExpression) {
- value = this.expression();
- if (!value) {
- error("expected " + name + " expression");
- }
- } else if (hasUnknown) {
- value = ($re(/^[^{;]+/) || '').trim();
- if (value) {
- value = new (tree.Anonymous)(value);
- }
- }
-
- this.comments();
-
- if (hasBlock) {
- rules = this.blockRuleset();
- }
-
- if (rules || (!hasBlock && value && $char(';'))) {
- forget();
- return new (tree.Directive)(name, value, rules, index, env.currentFileInfo,
- env.dumpLineNumbers ? getDebugInfo(index, input, env) : null);
- }
-
- restore();
- },
-
- //
- // A Value is a comma-delimited list of Expressions
- //
- // font-family: Baskerville, Georgia, serif;
- //
- // In a Rule, a Value represents everything after the `:`,
- // and before the `;`.
- //
- value: function () {
- var e, expressions = [];
-
- do {
- e = this.expression();
- if (e) {
- expressions.push(e);
- if (!$char(',')) {
- break;
- }
- }
- } while (e);
-
- if (expressions.length > 0) {
- return new (tree.Value)(expressions);
- }
- },
- important: function () {
- if (input.charAt(i) === '!') {
- return $re(/^! *important/);
- }
- },
- sub: function () {
- var a, e;
-
- if ($char('(')) {
- a = this.addition();
- if (a) {
- e = new (tree.Expression)([a]);
- expectChar(')');
- e.parens = true;
- return e;
- }
- }
- },
- multiplication: function () {
- var m, a, op, operation, isSpaced;
- m = this.operand();
- if (m) {
- isSpaced = isWhitespace(input, i - 1);
- while (true) {
- if (peek(/^\/[*\/]/)) {
- break;
- }
-
- save();
-
- op = $char('/') || $char('*');
-
- if (!op) {
- forget();
- break;
- }
-
- a = this.operand();
-
- if (!a) {
- restore();
- break;
- }
- forget();
-
- m.parensInOp = true;
- a.parensInOp = true;
- operation = new (tree.Operation)(op, [operation || m, a], isSpaced);
- isSpaced = isWhitespace(input, i - 1);
- }
- return operation || m;
- }
- },
- addition: function () {
- var m, a, op, operation, isSpaced;
- m = this.multiplication();
- if (m) {
- isSpaced = isWhitespace(input, i - 1);
- while (true) {
- op = $re(/^[-+]\s+/) || (!isSpaced && ($char('+') || $char('-')));
- if (!op) {
- break;
- }
- a = this.multiplication();
- if (!a) {
- break;
- }
-
- m.parensInOp = true;
- a.parensInOp = true;
- operation = new (tree.Operation)(op, [operation || m, a], isSpaced);
- isSpaced = isWhitespace(input, i - 1);
- }
- return operation || m;
- }
- },
- conditions: function () {
- var a, b, index = i, condition;
-
- a = this.condition();
- if (a) {
- while (true) {
- if (!peek(/^,\s*(not\s*)?\(/) || !$char(',')) {
- break;
- }
- b = this.condition();
- if (!b) {
- break;
- }
- condition = new (tree.Condition)('or', condition || a, b, index);
- }
- return condition || a;
- }
- },
- condition: function () {
- var entities = this.entities, index = i, negate = false,
- a, b, c, op;
-
- if ($re(/^not/)) {
- negate = true;
- }
- expectChar('(');
- a = this.addition() || entities.keyword() || entities.quoted();
- if (a) {
- op = $re(/^(?:>=|<=|=<|[<=>])/);
- if (op) {
- b = this.addition() || entities.keyword() || entities.quoted();
- if (b) {
- c = new (tree.Condition)(op, a, b, index, negate);
- } else {
- error('expected expression');
- }
- } else {
- c = new (tree.Condition)('=', a, new (tree.Keyword)('true'), index, negate);
- }
- expectChar(')');
- return $re(/^and/) ? new (tree.Condition)('and', c, this.condition()) : c;
- }
- },
-
- //
- // An operand is anything that can be part of an operation,
- // such as a Color, or a Variable
- //
- operand: function () {
- var entities = this.entities,
- p = input.charAt(i + 1), negate;
-
- if (input.charAt(i) === '-' && (p === '@' || p === '(')) {
- negate = $char('-');
- }
- var o = this.sub() || entities.dimension() ||
- entities.color() || entities.variable() ||
- entities.call();
-
- if (negate) {
- o.parensInOp = true;
- o = new (tree.Negative)(o);
- }
-
- return o;
- },
-
- //
- // Expressions either represent mathematical operations,
- // or white-space delimited Entities.
- //
- // 1px solid black
- // @var * 2
- //
- expression: function () {
- var entities = [], e, delim;
-
- do {
- e = this.addition() || this.entity();
- if (e) {
- entities.push(e);
- // operations do not allow keyword "/" dimension (e.g. small/20px) so we support that here
- if (!peek(/^\/[\/*]/)) {
- delim = $char('/');
- if (delim) {
- entities.push(new (tree.Anonymous)(delim));
- }
- }
- }
- } while (e);
- if (entities.length > 0) {
- return new (tree.Expression)(entities);
- }
- },
- property: function () {
- var name = $re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);
- if (name) {
- return name[1];
- }
- },
- ruleProperty: function () {
- var c = current, name = [], index = [], length = 0, s, k;
-
- function match(re) {
- var a = re.exec(c);
- if (a) {
- index.push(i + length);
- length += a[0].length;
- c = c.slice(a[1].length);
- return name.push(a[1]);
- }
- }
-
- function cutOutBlockComments() {
- //match block comments
- var a = /^\s*\/\*(?:[^*]|\*+[^\/*])*\*+\//.exec(c);
- if (a) {
- length += a[0].length;
- c = c.slice(a[0].length);
- return true;
- }
- return false;
- }
-
- match(/^(\*?)/);
- while (match(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/)); // !
- while (cutOutBlockComments());
- if ((name.length > 1) && match(/^\s*((?:\+_|\+)?)\s*:/)) {
- // at last, we have the complete match now. move forward,
- // convert name particles to tree objects and return:
- skipWhitespace(length);
- if (name[0] === '') {
- name.shift();
- index.shift();
- }
- for (k = 0; k < name.length; k++) {
- s = name[k];
- name[k] = (s.charAt(0) !== '@')
- ? new (tree.Keyword)(s)
- : new (tree.Variable)('@' + s.slice(2, -1),
- index[k], env.currentFileInfo);
- }
- return name;
- }
- }
- }
- };
- return parser;
-};
-less.Parser.serializeVars = function (vars) {
- var s = '';
-
- for (var name in vars) {
- if (Object.hasOwnProperty.call(vars, name)) {
- var value = vars[name];
- s += ((name[0] === '@') ? '' : '@') + name + ': ' + value +
- ((('' + value).slice(-1) === ';') ? '' : ';');
- }
- }
-
- return s;
-};
-
-(function (tree) {
-
- tree.functions = {
- rgb: function (r, g, b) {
- return this.rgba(r, g, b, 1.0);
- },
- rgba: function (r, g, b, a) {
- var rgb = [r, g, b].map(function (c) {
- return scaled(c, 255);
- });
- a = number(a);
- return new (tree.Color)(rgb, a);
- },
- hsl: function (h, s, l) {
- return this.hsla(h, s, l, 1.0);
- },
- hsla: function (h, s, l, a) {
- function hue(h) {
- h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);
- if (h * 6 < 1) {
- return m1 + (m2 - m1) * h * 6;
- }
- else if (h * 2 < 1) {
- return m2;
- }
- else if (h * 3 < 2) {
- return m1 + (m2 - m1) * (2 / 3 - h) * 6;
- }
- else {
- return m1;
- }
- }
-
- h = (number(h) % 360) / 360;
- s = clamp(number(s));
- l = clamp(number(l));
- a = clamp(number(a));
-
- var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
- var m1 = l * 2 - m2;
-
- return this.rgba(hue(h + 1 / 3) * 255,
- hue(h) * 255,
- hue(h - 1 / 3) * 255,
- a);
- },
-
- hsv: function (h, s, v) {
- return this.hsva(h, s, v, 1.0);
- },
-
- hsva: function (h, s, v, a) {
- h = ((number(h) % 360) / 360) * 360;
- s = number(s);
- v = number(v);
- a = number(a);
-
- var i, f;
- i = Math.floor((h / 60) % 6);
- f = (h / 60) - i;
-
- var vs = [v,
- v * (1 - s),
- v * (1 - f * s),
- v * (1 - (1 - f) * s)];
- var perm = [[0, 3, 1],
- [2, 0, 1],
- [1, 0, 3],
- [1, 2, 0],
- [3, 1, 0],
- [0, 1, 2]];
-
- return this.rgba(vs[perm[i][0]] * 255,
- vs[perm[i][1]] * 255,
- vs[perm[i][2]] * 255,
- a);
- },
-
- hue: function (color) {
- return new (tree.Dimension)(color.toHSL().h);
- },
- saturation: function (color) {
- return new (tree.Dimension)(color.toHSL().s * 100, '%');
- },
- lightness: function (color) {
- return new (tree.Dimension)(color.toHSL().l * 100, '%');
- },
- hsvhue: function (color) {
- return new (tree.Dimension)(color.toHSV().h);
- },
- hsvsaturation: function (color) {
- return new (tree.Dimension)(color.toHSV().s * 100, '%');
- },
- hsvvalue: function (color) {
- return new (tree.Dimension)(color.toHSV().v * 100, '%');
- },
- red: function (color) {
- return new (tree.Dimension)(color.rgb[0]);
- },
- green: function (color) {
- return new (tree.Dimension)(color.rgb[1]);
- },
- blue: function (color) {
- return new (tree.Dimension)(color.rgb[2]);
- },
- alpha: function (color) {
- return new (tree.Dimension)(color.toHSL().a);
- },
- luma: function (color) {
- return new (tree.Dimension)(color.luma() * color.alpha * 100, '%');
- },
- luminance: function (color) {
- var luminance =
- (0.2126 * color.rgb[0] / 255)
- + (0.7152 * color.rgb[1] / 255)
- + (0.0722 * color.rgb[2] / 255);
-
- return new (tree.Dimension)(luminance * color.alpha * 100, '%');
- },
- saturate: function (color, amount) {
- // filter: saturate(3.2);
- // should be kept as is, so check for color
- if (!color.rgb) {
- return null;
- }
- var hsl = color.toHSL();
-
- hsl.s += amount.value / 100;
- hsl.s = clamp(hsl.s);
- return hsla(hsl);
- },
- desaturate: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.s -= amount.value / 100;
- hsl.s = clamp(hsl.s);
- return hsla(hsl);
- },
- lighten: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.l += amount.value / 100;
- hsl.l = clamp(hsl.l);
- return hsla(hsl);
- },
- darken: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.l -= amount.value / 100;
- hsl.l = clamp(hsl.l);
- return hsla(hsl);
- },
- fadein: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.a += amount.value / 100;
- hsl.a = clamp(hsl.a);
- return hsla(hsl);
- },
- fadeout: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.a -= amount.value / 100;
- hsl.a = clamp(hsl.a);
- return hsla(hsl);
- },
- fade: function (color, amount) {
- var hsl = color.toHSL();
-
- hsl.a = amount.value / 100;
- hsl.a = clamp(hsl.a);
- return hsla(hsl);
- },
- spin: function (color, amount) {
- var hsl = color.toHSL();
- var hue = (hsl.h + amount.value) % 360;
-
- hsl.h = hue < 0 ? 360 + hue : hue;
-
- return hsla(hsl);
- },
- //
- // Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
- // http://sass-lang.com
- //
- mix: function (color1, color2, weight) {
- if (!weight) {
- weight = new (tree.Dimension)(50);
- }
- var p = weight.value / 100.0;
- var w = p * 2 - 1;
- var a = color1.toHSL().a - color2.toHSL().a;
-
- var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
- var w2 = 1 - w1;
-
- var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,
- color1.rgb[1] * w1 + color2.rgb[1] * w2,
- color1.rgb[2] * w1 + color2.rgb[2] * w2];
-
- var alpha = color1.alpha * p + color2.alpha * (1 - p);
-
- return new (tree.Color)(rgb, alpha);
- },
- greyscale: function (color) {
- return this.desaturate(color, new (tree.Dimension)(100));
- },
- contrast: function (color, dark, light, threshold) {
- // filter: contrast(3.2);
- // should be kept as is, so check for color
- if (!color.rgb) {
- return null;
- }
- if (typeof light === 'undefined') {
- light = this.rgba(255, 255, 255, 1.0);
- }
- if (typeof dark === 'undefined') {
- dark = this.rgba(0, 0, 0, 1.0);
- }
- //Figure out which is actually light and dark!
- if (dark.luma() > light.luma()) {
- var t = light;
- light = dark;
- dark = t;
- }
- if (typeof threshold === 'undefined') {
- threshold = 0.43;
- } else {
- threshold = number(threshold);
- }
- if (color.luma() < threshold) {
- return light;
- } else {
- return dark;
- }
- },
- e: function (str) {
- return new (tree.Anonymous)(str instanceof tree.JavaScript ? str.evaluated : str.value);
- },
- escape: function (str) {
- return new (tree.Anonymous)(encodeURI(str.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29"));
- },
- replace: function (string, pattern, replacement, flags) {
- var result = string.value;
-
- result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement.value);
- return new (tree.Quoted)(string.quote || '', result, string.escaped);
- },
- '%': function (string /* arg, arg, ...*/) {
- var args = Array.prototype.slice.call(arguments, 1),
- result = string.value;
-
- for (var i = 0; i < args.length; i++) {
- /*jshint loopfunc:true */
- result = result.replace(/%[sda]/i, function (token) {
- var value = token.match(/s/i) ? args[i].value : args[i].toCSS();
- return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;
- });
- }
- result = result.replace(/%%/g, '%');
- return new (tree.Quoted)(string.quote || '', result, string.escaped);
- },
- unit: function (val, unit) {
- if (!(val instanceof tree.Dimension)) {
- throw {
- type: "Argument",
- message: "the first argument to unit must be a number" + (val instanceof tree.Operation ? ". Have you forgotten parenthesis?" : "")
- };
- }
- if (unit) {
- if (unit instanceof tree.Keyword) {
- unit = unit.value;
- } else {
- unit = unit.toCSS();
- }
- } else {
- unit = "";
- }
- return new (tree.Dimension)(val.value, unit);
- },
- convert: function (val, unit) {
- return val.convertTo(unit.value);
- },
- round: function (n, f) {
- var fraction = typeof(f) === "undefined" ? 0 : f.value;
- return _math(function (num) {
- return num.toFixed(fraction);
- }, null, n);
- },
- pi: function () {
- return new (tree.Dimension)(Math.PI);
- },
- mod: function (a, b) {
- return new (tree.Dimension)(a.value % b.value, a.unit);
- },
- pow: function (x, y) {
- if (typeof x === "number" && typeof y === "number") {
- x = new (tree.Dimension)(x);
- y = new (tree.Dimension)(y);
- } else if (!(x instanceof tree.Dimension) || !(y instanceof tree.Dimension)) {
- throw {type: "Argument", message: "arguments must be numbers"};
- }
-
- return new (tree.Dimension)(Math.pow(x.value, y.value), x.unit);
- },
- _minmax: function (isMin, args) {
- args = Array.prototype.slice.call(args);
- switch (args.length) {
- case 0:
- throw {type: "Argument", message: "one or more arguments required"};
- }
- var i, j, current, currentUnified, referenceUnified, unit, unitStatic, unitClone,
- order = [], // elems only contains original argument values.
- values = {}; // key is the unit.toString() for unified tree.Dimension values,
- // value is the index into the order array.
- for (i = 0; i < args.length; i++) {
- current = args[i];
- if (!(current instanceof tree.Dimension)) {
- if (Array.isArray(args[i].value)) {
- Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));
- }
- continue;
- }
- currentUnified = current.unit.toString() === "" && unitClone !== undefined ? new (tree.Dimension)(current.value, unitClone).unify() : current.unify();
- unit = currentUnified.unit.toString() === "" && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();
- unitStatic = unit !== "" && unitStatic === undefined || unit !== "" && order[0].unify().unit.toString() === "" ? unit : unitStatic;
- unitClone = unit !== "" && unitClone === undefined ? current.unit.toString() : unitClone;
- j = values[""] !== undefined && unit !== "" && unit === unitStatic ? values[""] : values[unit];
- if (j === undefined) {
- if (unitStatic !== undefined && unit !== unitStatic) {
- throw{type: "Argument", message: "incompatible types"};
- }
- values[unit] = order.length;
- order.push(current);
- continue;
- }
- referenceUnified = order[j].unit.toString() === "" && unitClone !== undefined ? new (tree.Dimension)(order[j].value, unitClone).unify() : order[j].unify();
- if (isMin && currentUnified.value < referenceUnified.value ||
- !isMin && currentUnified.value > referenceUnified.value) {
- order[j] = current;
- }
- }
- if (order.length == 1) {
- return order[0];
- }
- args = order.map(function (a) {
- return a.toCSS(this.env);
- }).join(this.env.compress ? "," : ", ");
- return new (tree.Anonymous)((isMin ? "min" : "max") + "(" + args + ")");
- },
- min: function () {
- return this._minmax(true, arguments);
- },
- max: function () {
- return this._minmax(false, arguments);
- },
- "get-unit": function (n) {
- return new (tree.Anonymous)(n.unit);
- },
- argb: function (color) {
- return new (tree.Anonymous)(color.toARGB());
- },
- percentage: function (n) {
- return new (tree.Dimension)(n.value * 100, '%');
- },
- color: function (n) {
- if (n instanceof tree.Quoted) {
- var colorCandidate = n.value,
- returnColor;
- returnColor = tree.Color.fromKeyword(colorCandidate);
- if (returnColor) {
- return returnColor;
- }
- if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(colorCandidate)) {
- return new (tree.Color)(colorCandidate.slice(1));
- }
- throw {type: "Argument", message: "argument must be a color keyword or 3/6 digit hex e.g. #FFF"};
- } else {
- throw {type: "Argument", message: "argument must be a string"};
- }
- },
- iscolor: function (n) {
- return this._isa(n, tree.Color);
- },
- isnumber: function (n) {
- return this._isa(n, tree.Dimension);
- },
- isstring: function (n) {
- return this._isa(n, tree.Quoted);
- },
- iskeyword: function (n) {
- return this._isa(n, tree.Keyword);
- },
- isurl: function (n) {
- return this._isa(n, tree.URL);
- },
- ispixel: function (n) {
- return this.isunit(n, 'px');
- },
- ispercentage: function (n) {
- return this.isunit(n, '%');
- },
- isem: function (n) {
- return this.isunit(n, 'em');
- },
- isunit: function (n, unit) {
- return (n instanceof tree.Dimension) && n.unit.is(unit.value || unit) ? tree.True : tree.False;
- },
- _isa: function (n, Type) {
- return (n instanceof Type) ? tree.True : tree.False;
- },
- tint: function (color, amount) {
- return this.mix(this.rgb(255, 255, 255), color, amount);
- },
- shade: function (color, amount) {
- return this.mix(this.rgb(0, 0, 0), color, amount);
- },
- extract: function (values, index) {
- index = index.value - 1; // (1-based index)
- // handle non-array values as an array of length 1
- // return 'undefined' if index is invalid
- return Array.isArray(values.value)
- ? values.value[index] : Array(values)[index];
- },
- length: function (values) {
- var n = Array.isArray(values.value) ? values.value.length : 1;
- return new tree.Dimension(n);
- },
-
- "data-uri": function (mimetypeNode, filePathNode) {
-
- if (typeof window !== 'undefined') {
- return new tree.URL(filePathNode || mimetypeNode, this.currentFileInfo).eval(this.env);
- }
-
- var mimetype = mimetypeNode.value;
- var filePath = (filePathNode && filePathNode.value);
-
- var fs = require('./fs'),
- path = require('path'),
- useBase64 = false;
-
- if (arguments.length < 2) {
- filePath = mimetype;
- }
-
- var fragmentStart = filePath.indexOf('#');
- var fragment = '';
- if (fragmentStart !== -1) {
- fragment = filePath.slice(fragmentStart);
- filePath = filePath.slice(0, fragmentStart);
- }
-
- if (this.env.isPathRelative(filePath)) {
- if (this.currentFileInfo.relativeUrls) {
- filePath = path.join(this.currentFileInfo.currentDirectory, filePath);
- } else {
- filePath = path.join(this.currentFileInfo.entryPath, filePath);
- }
- }
-
- // detect the mimetype if not given
- if (arguments.length < 2) {
- var mime;
- try {
- mime = require('mime');
- } catch (ex) {
- mime = tree._mime;
- }
-
- mimetype = mime.lookup(filePath);
-
- // use base 64 unless it's an ASCII or UTF-8 format
- var charset = mime.charsets.lookup(mimetype);
- useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;
- if (useBase64) {
- mimetype += ';base64';
- }
- }
- else {
- useBase64 = /;base64$/.test(mimetype);
- }
-
- var buf = fs.readFileSync(filePath);
-
- // IE8 cannot handle a data-uri larger than 32KB. If this is exceeded
- // and the --ieCompat flag is enabled, return a normal url() instead.
- var DATA_URI_MAX_KB = 32,
- fileSizeInKB = parseInt((buf.length / 1024), 10);
- if (fileSizeInKB >= DATA_URI_MAX_KB) {
-
- if (this.env.ieCompat !== false) {
- if (!this.env.silent) {
- console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!", filePath, fileSizeInKB, DATA_URI_MAX_KB);
- }
-
- return new tree.URL(filePathNode || mimetypeNode, this.currentFileInfo).eval(this.env);
- }
- }
-
- buf = useBase64 ? buf.toString('base64')
- : encodeURIComponent(buf);
-
- var uri = "\"data:" + mimetype + ',' + buf + fragment + "\"";
- return new (tree.URL)(new (tree.Anonymous)(uri));
- },
-
- "svg-gradient": function (direction) {
-
- function throwArgumentDescriptor() {
- throw {
- type: "Argument",
- message: "svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"
- };
- }
-
- if (arguments.length < 3) {
- throwArgumentDescriptor();
- }
- var stops = Array.prototype.slice.call(arguments, 1),
- gradientDirectionSvg,
- gradientType = "linear",
- rectangleDimension = 'x="0" y="0" width="1" height="1"',
- useBase64 = true,
- renderEnv = {compress: false},
- returner,
- directionValue = direction.toCSS(renderEnv),
- i, color, position, positionValue, alpha;
-
- switch (directionValue) {
- case "to bottom":
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="0%" y2="100%"';
- break;
- case "to right":
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="0%"';
- break;
- case "to bottom right":
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="100%"';
- break;
- case "to top right":
- gradientDirectionSvg = 'x1="0%" y1="100%" x2="100%" y2="0%"';
- break;
- case "ellipse":
- case "ellipse at center":
- gradientType = "radial";
- gradientDirectionSvg = 'cx="50%" cy="50%" r="75%"';
- rectangleDimension = 'x="-50" y="-50" width="101" height="101"';
- break;
- default:
- throw {
- type: "Argument",
- message: "svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"
- };
- }
- returner = '' +
- '';
-
- if (useBase64) {
- try {
- returner = require('./encoder').encodeBase64(returner); // TODO browser implementation
- } catch (e) {
- useBase64 = false;
- }
- }
-
- returner = "'data:image/svg+xml" + (useBase64 ? ";base64" : "") + "," + returner + "'";
- return new (tree.URL)(new (tree.Anonymous)(returner));
- }
- };
-
-// these static methods are used as a fallback when the optional 'mime' dependency is missing
- tree._mime = {
- // this map is intentionally incomplete
- // if you want more, install 'mime' dep
- _types: {
- '.htm': 'text/html',
- '.html': 'text/html',
- '.gif': 'image/gif',
- '.jpg': 'image/jpeg',
- '.jpeg': 'image/jpeg',
- '.png': 'image/png'
- },
- lookup: function (filepath) {
- var ext = require('path').extname(filepath),
- type = tree._mime._types[ext];
- if (type === undefined) {
- throw new Error('Optional dependency "mime" is required for ' + ext);
- }
- return type;
- },
- charsets: {
- lookup: function (type) {
- // assumes all text types are UTF-8
- return type && (/^text\//).test(type) ? 'UTF-8' : '';
- }
- }
- };
-
-// Math
-
- var mathFunctions = {
- // name, unit
- ceil: null,
- floor: null,
- sqrt: null,
- abs: null,
- tan: "",
- sin: "",
- cos: "",
- atan: "rad",
- asin: "rad",
- acos: "rad"
- };
-
- function _math(fn, unit, n) {
- if (!(n instanceof tree.Dimension)) {
- throw {type: "Argument", message: "argument must be a number"};
- }
- if (unit == null) {
- unit = n.unit;
- } else {
- n = n.unify();
- }
- return new (tree.Dimension)(fn(parseFloat(n.value)), unit);
- }
-
-// ~ End of Math
-
-// Color Blending
-// ref: http://www.w3.org/TR/compositing-1
-
- function colorBlend(mode, color1, color2) {
- var ab = color1.alpha, cb, // backdrop
- as = color2.alpha, cs, // source
- ar, cr, r = []; // result
-
- ar = as + ab * (1 - as);
- for (var i = 0; i < 3; i++) {
- cb = color1.rgb[i] / 255;
- cs = color2.rgb[i] / 255;
- cr = mode(cb, cs);
- if (ar) {
- cr = (as * cs + ab * (cb
- - as * (cb + cs - cr))) / ar;
- }
- r[i] = cr * 255;
- }
-
- return new (tree.Color)(r, ar);
- }
-
- var colorBlendMode = {
- multiply: function (cb, cs) {
- return cb * cs;
- },
- screen: function (cb, cs) {
- return cb + cs - cb * cs;
- },
- overlay: function (cb, cs) {
- cb *= 2;
- return (cb <= 1)
- ? colorBlendMode.multiply(cb, cs)
- : colorBlendMode.screen(cb - 1, cs);
- },
- softlight: function (cb, cs) {
- var d = 1, e = cb;
- if (cs > 0.5) {
- e = 1;
- d = (cb > 0.25) ? Math.sqrt(cb)
- : ((16 * cb - 12) * cb + 4) * cb;
- }
- return cb - (1 - 2 * cs) * e * (d - cb);
- },
- hardlight: function (cb, cs) {
- return colorBlendMode.overlay(cs, cb);
- },
- difference: function (cb, cs) {
- return Math.abs(cb - cs);
- },
- exclusion: function (cb, cs) {
- return cb + cs - 2 * cb * cs;
- },
-
- // non-w3c functions:
- average: function (cb, cs) {
- return (cb + cs) / 2;
- },
- negation: function (cb, cs) {
- return 1 - Math.abs(cb + cs - 1);
- }
- };
-
-// ~ End of Color Blending
-
- tree.defaultFunc = {
- eval: function () {
- var v = this.value_, e = this.error_;
- if (e) {
- throw e;
- }
- if (v != null) {
- return v ? tree.True : tree.False;
- }
- },
- value: function (v) {
- this.value_ = v;
- },
- error: function (e) {
- this.error_ = e;
- },
- reset: function () {
- this.value_ = this.error_ = null;
- }
- };
-
- function initFunctions() {
- var f, tf = tree.functions;
-
- // math
- for (f in mathFunctions) {
- if (mathFunctions.hasOwnProperty(f)) {
- tf[f] = _math.bind(null, Math[f], mathFunctions[f]);
- }
- }
-
- // color blending
- for (f in colorBlendMode) {
- if (colorBlendMode.hasOwnProperty(f)) {
- tf[f] = colorBlend.bind(null, colorBlendMode[f]);
- }
- }
-
- // default
- f = tree.defaultFunc;
- tf["default"] = f.eval.bind(f);
-
- }
-
- initFunctions();
-
- function hsla(color) {
- return tree.functions.hsla(color.h, color.s, color.l, color.a);
- }
-
- function scaled(n, size) {
- if (n instanceof tree.Dimension && n.unit.is('%')) {
- return parseFloat(n.value * size / 100);
- } else {
- return number(n);
- }
- }
-
- function number(n) {
- if (n instanceof tree.Dimension) {
- return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);
- } else if (typeof(n) === 'number') {
- return n;
- } else {
- throw {
- error: "RuntimeError",
- message: "color functions take numbers as parameters"
- };
- }
- }
-
- function clamp(val) {
- return Math.min(1, Math.max(0, val));
- }
-
- tree.fround = function (env, value) {
- var p = env && env.numPrecision;
- //add "epsilon" to ensure numbers like 1.000000005 (represented as 1.000000004999....) are properly rounded...
- return (p == null) ? value : Number((value + 2e-16).toFixed(p));
- };
-
- tree.functionCall = function (env, currentFileInfo) {
- this.env = env;
- this.currentFileInfo = currentFileInfo;
- };
-
- tree.functionCall.prototype = tree.functions;
-
-})(require('./tree'));
-
-(function (tree) {
- tree.colors = {
- 'aliceblue': '#f0f8ff',
- 'antiquewhite': '#faebd7',
- 'aqua': '#00ffff',
- 'aquamarine': '#7fffd4',
- 'azure': '#f0ffff',
- 'beige': '#f5f5dc',
- 'bisque': '#ffe4c4',
- 'black': '#000000',
- 'blanchedalmond': '#ffebcd',
- 'blue': '#0000ff',
- 'blueviolet': '#8a2be2',
- 'brown': '#a52a2a',
- 'burlywood': '#deb887',
- 'cadetblue': '#5f9ea0',
- 'chartreuse': '#7fff00',
- 'chocolate': '#d2691e',
- 'coral': '#ff7f50',
- 'cornflowerblue': '#6495ed',
- 'cornsilk': '#fff8dc',
- 'crimson': '#dc143c',
- 'cyan': '#00ffff',
- 'darkblue': '#00008b',
- 'darkcyan': '#008b8b',
- 'darkgoldenrod': '#b8860b',
- 'darkgray': '#a9a9a9',
- 'darkgrey': '#a9a9a9',
- 'darkgreen': '#006400',
- 'darkkhaki': '#bdb76b',
- 'darkmagenta': '#8b008b',
- 'darkolivegreen': '#556b2f',
- 'darkorange': '#ff8c00',
- 'darkorchid': '#9932cc',
- 'darkred': '#8b0000',
- 'darksalmon': '#e9967a',
- 'darkseagreen': '#8fbc8f',
- 'darkslateblue': '#483d8b',
- 'darkslategray': '#2f4f4f',
- 'darkslategrey': '#2f4f4f',
- 'darkturquoise': '#00ced1',
- 'darkviolet': '#9400d3',
- 'deeppink': '#ff1493',
- 'deepskyblue': '#00bfff',
- 'dimgray': '#696969',
- 'dimgrey': '#696969',
- 'dodgerblue': '#1e90ff',
- 'firebrick': '#b22222',
- 'floralwhite': '#fffaf0',
- 'forestgreen': '#228b22',
- 'fuchsia': '#ff00ff',
- 'gainsboro': '#dcdcdc',
- 'ghostwhite': '#f8f8ff',
- 'gold': '#ffd700',
- 'goldenrod': '#daa520',
- 'gray': '#808080',
- 'grey': '#808080',
- 'green': '#008000',
- 'greenyellow': '#adff2f',
- 'honeydew': '#f0fff0',
- 'hotpink': '#ff69b4',
- 'indianred': '#cd5c5c',
- 'indigo': '#4b0082',
- 'ivory': '#fffff0',
- 'khaki': '#f0e68c',
- 'lavender': '#e6e6fa',
- 'lavenderblush': '#fff0f5',
- 'lawngreen': '#7cfc00',
- 'lemonchiffon': '#fffacd',
- 'lightblue': '#add8e6',
- 'lightcoral': '#f08080',
- 'lightcyan': '#e0ffff',
- 'lightgoldenrodyellow': '#fafad2',
- 'lightgray': '#d3d3d3',
- 'lightgrey': '#d3d3d3',
- 'lightgreen': '#90ee90',
- 'lightpink': '#ffb6c1',
- 'lightsalmon': '#ffa07a',
- 'lightseagreen': '#20b2aa',
- 'lightskyblue': '#87cefa',
- 'lightslategray': '#778899',
- 'lightslategrey': '#778899',
- 'lightsteelblue': '#b0c4de',
- 'lightyellow': '#ffffe0',
- 'lime': '#00ff00',
- 'limegreen': '#32cd32',
- 'linen': '#faf0e6',
- 'magenta': '#ff00ff',
- 'maroon': '#800000',
- 'mediumaquamarine': '#66cdaa',
- 'mediumblue': '#0000cd',
- 'mediumorchid': '#ba55d3',
- 'mediumpurple': '#9370d8',
- 'mediumseagreen': '#3cb371',
- 'mediumslateblue': '#7b68ee',
- 'mediumspringgreen': '#00fa9a',
- 'mediumturquoise': '#48d1cc',
- 'mediumvioletred': '#c71585',
- 'midnightblue': '#191970',
- 'mintcream': '#f5fffa',
- 'mistyrose': '#ffe4e1',
- 'moccasin': '#ffe4b5',
- 'navajowhite': '#ffdead',
- 'navy': '#000080',
- 'oldlace': '#fdf5e6',
- 'olive': '#808000',
- 'olivedrab': '#6b8e23',
- 'orange': '#ffa500',
- 'orangered': '#ff4500',
- 'orchid': '#da70d6',
- 'palegoldenrod': '#eee8aa',
- 'palegreen': '#98fb98',
- 'paleturquoise': '#afeeee',
- 'palevioletred': '#d87093',
- 'papayawhip': '#ffefd5',
- 'peachpuff': '#ffdab9',
- 'peru': '#cd853f',
- 'pink': '#ffc0cb',
- 'plum': '#dda0dd',
- 'powderblue': '#b0e0e6',
- 'purple': '#800080',
- 'red': '#ff0000',
- 'rosybrown': '#bc8f8f',
- 'royalblue': '#4169e1',
- 'saddlebrown': '#8b4513',
- 'salmon': '#fa8072',
- 'sandybrown': '#f4a460',
- 'seagreen': '#2e8b57',
- 'seashell': '#fff5ee',
- 'sienna': '#a0522d',
- 'silver': '#c0c0c0',
- 'skyblue': '#87ceeb',
- 'slateblue': '#6a5acd',
- 'slategray': '#708090',
- 'slategrey': '#708090',
- 'snow': '#fffafa',
- 'springgreen': '#00ff7f',
- 'steelblue': '#4682b4',
- 'tan': '#d2b48c',
- 'teal': '#008080',
- 'thistle': '#d8bfd8',
- 'tomato': '#ff6347',
- 'turquoise': '#40e0d0',
- 'violet': '#ee82ee',
- 'wheat': '#f5deb3',
- 'white': '#ffffff',
- 'whitesmoke': '#f5f5f5',
- 'yellow': '#ffff00',
- 'yellowgreen': '#9acd32'
- };
-})(require('./tree'));
-
-(function (tree) {
-
- tree.debugInfo = function (env, ctx, lineSeperator) {
- var result = "";
- if (env.dumpLineNumbers && !env.compress) {
- switch (env.dumpLineNumbers) {
- case 'comments':
- result = tree.debugInfo.asComment(ctx);
- break;
- case 'mediaquery':
- result = tree.debugInfo.asMediaQuery(ctx);
- break;
- case 'all':
- result = tree.debugInfo.asComment(ctx) + (lineSeperator || "") + tree.debugInfo.asMediaQuery(ctx);
- break;
- }
- }
- return result;
- };
-
- tree.debugInfo.asComment = function (ctx) {
- return '/* line ' + ctx.debugInfo.lineNumber + ', ' + ctx.debugInfo.fileName + ' */\n';
- };
-
- tree.debugInfo.asMediaQuery = function (ctx) {
- return '@media -sass-debug-info{filename{font-family:' +
- ('file://' + ctx.debugInfo.fileName).replace(/([.:\/\\])/g, function (a) {
- if (a == '\\') {
- a = '\/';
- }
- return '\\' + a;
- }) +
- '}line{font-family:\\00003' + ctx.debugInfo.lineNumber + '}}\n';
- };
-
- tree.find = function (obj, fun) {
- for (var i = 0, r; i < obj.length; i++) {
- r = fun.call(obj, obj[i]);
- if (r) {
- return r;
- }
- }
- return null;
- };
-
- tree.jsify = function (obj) {
- if (Array.isArray(obj.value) && (obj.value.length > 1)) {
- return '[' + obj.value.map(function (v) {
- return v.toCSS();
- }).join(', ') + ']';
- } else {
- return obj.toCSS();
- }
- };
-
- tree.toCSS = function (env) {
- var strs = [];
- this.genCSS(env, {
- add: function (chunk, fileInfo, index) {
- strs.push(chunk);
- },
- isEmpty: function () {
- return strs.length === 0;
- }
- });
- return strs.join('');
- };
-
- tree.outputRuleset = function (env, output, rules) {
- var ruleCnt = rules.length, i;
- env.tabLevel = (env.tabLevel | 0) + 1;
-
- // Compressed
- if (env.compress) {
- output.add('{');
- for (i = 0; i < ruleCnt; i++) {
- rules[i].genCSS(env, output);
- }
- output.add('}');
- env.tabLevel--;
- return;
- }
-
- // Non-compressed
- var tabSetStr = '\n' + Array(env.tabLevel).join(" "), tabRuleStr = tabSetStr + " ";
- if (!ruleCnt) {
- output.add(" {" + tabSetStr + '}');
- } else {
- output.add(" {" + tabRuleStr);
- rules[0].genCSS(env, output);
- for (i = 1; i < ruleCnt; i++) {
- output.add(tabRuleStr);
- rules[i].genCSS(env, output);
- }
- output.add(tabSetStr + '}');
- }
-
- env.tabLevel--;
- };
-
-})(require('./tree'));
-
-(function (tree) {
-
- tree.Alpha = function (val) {
- this.value = val;
- };
- tree.Alpha.prototype = {
- type: "Alpha",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- eval: function (env) {
- if (this.value.eval) {
- return new tree.Alpha(this.value.eval(env));
- }
- return this;
- },
- genCSS: function (env, output) {
- output.add("alpha(opacity=");
-
- if (this.value.genCSS) {
- this.value.genCSS(env, output);
- } else {
- output.add(this.value);
- }
-
- output.add(")");
- },
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Anonymous = function (value, index, currentFileInfo, mapLines, rulesetLike) {
- this.value = value;
- this.index = index;
- this.mapLines = mapLines;
- this.currentFileInfo = currentFileInfo;
- this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;
- };
- tree.Anonymous.prototype = {
- type: "Anonymous",
- eval: function () {
- return new tree.Anonymous(this.value, this.index, this.currentFileInfo, this.mapLines, this.rulesetLike);
- },
- compare: function (x) {
- if (!x.toCSS) {
- return -1;
- }
-
- var left = this.toCSS(),
- right = x.toCSS();
-
- if (left === right) {
- return 0;
- }
-
- return left < right ? -1 : 1;
- },
- isRulesetLike: function () {
- return this.rulesetLike;
- },
- genCSS: function (env, output) {
- output.add(this.value, this.currentFileInfo, this.index, this.mapLines);
- },
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Assignment = function (key, val) {
- this.key = key;
- this.value = val;
- };
- tree.Assignment.prototype = {
- type: "Assignment",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- eval: function (env) {
- if (this.value.eval) {
- return new (tree.Assignment)(this.key, this.value.eval(env));
- }
- return this;
- },
- genCSS: function (env, output) {
- output.add(this.key + '=');
- if (this.value.genCSS) {
- this.value.genCSS(env, output);
- } else {
- output.add(this.value);
- }
- },
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
-//
-// A function call node.
-//
- tree.Call = function (name, args, index, currentFileInfo) {
- this.name = name;
- this.args = args;
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- };
- tree.Call.prototype = {
- type: "Call",
- accept: function (visitor) {
- if (this.args) {
- this.args = visitor.visitArray(this.args);
- }
- },
- //
- // When evaluating a function call,
- // we either find the function in `tree.functions` [1],
- // in which case we call it, passing the evaluated arguments,
- // if this returns null or we cannot find the function, we
- // simply print it out as it appeared originally [2].
- //
- // The *functions.js* file contains the built-in functions.
- //
- // The reason why we evaluate the arguments, is in the case where
- // we try to pass a variable to a function, like: `saturate(@color)`.
- // The function should receive the value, not the variable.
- //
- eval: function (env) {
- var args = this.args.map(function (a) {
- return a.eval(env);
- }),
- nameLC = this.name.toLowerCase(),
- result, func;
-
- if (nameLC in tree.functions) { // 1.
- try {
- func = new tree.functionCall(env, this.currentFileInfo);
- result = func[nameLC].apply(func, args);
- if (result != null) {
- return result;
- }
- } catch (e) {
- throw {
- type: e.type || "Runtime",
- message: "error evaluating function `" + this.name + "`" +
- (e.message ? ': ' + e.message : ''),
- index: this.index, filename: this.currentFileInfo.filename
- };
- }
- }
-
- return new tree.Call(this.name, args, this.index, this.currentFileInfo);
- },
-
- genCSS: function (env, output) {
- output.add(this.name + "(", this.currentFileInfo, this.index);
-
- for (var i = 0; i < this.args.length; i++) {
- this.args[i].genCSS(env, output);
- if (i + 1 < this.args.length) {
- output.add(", ");
- }
- }
-
- output.add(")");
- },
-
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-//
-// RGB Colors - #ff0014, #eee
-//
- tree.Color = function (rgb, a) {
- //
- // The end goal here, is to parse the arguments
- // into an integer triplet, such as `128, 255, 0`
- //
- // This facilitates operations and conversions.
- //
- if (Array.isArray(rgb)) {
- this.rgb = rgb;
- } else if (rgb.length == 6) {
- this.rgb = rgb.match(/.{2}/g).map(function (c) {
- return parseInt(c, 16);
- });
- } else {
- this.rgb = rgb.split('').map(function (c) {
- return parseInt(c + c, 16);
- });
- }
- this.alpha = typeof(a) === 'number' ? a : 1;
- };
-
- var transparentKeyword = "transparent";
-
- tree.Color.prototype = {
- type: "Color",
- eval: function () {
- return this;
- },
- luma: function () {
- var r = this.rgb[0] / 255,
- g = this.rgb[1] / 255,
- b = this.rgb[2] / 255;
-
- r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);
- g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);
- b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);
-
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
- },
-
- genCSS: function (env, output) {
- output.add(this.toCSS(env));
- },
- toCSS: function (env, doNotCompress) {
- var compress = env && env.compress && !doNotCompress,
- alpha = tree.fround(env, this.alpha);
-
- // If we have some transparency, the only way to represent it
- // is via `rgba`. Otherwise, we use the hex representation,
- // which has better compatibility with older browsers.
- // Values are capped between `0` and `255`, rounded and zero-padded.
- if (alpha < 1) {
- if (alpha === 0 && this.isTransparentKeyword) {
- return transparentKeyword;
- }
- return "rgba(" + this.rgb.map(function (c) {
- return clamp(Math.round(c), 255);
- }).concat(clamp(alpha, 1))
- .join(',' + (compress ? '' : ' ')) + ")";
- } else {
- var color = this.toRGB();
-
- if (compress) {
- var splitcolor = color.split('');
-
- // Convert color to short format
- if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {
- color = '#' + splitcolor[1] + splitcolor[3] + splitcolor[5];
- }
- }
-
- return color;
- }
- },
-
- //
- // Operations have to be done per-channel, if not,
- // channels will spill onto each other. Once we have
- // our result, in the form of an integer triplet,
- // we create a new Color node to hold the result.
- //
- operate: function (env, op, other) {
- var rgb = [];
- var alpha = this.alpha * (1 - other.alpha) + other.alpha;
- for (var c = 0; c < 3; c++) {
- rgb[c] = tree.operate(env, op, this.rgb[c], other.rgb[c]);
- }
- return new (tree.Color)(rgb, alpha);
- },
-
- toRGB: function () {
- return toHex(this.rgb);
- },
-
- toHSL: function () {
- var r = this.rgb[0] / 255,
- g = this.rgb[1] / 255,
- b = this.rgb[2] / 255,
- a = this.alpha;
-
- var max = Math.max(r, g, b), min = Math.min(r, g, b);
- var h, s, l = (max + min) / 2, d = max - min;
-
- if (max === min) {
- h = s = 0;
- } else {
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
-
- switch (max) {
- case r:
- h = (g - b) / d + (g < b ? 6 : 0);
- break;
- case g:
- h = (b - r) / d + 2;
- break;
- case b:
- h = (r - g) / d + 4;
- break;
- }
- h /= 6;
- }
- return {h: h * 360, s: s, l: l, a: a};
- },
- //Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
- toHSV: function () {
- var r = this.rgb[0] / 255,
- g = this.rgb[1] / 255,
- b = this.rgb[2] / 255,
- a = this.alpha;
-
- var max = Math.max(r, g, b), min = Math.min(r, g, b);
- var h, s, v = max;
-
- var d = max - min;
- if (max === 0) {
- s = 0;
- } else {
- s = d / max;
- }
-
- if (max === min) {
- h = 0;
- } else {
- switch (max) {
- case r:
- h = (g - b) / d + (g < b ? 6 : 0);
- break;
- case g:
- h = (b - r) / d + 2;
- break;
- case b:
- h = (r - g) / d + 4;
- break;
- }
- h /= 6;
- }
- return {h: h * 360, s: s, v: v, a: a};
- },
- toARGB: function () {
- return toHex([this.alpha * 255].concat(this.rgb));
- },
- compare: function (x) {
- if (!x.rgb) {
- return -1;
- }
-
- return (x.rgb[0] === this.rgb[0] &&
- x.rgb[1] === this.rgb[1] &&
- x.rgb[2] === this.rgb[2] &&
- x.alpha === this.alpha) ? 0 : -1;
- }
- };
-
- tree.Color.fromKeyword = function (keyword) {
- keyword = keyword.toLowerCase();
-
- if (tree.colors.hasOwnProperty(keyword)) {
- // detect named color
- return new (tree.Color)(tree.colors[keyword].slice(1));
- }
- if (keyword === transparentKeyword) {
- var transparent = new (tree.Color)([0, 0, 0], 0);
- transparent.isTransparentKeyword = true;
- return transparent;
- }
- };
-
- function toHex(v) {
- return '#' + v.map(function (c) {
- c = clamp(Math.round(c), 255);
- return (c < 16 ? '0' : '') + c.toString(16);
- }).join('');
- }
-
- function clamp(v, max) {
- return Math.min(Math.max(v, 0), max);
- }
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Comment = function (value, silent, index, currentFileInfo) {
- this.value = value;
- this.silent = !!silent;
- this.currentFileInfo = currentFileInfo;
- };
- tree.Comment.prototype = {
- type: "Comment",
- genCSS: function (env, output) {
- if (this.debugInfo) {
- output.add(tree.debugInfo(env, this), this.currentFileInfo, this.index);
- }
- output.add(this.value.trim()); //TODO shouldn't need to trim, we shouldn't grab the \n
- },
- toCSS: tree.toCSS,
- isSilent: function (env) {
- var isReference = (this.currentFileInfo && this.currentFileInfo.reference && !this.isReferenced),
- isCompressed = env.compress && !this.value.match(/^\/\*!/);
- return this.silent || isReference || isCompressed;
- },
- eval: function () {
- return this;
- },
- markReferenced: function () {
- this.isReferenced = true;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Condition = function (op, l, r, i, negate) {
- this.op = op.trim();
- this.lvalue = l;
- this.rvalue = r;
- this.index = i;
- this.negate = negate;
- };
- tree.Condition.prototype = {
- type: "Condition",
- accept: function (visitor) {
- this.lvalue = visitor.visit(this.lvalue);
- this.rvalue = visitor.visit(this.rvalue);
- },
- eval: function (env) {
- var a = this.lvalue.eval(env),
- b = this.rvalue.eval(env);
-
- var i = this.index, result;
-
- result = (function (op) {
- switch (op) {
- case 'and':
- return a && b;
- case 'or':
- return a || b;
- default:
- if (a.compare) {
- result = a.compare(b);
- } else if (b.compare) {
- result = b.compare(a);
- } else {
- throw {
- type: "Type",
- message: "Unable to perform comparison",
- index: i
- };
- }
- switch (result) {
- case -1:
- return op === '<' || op === '=<' || op === '<=';
- case 0:
- return op === '=' || op === '>=' || op === '=<' || op === '<=';
- case 1:
- return op === '>' || op === '>=';
- }
- }
- })(this.op);
- return this.negate ? !result : result;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.DetachedRuleset = function (ruleset, frames) {
- this.ruleset = ruleset;
- this.frames = frames;
- };
- tree.DetachedRuleset.prototype = {
- type: "DetachedRuleset",
- accept: function (visitor) {
- this.ruleset = visitor.visit(this.ruleset);
- },
- eval: function (env) {
- var frames = this.frames || env.frames.slice(0);
- return new tree.DetachedRuleset(this.ruleset, frames);
- },
- callEval: function (env) {
- return this.ruleset.eval(this.frames ? new (tree.evalEnv)(env, this.frames.concat(env.frames)) : env);
- }
- };
-})(require('../tree'));
-
-(function (tree) {
-
-//
-// A number with a unit
-//
- tree.Dimension = function (value, unit) {
- this.value = parseFloat(value);
- this.unit = (unit && unit instanceof tree.Unit) ? unit :
- new (tree.Unit)(unit ? [unit] : undefined);
- };
-
- tree.Dimension.prototype = {
- type: "Dimension",
- accept: function (visitor) {
- this.unit = visitor.visit(this.unit);
- },
- eval: function (env) {
- return this;
- },
- toColor: function () {
- return new (tree.Color)([this.value, this.value, this.value]);
- },
- genCSS: function (env, output) {
- if ((env && env.strictUnits) && !this.unit.isSingular()) {
- throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString());
- }
-
- var value = tree.fround(env, this.value),
- strValue = String(value);
-
- if (value !== 0 && value < 0.000001 && value > -0.000001) {
- // would be output 1e-6 etc.
- strValue = value.toFixed(20).replace(/0+$/, "");
- }
-
- if (env && env.compress) {
- // Zero values doesn't need a unit
- if (value === 0 && this.unit.isLength()) {
- output.add(strValue);
- return;
- }
-
- // Float values doesn't need a leading zero
- if (value > 0 && value < 1) {
- strValue = (strValue).substr(1);
- }
- }
-
- output.add(strValue);
- this.unit.genCSS(env, output);
- },
- toCSS: tree.toCSS,
-
- // In an operation between two Dimensions,
- // we default to the first Dimension's unit,
- // so `1px + 2` will yield `3px`.
- operate: function (env, op, other) {
- /*jshint noempty:false */
- var value = tree.operate(env, op, this.value, other.value),
- unit = this.unit.clone();
-
- if (op === '+' || op === '-') {
- if (unit.numerator.length === 0 && unit.denominator.length === 0) {
- unit.numerator = other.unit.numerator.slice(0);
- unit.denominator = other.unit.denominator.slice(0);
- } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {
- // do nothing
- } else {
- other = other.convertTo(this.unit.usedUnits());
-
- if (env.strictUnits && other.unit.toString() !== unit.toString()) {
- throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '" + unit.toString() +
- "' and '" + other.unit.toString() + "'.");
- }
-
- value = tree.operate(env, op, this.value, other.value);
- }
- } else if (op === '*') {
- unit.numerator = unit.numerator.concat(other.unit.numerator).sort();
- unit.denominator = unit.denominator.concat(other.unit.denominator).sort();
- unit.cancel();
- } else if (op === '/') {
- unit.numerator = unit.numerator.concat(other.unit.denominator).sort();
- unit.denominator = unit.denominator.concat(other.unit.numerator).sort();
- unit.cancel();
- }
- return new (tree.Dimension)(value, unit);
- },
-
- compare: function (other) {
- if (other instanceof tree.Dimension) {
- var a, b,
- aValue, bValue;
-
- if (this.unit.isEmpty() || other.unit.isEmpty()) {
- a = this;
- b = other;
- } else {
- a = this.unify();
- b = other.unify();
- if (a.unit.compare(b.unit) !== 0) {
- return -1;
- }
- }
- aValue = a.value;
- bValue = b.value;
-
- if (bValue > aValue) {
- return -1;
- } else if (bValue < aValue) {
- return 1;
- } else {
- return 0;
- }
- } else {
- return -1;
- }
- },
-
- unify: function () {
- return this.convertTo({length: 'px', duration: 's', angle: 'rad'});
- },
-
- convertTo: function (conversions) {
- var value = this.value, unit = this.unit.clone(),
- i, groupName, group, targetUnit, derivedConversions = {}, applyUnit;
-
- if (typeof conversions === 'string') {
- for (i in tree.UnitConversions) {
- if (tree.UnitConversions[i].hasOwnProperty(conversions)) {
- derivedConversions = {};
- derivedConversions[i] = conversions;
- }
- }
- conversions = derivedConversions;
- }
- applyUnit = function (atomicUnit, denominator) {
- /*jshint loopfunc:true */
- if (group.hasOwnProperty(atomicUnit)) {
- if (denominator) {
- value = value / (group[atomicUnit] / group[targetUnit]);
- } else {
- value = value * (group[atomicUnit] / group[targetUnit]);
- }
-
- return targetUnit;
- }
-
- return atomicUnit;
- };
-
- for (groupName in conversions) {
- if (conversions.hasOwnProperty(groupName)) {
- targetUnit = conversions[groupName];
- group = tree.UnitConversions[groupName];
-
- unit.map(applyUnit);
- }
- }
-
- unit.cancel();
-
- return new (tree.Dimension)(value, unit);
- }
- };
-
-// http://www.w3.org/TR/css3-values/#absolute-lengths
- tree.UnitConversions = {
- length: {
- 'm': 1,
- 'cm': 0.01,
- 'mm': 0.001,
- 'in': 0.0254,
- 'px': 0.0254 / 96,
- 'pt': 0.0254 / 72,
- 'pc': 0.0254 / 72 * 12
- },
- duration: {
- 's': 1,
- 'ms': 0.001
- },
- angle: {
- 'rad': 1 / (2 * Math.PI),
- 'deg': 1 / 360,
- 'grad': 1 / 400,
- 'turn': 1
- }
- };
-
- tree.Unit = function (numerator, denominator, backupUnit) {
- this.numerator = numerator ? numerator.slice(0).sort() : [];
- this.denominator = denominator ? denominator.slice(0).sort() : [];
- this.backupUnit = backupUnit;
- };
-
- tree.Unit.prototype = {
- type: "Unit",
- clone: function () {
- return new tree.Unit(this.numerator.slice(0), this.denominator.slice(0), this.backupUnit);
- },
- genCSS: function (env, output) {
- if (this.numerator.length >= 1) {
- output.add(this.numerator[0]);
- } else if (this.denominator.length >= 1) {
- output.add(this.denominator[0]);
- } else if ((!env || !env.strictUnits) && this.backupUnit) {
- output.add(this.backupUnit);
- }
- },
- toCSS: tree.toCSS,
-
- toString: function () {
- var i, returnStr = this.numerator.join("*");
- for (i = 0; i < this.denominator.length; i++) {
- returnStr += "/" + this.denominator[i];
- }
- return returnStr;
- },
-
- compare: function (other) {
- return this.is(other.toString()) ? 0 : -1;
- },
-
- is: function (unitString) {
- return this.toString() === unitString;
- },
-
- isLength: function () {
- return Boolean(this.toCSS().match(/px|em|%|in|cm|mm|pc|pt|ex/));
- },
-
- isEmpty: function () {
- return this.numerator.length === 0 && this.denominator.length === 0;
- },
-
- isSingular: function () {
- return this.numerator.length <= 1 && this.denominator.length === 0;
- },
-
- map: function (callback) {
- var i;
-
- for (i = 0; i < this.numerator.length; i++) {
- this.numerator[i] = callback(this.numerator[i], false);
- }
-
- for (i = 0; i < this.denominator.length; i++) {
- this.denominator[i] = callback(this.denominator[i], true);
- }
- },
-
- usedUnits: function () {
- var group, result = {}, mapUnit;
-
- mapUnit = function (atomicUnit) {
- /*jshint loopfunc:true */
- if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {
- result[groupName] = atomicUnit;
- }
-
- return atomicUnit;
- };
-
- for (var groupName in tree.UnitConversions) {
- if (tree.UnitConversions.hasOwnProperty(groupName)) {
- group = tree.UnitConversions[groupName];
-
- this.map(mapUnit);
- }
- }
-
- return result;
- },
-
- cancel: function () {
- var counter = {}, atomicUnit, i, backup;
-
- for (i = 0; i < this.numerator.length; i++) {
- atomicUnit = this.numerator[i];
- if (!backup) {
- backup = atomicUnit;
- }
- counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;
- }
-
- for (i = 0; i < this.denominator.length; i++) {
- atomicUnit = this.denominator[i];
- if (!backup) {
- backup = atomicUnit;
- }
- counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;
- }
-
- this.numerator = [];
- this.denominator = [];
-
- for (atomicUnit in counter) {
- if (counter.hasOwnProperty(atomicUnit)) {
- var count = counter[atomicUnit];
-
- if (count > 0) {
- for (i = 0; i < count; i++) {
- this.numerator.push(atomicUnit);
- }
- } else if (count < 0) {
- for (i = 0; i < -count; i++) {
- this.denominator.push(atomicUnit);
- }
- }
- }
- }
-
- if (this.numerator.length === 0 && this.denominator.length === 0 && backup) {
- this.backupUnit = backup;
- }
-
- this.numerator.sort();
- this.denominator.sort();
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Directive = function (name, value, rules, index, currentFileInfo, debugInfo) {
- this.name = name;
- this.value = value;
- if (rules) {
- this.rules = rules;
- this.rules.allowImports = true;
- }
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- this.debugInfo = debugInfo;
- };
-
- tree.Directive.prototype = {
- type: "Directive",
- accept: function (visitor) {
- var value = this.value, rules = this.rules;
- if (rules) {
- rules = visitor.visit(rules);
- }
- if (value) {
- value = visitor.visit(value);
- }
- },
- isRulesetLike: function () {
- return !this.isCharset();
- },
- isCharset: function () {
- return "@charset" === this.name;
- },
- genCSS: function (env, output) {
- var value = this.value, rules = this.rules;
- output.add(this.name, this.currentFileInfo, this.index);
- if (value) {
- output.add(' ');
- value.genCSS(env, output);
- }
- if (rules) {
- tree.outputRuleset(env, output, [rules]);
- } else {
- output.add(';');
- }
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- var value = this.value, rules = this.rules;
- if (value) {
- value = value.eval(env);
- }
- if (rules) {
- rules = rules.eval(env);
- rules.root = true;
- }
- return new (tree.Directive)(this.name, value, rules,
- this.index, this.currentFileInfo, this.debugInfo);
- },
- variable: function (name) {
- if (this.rules) return tree.Ruleset.prototype.variable.call(this.rules, name);
- },
- find: function () {
- if (this.rules) return tree.Ruleset.prototype.find.apply(this.rules, arguments);
- },
- rulesets: function () {
- if (this.rules) return tree.Ruleset.prototype.rulesets.apply(this.rules);
- },
- markReferenced: function () {
- var i, rules;
- this.isReferenced = true;
- if (this.rules) {
- rules = this.rules.rules;
- for (i = 0; i < rules.length; i++) {
- if (rules[i].markReferenced) {
- rules[i].markReferenced();
- }
- }
- }
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Element = function (combinator, value, index, currentFileInfo) {
- this.combinator = combinator instanceof tree.Combinator ?
- combinator : new (tree.Combinator)(combinator);
-
- if (typeof(value) === 'string') {
- this.value = value.trim();
- } else if (value) {
- this.value = value;
- } else {
- this.value = "";
- }
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- };
- tree.Element.prototype = {
- type: "Element",
- accept: function (visitor) {
- var value = this.value;
- this.combinator = visitor.visit(this.combinator);
- if (typeof value === "object") {
- this.value = visitor.visit(value);
- }
- },
- eval: function (env) {
- return new (tree.Element)(this.combinator,
- this.value.eval ? this.value.eval(env) : this.value,
- this.index,
- this.currentFileInfo);
- },
- genCSS: function (env, output) {
- output.add(this.toCSS(env), this.currentFileInfo, this.index);
- },
- toCSS: function (env) {
- var value = (this.value.toCSS ? this.value.toCSS(env) : this.value);
- if (value === '' && this.combinator.value.charAt(0) === '&') {
- return '';
- } else {
- return this.combinator.toCSS(env || {}) + value;
- }
- }
- };
-
- tree.Attribute = function (key, op, value) {
- this.key = key;
- this.op = op;
- this.value = value;
- };
- tree.Attribute.prototype = {
- type: "Attribute",
- eval: function (env) {
- return new (tree.Attribute)(this.key.eval ? this.key.eval(env) : this.key,
- this.op, (this.value && this.value.eval) ? this.value.eval(env) : this.value);
- },
- genCSS: function (env, output) {
- output.add(this.toCSS(env));
- },
- toCSS: function (env) {
- var value = this.key.toCSS ? this.key.toCSS(env) : this.key;
-
- if (this.op) {
- value += this.op;
- value += (this.value.toCSS ? this.value.toCSS(env) : this.value);
- }
-
- return '[' + value + ']';
- }
- };
-
- tree.Combinator = function (value) {
- if (value === ' ') {
- this.value = ' ';
- } else {
- this.value = value ? value.trim() : "";
- }
- };
- tree.Combinator.prototype = {
- type: "Combinator",
- _noSpaceCombinators: {
- '': true,
- ' ': true,
- '|': true
- },
- genCSS: function (env, output) {
- var spaceOrEmpty = (env.compress || this._noSpaceCombinators[this.value]) ? '' : ' ';
- output.add(spaceOrEmpty + this.value + spaceOrEmpty);
- },
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Expression = function (value) {
- this.value = value;
- };
- tree.Expression.prototype = {
- type: "Expression",
- accept: function (visitor) {
- if (this.value) {
- this.value = visitor.visitArray(this.value);
- }
- },
- eval: function (env) {
- var returnValue,
- inParenthesis = this.parens && !this.parensInOp,
- doubleParen = false;
- if (inParenthesis) {
- env.inParenthesis();
- }
- if (this.value.length > 1) {
- returnValue = new (tree.Expression)(this.value.map(function (e) {
- return e.eval(env);
- }));
- } else if (this.value.length === 1) {
- if (this.value[0].parens && !this.value[0].parensInOp) {
- doubleParen = true;
- }
- returnValue = this.value[0].eval(env);
- } else {
- returnValue = this;
- }
- if (inParenthesis) {
- env.outOfParenthesis();
- }
- if (this.parens && this.parensInOp && !(env.isMathOn()) && !doubleParen) {
- returnValue = new (tree.Paren)(returnValue);
- }
- return returnValue;
- },
- genCSS: function (env, output) {
- for (var i = 0; i < this.value.length; i++) {
- this.value[i].genCSS(env, output);
- if (i + 1 < this.value.length) {
- output.add(" ");
- }
- }
- },
- toCSS: tree.toCSS,
- throwAwayComments: function () {
- this.value = this.value.filter(function (v) {
- return !(v instanceof tree.Comment);
- });
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Extend = function Extend(selector, option, index) {
- this.selector = selector;
- this.option = option;
- this.index = index;
- this.object_id = tree.Extend.next_id++;
- this.parent_ids = [this.object_id];
-
- switch (option) {
- case "all":
- this.allowBefore = true;
- this.allowAfter = true;
- break;
- default:
- this.allowBefore = false;
- this.allowAfter = false;
- break;
- }
- };
- tree.Extend.next_id = 0;
-
- tree.Extend.prototype = {
- type: "Extend",
- accept: function (visitor) {
- this.selector = visitor.visit(this.selector);
- },
- eval: function (env) {
- return new (tree.Extend)(this.selector.eval(env), this.option, this.index);
- },
- clone: function (env) {
- return new (tree.Extend)(this.selector, this.option, this.index);
- },
- findSelfSelectors: function (selectors) {
- var selfElements = [],
- i,
- selectorElements;
-
- for (i = 0; i < selectors.length; i++) {
- selectorElements = selectors[i].elements;
- // duplicate the logic in genCSS function inside the selector node.
- // future TODO - move both logics into the selector joiner visitor
- if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === "") {
- selectorElements[0].combinator.value = ' ';
- }
- selfElements = selfElements.concat(selectors[i].elements);
- }
-
- this.selfSelectors = [{elements: selfElements}];
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-//
-// CSS @import node
-//
-// The general strategy here is that we don't want to wait
-// for the parsing to be completed, before we start importing
-// the file. That's because in the context of a browser,
-// most of the time will be spent waiting for the server to respond.
-//
-// On creation, we push the import path to our import queue, though
-// `import,push`, we also pass it a callback, which it'll call once
-// the file has been fetched, and parsed.
-//
- tree.Import = function (path, features, options, index, currentFileInfo) {
- this.options = options;
- this.index = index;
- this.path = path;
- this.features = features;
- this.currentFileInfo = currentFileInfo;
-
- if (this.options.less !== undefined || this.options.inline) {
- this.css = !this.options.less || this.options.inline;
- } else {
- var pathValue = this.getPath();
- if (pathValue && /css([\?;].*)?$/.test(pathValue)) {
- this.css = true;
- }
- }
- };
-
-//
-// The actual import node doesn't return anything, when converted to CSS.
-// The reason is that it's used at the evaluation stage, so that the rules
-// it imports can be treated like any other rules.
-//
-// In `eval`, we make sure all Import nodes get evaluated, recursively, so
-// we end up with a flat structure, which can easily be imported in the parent
-// ruleset.
-//
- tree.Import.prototype = {
- type: "Import",
- accept: function (visitor) {
- if (this.features) {
- this.features = visitor.visit(this.features);
- }
- this.path = visitor.visit(this.path);
- if (!this.options.inline && this.root) {
- this.root = visitor.visit(this.root);
- }
- },
- genCSS: function (env, output) {
- if (this.css) {
- output.add("@import ", this.currentFileInfo, this.index);
- this.path.genCSS(env, output);
- if (this.features) {
- output.add(" ");
- this.features.genCSS(env, output);
- }
- output.add(';');
- }
- },
- toCSS: tree.toCSS,
- getPath: function () {
- if (this.path instanceof tree.Quoted) {
- var path = this.path.value;
- return (this.css !== undefined || /(\.[a-z]*$)|([\?;].*)$/.test(path)) ? path : path + '.less';
- } else if (this.path instanceof tree.URL) {
- return this.path.value.value;
- }
- return null;
- },
- evalForImport: function (env) {
- return new (tree.Import)(this.path.eval(env), this.features, this.options, this.index, this.currentFileInfo);
- },
- evalPath: function (env) {
- var path = this.path.eval(env);
- var rootpath = this.currentFileInfo && this.currentFileInfo.rootpath;
-
- if (!(path instanceof tree.URL)) {
- if (rootpath) {
- var pathValue = path.value;
- // Add the base path if the import is relative
- if (pathValue && env.isPathRelative(pathValue)) {
- path.value = rootpath + pathValue;
- }
- }
- path.value = env.normalizePath(path.value);
- }
-
- return path;
- },
- eval: function (env) {
- var ruleset, features = this.features && this.features.eval(env);
-
- if (this.skip) {
- if (typeof this.skip === "function") {
- this.skip = this.skip();
- }
- if (this.skip) {
- return [];
- }
- }
-
- if (this.options.inline) {
- //todo needs to reference css file not import
- var contents = new (tree.Anonymous)(this.root, 0, {filename: this.importedFilename}, true, true);
- return this.features ? new (tree.Media)([contents], this.features.value) : [contents];
- } else if (this.css) {
- var newImport = new (tree.Import)(this.evalPath(env), features, this.options, this.index);
- if (!newImport.css && this.error) {
- throw this.error;
- }
- return newImport;
- } else {
- ruleset = new (tree.Ruleset)(null, this.root.rules.slice(0));
-
- ruleset.evalImports(env);
-
- return this.features ? new (tree.Media)(ruleset.rules, this.features.value) : ruleset.rules;
- }
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.JavaScript = function (string, index, escaped) {
- this.escaped = escaped;
- this.expression = string;
- this.index = index;
- };
- tree.JavaScript.prototype = {
- type: "JavaScript",
- eval: function (env) {
- var result,
- that = this,
- context = {};
-
- var expression = this.expression.replace(/@\{([\w-]+)\}/g, function (_, name) {
- return tree.jsify(new (tree.Variable)('@' + name, that.index).eval(env));
- });
-
- try {
- expression = new (Function)('return (' + expression + ')');
- } catch (e) {
- throw {
- message: "JavaScript evaluation error: " + e.message + " from `" + expression + "`",
- index: this.index
- };
- }
-
- var variables = env.frames[0].variables();
- for (var k in variables) {
- if (variables.hasOwnProperty(k)) {
- /*jshint loopfunc:true */
- context[k.slice(1)] = {
- value: variables[k].value,
- toJS: function () {
- return this.value.eval(env).toCSS();
- }
- };
- }
- }
-
- try {
- result = expression.call(context);
- } catch (e) {
- throw {
- message: "JavaScript evaluation error: '" + e.name + ': ' + e.message.replace(/["]/g, "'") + "'",
- index: this.index
- };
- }
- if (typeof(result) === 'number') {
- return new (tree.Dimension)(result);
- } else if (typeof(result) === 'string') {
- return new (tree.Quoted)('"' + result + '"', result, this.escaped, this.index);
- } else if (Array.isArray(result)) {
- return new (tree.Anonymous)(result.join(', '));
- } else {
- return new (tree.Anonymous)(result);
- }
- }
- };
-
-})(require('../tree'));
-
-
-(function (tree) {
-
- tree.Keyword = function (value) {
- this.value = value;
- };
- tree.Keyword.prototype = {
- type: "Keyword",
- eval: function () {
- return this;
- },
- genCSS: function (env, output) {
- if (this.value === '%') {
- throw {type: "Syntax", message: "Invalid % without number"};
- }
- output.add(this.value);
- },
- toCSS: tree.toCSS,
- compare: function (other) {
- if (other instanceof tree.Keyword) {
- return other.value === this.value ? 0 : 1;
- } else {
- return -1;
- }
- }
- };
-
- tree.True = new (tree.Keyword)('true');
- tree.False = new (tree.Keyword)('false');
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Media = function (value, features, index, currentFileInfo) {
- this.index = index;
- this.currentFileInfo = currentFileInfo;
-
- var selectors = this.emptySelectors();
-
- this.features = new (tree.Value)(features);
- this.rules = [new (tree.Ruleset)(selectors, value)];
- this.rules[0].allowImports = true;
- };
- tree.Media.prototype = {
- type: "Media",
- accept: function (visitor) {
- if (this.features) {
- this.features = visitor.visit(this.features);
- }
- if (this.rules) {
- this.rules = visitor.visitArray(this.rules);
- }
- },
- genCSS: function (env, output) {
- output.add('@media ', this.currentFileInfo, this.index);
- this.features.genCSS(env, output);
- tree.outputRuleset(env, output, this.rules);
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- if (!env.mediaBlocks) {
- env.mediaBlocks = [];
- env.mediaPath = [];
- }
-
- var media = new (tree.Media)(null, [], this.index, this.currentFileInfo);
- if (this.debugInfo) {
- this.rules[0].debugInfo = this.debugInfo;
- media.debugInfo = this.debugInfo;
- }
- var strictMathBypass = false;
- if (!env.strictMath) {
- strictMathBypass = true;
- env.strictMath = true;
- }
- try {
- media.features = this.features.eval(env);
- }
- finally {
- if (strictMathBypass) {
- env.strictMath = false;
- }
- }
-
- env.mediaPath.push(media);
- env.mediaBlocks.push(media);
-
- env.frames.unshift(this.rules[0]);
- media.rules = [this.rules[0].eval(env)];
- env.frames.shift();
-
- env.mediaPath.pop();
-
- return env.mediaPath.length === 0 ? media.evalTop(env) :
- media.evalNested(env);
- },
- variable: function (name) {
- return tree.Ruleset.prototype.variable.call(this.rules[0], name);
- },
- find: function () {
- return tree.Ruleset.prototype.find.apply(this.rules[0], arguments);
- },
- rulesets: function () {
- return tree.Ruleset.prototype.rulesets.apply(this.rules[0]);
- },
- emptySelectors: function () {
- var el = new (tree.Element)('', '&', this.index, this.currentFileInfo),
- sels = [new (tree.Selector)([el], null, null, this.index, this.currentFileInfo)];
- sels[0].mediaEmpty = true;
- return sels;
- },
- markReferenced: function () {
- var i, rules = this.rules[0].rules;
- this.rules[0].markReferenced();
- this.isReferenced = true;
- for (i = 0; i < rules.length; i++) {
- if (rules[i].markReferenced) {
- rules[i].markReferenced();
- }
- }
- },
-
- evalTop: function (env) {
- var result = this;
-
- // Render all dependent Media blocks.
- if (env.mediaBlocks.length > 1) {
- var selectors = this.emptySelectors();
- result = new (tree.Ruleset)(selectors, env.mediaBlocks);
- result.multiMedia = true;
- }
-
- delete env.mediaBlocks;
- delete env.mediaPath;
-
- return result;
- },
- evalNested: function (env) {
- var i, value,
- path = env.mediaPath.concat([this]);
-
- // Extract the media-query conditions separated with `,` (OR).
- for (i = 0; i < path.length; i++) {
- value = path[i].features instanceof tree.Value ?
- path[i].features.value : path[i].features;
- path[i] = Array.isArray(value) ? value : [value];
- }
-
- // Trace all permutations to generate the resulting media-query.
- //
- // (a, b and c) with nested (d, e) ->
- // a and d
- // a and e
- // b and c and d
- // b and c and e
- this.features = new (tree.Value)(this.permute(path).map(function (path) {
- path = path.map(function (fragment) {
- return fragment.toCSS ? fragment : new (tree.Anonymous)(fragment);
- });
-
- for (i = path.length - 1; i > 0; i--) {
- path.splice(i, 0, new (tree.Anonymous)("and"));
- }
-
- return new (tree.Expression)(path);
- }));
-
- // Fake a tree-node that doesn't output anything.
- return new (tree.Ruleset)([], []);
- },
- permute: function (arr) {
- if (arr.length === 0) {
- return [];
- } else if (arr.length === 1) {
- return arr[0];
- } else {
- var result = [];
- var rest = this.permute(arr.slice(1));
- for (var i = 0; i < rest.length; i++) {
- for (var j = 0; j < arr[0].length; j++) {
- result.push([arr[0][j]].concat(rest[i]));
- }
- }
- return result;
- }
- },
- bubbleSelectors: function (selectors) {
- if (!selectors)
- return;
- this.rules = [new (tree.Ruleset)(selectors.slice(0), [this.rules[0]])];
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.mixin = {};
- tree.mixin.Call = function (elements, args, index, currentFileInfo, important) {
- this.selector = new (tree.Selector)(elements);
- this.arguments = (args && args.length) ? args : null;
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- this.important = important;
- };
- tree.mixin.Call.prototype = {
- type: "MixinCall",
- accept: function (visitor) {
- if (this.selector) {
- this.selector = visitor.visit(this.selector);
- }
- if (this.arguments) {
- this.arguments = visitor.visitArray(this.arguments);
- }
- },
- eval: function (env) {
- var mixins, mixin, args, rules = [], match = false, i, m, f, isRecursive, isOneFound, rule,
- candidates = [], candidate, conditionResult = [], defaultFunc = tree.defaultFunc,
- defaultResult, defNone = 0, defTrue = 1, defFalse = 2, count, originalRuleset;
-
- args = this.arguments && this.arguments.map(function (a) {
- return {name: a.name, value: a.value.eval(env)};
- });
-
- for (i = 0; i < env.frames.length; i++) {
- if ((mixins = env.frames[i].find(this.selector)).length > 0) {
- isOneFound = true;
-
- // To make `default()` function independent of definition order we have two "subpasses" here.
- // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),
- // and build candidate list with corresponding flags. Then, when we know all possible matches,
- // we make a final decision.
-
- for (m = 0; m < mixins.length; m++) {
- mixin = mixins[m];
- isRecursive = false;
- for (f = 0; f < env.frames.length; f++) {
- if ((!(mixin instanceof tree.mixin.Definition)) && mixin === (env.frames[f].originalRuleset || env.frames[f])) {
- isRecursive = true;
- break;
- }
- }
- if (isRecursive) {
- continue;
- }
-
- if (mixin.matchArgs(args, env)) {
- candidate = {mixin: mixin, group: defNone};
-
- if (mixin.matchCondition) {
- for (f = 0; f < 2; f++) {
- defaultFunc.value(f);
- conditionResult[f] = mixin.matchCondition(args, env);
- }
- if (conditionResult[0] || conditionResult[1]) {
- if (conditionResult[0] != conditionResult[1]) {
- candidate.group = conditionResult[1] ?
- defTrue : defFalse;
- }
-
- candidates.push(candidate);
- }
- }
- else {
- candidates.push(candidate);
- }
-
- match = true;
- }
- }
-
- defaultFunc.reset();
-
- count = [0, 0, 0];
- for (m = 0; m < candidates.length; m++) {
- count[candidates[m].group]++;
- }
-
- if (count[defNone] > 0) {
- defaultResult = defFalse;
- } else {
- defaultResult = defTrue;
- if ((count[defTrue] + count[defFalse]) > 1) {
- throw {
- type: 'Runtime',
- message: 'Ambiguous use of `default()` found when matching for `'
- + this.format(args) + '`',
- index: this.index, filename: this.currentFileInfo.filename
- };
- }
- }
-
- for (m = 0; m < candidates.length; m++) {
- candidate = candidates[m].group;
- if ((candidate === defNone) || (candidate === defaultResult)) {
- try {
- mixin = candidates[m].mixin;
- if (!(mixin instanceof tree.mixin.Definition)) {
- originalRuleset = mixin.originalRuleset || mixin;
- mixin = new tree.mixin.Definition("", [], mixin.rules, null, false);
- mixin.originalRuleset = originalRuleset;
- }
- Array.prototype.push.apply(
- rules, mixin.evalCall(env, args, this.important).rules);
- } catch (e) {
- throw {
- message: e.message,
- index: this.index,
- filename: this.currentFileInfo.filename,
- stack: e.stack
- };
- }
- }
- }
-
- if (match) {
- if (!this.currentFileInfo || !this.currentFileInfo.reference) {
- for (i = 0; i < rules.length; i++) {
- rule = rules[i];
- if (rule.markReferenced) {
- rule.markReferenced();
- }
- }
- }
- return rules;
- }
- }
- }
- if (isOneFound) {
- throw {
- type: 'Runtime',
- message: 'No matching definition was found for `' + this.format(args) + '`',
- index: this.index, filename: this.currentFileInfo.filename
- };
- } else {
- throw {
- type: 'Name',
- message: this.selector.toCSS().trim() + " is undefined",
- index: this.index, filename: this.currentFileInfo.filename
- };
- }
- },
- format: function (args) {
- return this.selector.toCSS().trim() + '(' +
- (args ? args.map(function (a) {
- var argValue = "";
- if (a.name) {
- argValue += a.name + ":";
- }
- if (a.value.toCSS) {
- argValue += a.value.toCSS();
- } else {
- argValue += "???";
- }
- return argValue;
- }).join(', ') : "") + ")";
- }
- };
-
- tree.mixin.Definition = function (name, params, rules, condition, variadic, frames) {
- this.name = name;
- this.selectors = [new (tree.Selector)([new (tree.Element)(null, name, this.index, this.currentFileInfo)])];
- this.params = params;
- this.condition = condition;
- this.variadic = variadic;
- this.arity = params.length;
- this.rules = rules;
- this._lookups = {};
- this.required = params.reduce(function (count, p) {
- if (!p.name || (p.name && !p.value)) {
- return count + 1;
- }
- else {
- return count;
- }
- }, 0);
- this.parent = tree.Ruleset.prototype;
- this.frames = frames;
- };
- tree.mixin.Definition.prototype = {
- type: "MixinDefinition",
- accept: function (visitor) {
- if (this.params && this.params.length) {
- this.params = visitor.visitArray(this.params);
- }
- this.rules = visitor.visitArray(this.rules);
- if (this.condition) {
- this.condition = visitor.visit(this.condition);
- }
- },
- variable: function (name) {
- return this.parent.variable.call(this, name);
- },
- variables: function () {
- return this.parent.variables.call(this);
- },
- find: function () {
- return this.parent.find.apply(this, arguments);
- },
- rulesets: function () {
- return this.parent.rulesets.apply(this);
- },
-
- evalParams: function (env, mixinEnv, args, evaldArguments) {
- /*jshint boss:true */
- var frame = new (tree.Ruleset)(null, null),
- varargs, arg,
- params = this.params.slice(0),
- i, j, val, name, isNamedFound, argIndex, argsLength = 0;
-
- mixinEnv = new tree.evalEnv(mixinEnv, [frame].concat(mixinEnv.frames));
-
- if (args) {
- args = args.slice(0);
- argsLength = args.length;
-
- for (i = 0; i < argsLength; i++) {
- arg = args[i];
- if (name = (arg && arg.name)) {
- isNamedFound = false;
- for (j = 0; j < params.length; j++) {
- if (!evaldArguments[j] && name === params[j].name) {
- evaldArguments[j] = arg.value.eval(env);
- frame.prependRule(new (tree.Rule)(name, arg.value.eval(env)));
- isNamedFound = true;
- break;
- }
- }
- if (isNamedFound) {
- args.splice(i, 1);
- i--;
- continue;
- } else {
- throw {
- type: 'Runtime', message: "Named argument for " + this.name +
- ' ' + args[i].name + ' not found'
- };
- }
- }
- }
- }
- argIndex = 0;
- for (i = 0; i < params.length; i++) {
- if (evaldArguments[i]) {
- continue;
- }
-
- arg = args && args[argIndex];
-
- if (name = params[i].name) {
- if (params[i].variadic) {
- varargs = [];
- for (j = argIndex; j < argsLength; j++) {
- varargs.push(args[j].value.eval(env));
- }
- frame.prependRule(new (tree.Rule)(name, new (tree.Expression)(varargs).eval(env)));
- } else {
- val = arg && arg.value;
- if (val) {
- val = val.eval(env);
- } else if (params[i].value) {
- val = params[i].value.eval(mixinEnv);
- frame.resetCache();
- } else {
- throw {
- type: 'Runtime', message: "wrong number of arguments for " + this.name +
- ' (' + argsLength + ' for ' + this.arity + ')'
- };
- }
-
- frame.prependRule(new (tree.Rule)(name, val));
- evaldArguments[i] = val;
- }
- }
-
- if (params[i].variadic && args) {
- for (j = argIndex; j < argsLength; j++) {
- evaldArguments[j] = args[j].value.eval(env);
- }
- }
- argIndex++;
- }
-
- return frame;
- },
- eval: function (env) {
- return new tree.mixin.Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || env.frames.slice(0));
- },
- evalCall: function (env, args, important) {
- var _arguments = [],
- mixinFrames = this.frames ? this.frames.concat(env.frames) : env.frames,
- frame = this.evalParams(env, new (tree.evalEnv)(env, mixinFrames), args, _arguments),
- rules, ruleset;
-
- frame.prependRule(new (tree.Rule)('@arguments', new (tree.Expression)(_arguments).eval(env)));
-
- rules = this.rules.slice(0);
-
- ruleset = new (tree.Ruleset)(null, rules);
- ruleset.originalRuleset = this;
- ruleset = ruleset.eval(new (tree.evalEnv)(env, [this, frame].concat(mixinFrames)));
- if (important) {
- ruleset = this.parent.makeImportant.apply(ruleset);
- }
- return ruleset;
- },
- matchCondition: function (args, env) {
- if (this.condition && !this.condition.eval(
- new (tree.evalEnv)(env,
- [this.evalParams(env, new (tree.evalEnv)(env, this.frames ? this.frames.concat(env.frames) : env.frames), args, [])] // the parameter variables
- .concat(this.frames) // the parent namespace/mixin frames
- .concat(env.frames)))) { // the current environment frames
- return false;
- }
- return true;
- },
- matchArgs: function (args, env) {
- var argsLength = (args && args.length) || 0, len;
-
- if (!this.variadic) {
- if (argsLength < this.required) {
- return false;
- }
- if (argsLength > this.params.length) {
- return false;
- }
- } else {
- if (argsLength < (this.required - 1)) {
- return false;
- }
- }
-
- len = Math.min(argsLength, this.arity);
-
- for (var i = 0; i < len; i++) {
- if (!this.params[i].name && !this.params[i].variadic) {
- if (args[i].value.eval(env).toCSS() != this.params[i].value.eval(env).toCSS()) {
- return false;
- }
- }
- }
- return true;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Negative = function (node) {
- this.value = node;
- };
- tree.Negative.prototype = {
- type: "Negative",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- genCSS: function (env, output) {
- output.add('-');
- this.value.genCSS(env, output);
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- if (env.isMathOn()) {
- return (new (tree.Operation)('*', [new (tree.Dimension)(-1), this.value])).eval(env);
- }
- return new (tree.Negative)(this.value.eval(env));
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Operation = function (op, operands, isSpaced) {
- this.op = op.trim();
- this.operands = operands;
- this.isSpaced = isSpaced;
- };
- tree.Operation.prototype = {
- type: "Operation",
- accept: function (visitor) {
- this.operands = visitor.visit(this.operands);
- },
- eval: function (env) {
- var a = this.operands[0].eval(env),
- b = this.operands[1].eval(env);
-
- if (env.isMathOn()) {
- if (a instanceof tree.Dimension && b instanceof tree.Color) {
- a = a.toColor();
- }
- if (b instanceof tree.Dimension && a instanceof tree.Color) {
- b = b.toColor();
- }
- if (!a.operate) {
- throw {
- type: "Operation",
- message: "Operation on an invalid type"
- };
- }
-
- return a.operate(env, this.op, b);
- } else {
- return new (tree.Operation)(this.op, [a, b], this.isSpaced);
- }
- },
- genCSS: function (env, output) {
- this.operands[0].genCSS(env, output);
- if (this.isSpaced) {
- output.add(" ");
- }
- output.add(this.op);
- if (this.isSpaced) {
- output.add(" ");
- }
- this.operands[1].genCSS(env, output);
- },
- toCSS: tree.toCSS
- };
-
- tree.operate = function (env, op, a, b) {
- switch (op) {
- case '+':
- return a + b;
- case '-':
- return a - b;
- case '*':
- return a * b;
- case '/':
- return a / b;
- }
- };
-
-})(require('../tree'));
-
-
-(function (tree) {
-
- tree.Paren = function (node) {
- this.value = node;
- };
- tree.Paren.prototype = {
- type: "Paren",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- genCSS: function (env, output) {
- output.add('(');
- this.value.genCSS(env, output);
- output.add(')');
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- return new (tree.Paren)(this.value.eval(env));
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Quoted = function (str, content, escaped, index, currentFileInfo) {
- this.escaped = escaped;
- this.value = content || '';
- this.quote = str.charAt(0);
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- };
- tree.Quoted.prototype = {
- type: "Quoted",
- genCSS: function (env, output) {
- if (!this.escaped) {
- output.add(this.quote, this.currentFileInfo, this.index);
- }
- output.add(this.value);
- if (!this.escaped) {
- output.add(this.quote);
- }
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- var that = this;
- var value = this.value.replace(/`([^`]+)`/g, function (_, exp) {
- return new (tree.JavaScript)(exp, that.index, true).eval(env).value;
- }).replace(/@\{([\w-]+)\}/g, function (_, name) {
- var v = new (tree.Variable)('@' + name, that.index, that.currentFileInfo).eval(env, true);
- return (v instanceof tree.Quoted) ? v.value : v.toCSS();
- });
- return new (tree.Quoted)(this.quote + value + this.quote, value, this.escaped, this.index, this.currentFileInfo);
- },
- compare: function (x) {
- if (!x.toCSS) {
- return -1;
- }
-
- var left, right;
-
- // when comparing quoted strings allow the quote to differ
- if (x.type === "Quoted" && !this.escaped && !x.escaped) {
- left = x.value;
- right = this.value;
- } else {
- left = this.toCSS();
- right = x.toCSS();
- }
-
- if (left === right) {
- return 0;
- }
-
- return left < right ? -1 : 1;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Rule = function (name, value, important, merge, index, currentFileInfo, inline, variable) {
- this.name = name;
- this.value = (value instanceof tree.Value || value instanceof tree.Ruleset) ? value : new (tree.Value)([value]);
- this.important = important ? ' ' + important.trim() : '';
- this.merge = merge;
- this.index = index;
- this.currentFileInfo = currentFileInfo;
- this.inline = inline || false;
- this.variable = (variable !== undefined) ? variable
- : (name.charAt && (name.charAt(0) === '@'));
- };
-
- tree.Rule.prototype = {
- type: "Rule",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- genCSS: function (env, output) {
- output.add(this.name + (env.compress ? ':' : ': '), this.currentFileInfo, this.index);
- try {
- this.value.genCSS(env, output);
- }
- catch (e) {
- e.index = this.index;
- e.filename = this.currentFileInfo.filename;
- throw e;
- }
- output.add(this.important + ((this.inline || (env.lastRule && env.compress)) ? "" : ";"), this.currentFileInfo, this.index);
- },
- toCSS: tree.toCSS,
- eval: function (env) {
- var strictMathBypass = false, name = this.name, variable = this.variable, evaldValue;
- if (typeof name !== "string") {
- // expand 'primitive' name directly to get
- // things faster (~10% for benchmark.less):
- name = (name.length === 1)
- && (name[0] instanceof tree.Keyword)
- ? name[0].value : evalName(env, name);
- variable = false; // never treat expanded interpolation as new variable name
- }
- if (name === "font" && !env.strictMath) {
- strictMathBypass = true;
- env.strictMath = true;
- }
- try {
- evaldValue = this.value.eval(env);
-
- if (!this.variable && evaldValue.type === "DetachedRuleset") {
- throw {
- message: "Rulesets cannot be evaluated on a property.",
- index: this.index, filename: this.currentFileInfo.filename
- };
- }
-
- return new (tree.Rule)(name,
- evaldValue,
- this.important,
- this.merge,
- this.index, this.currentFileInfo, this.inline,
- variable);
- }
- catch (e) {
- if (typeof e.index !== 'number') {
- e.index = this.index;
- e.filename = this.currentFileInfo.filename;
- }
- throw e;
- }
- finally {
- if (strictMathBypass) {
- env.strictMath = false;
- }
- }
- },
- makeImportant: function () {
- return new (tree.Rule)(this.name,
- this.value,
- "!important",
- this.merge,
- this.index, this.currentFileInfo, this.inline);
- }
- };
-
- function evalName(env, name) {
- var value = "", i, n = name.length,
- output = {
- add: function (s) {
- value += s;
- }
- };
- for (i = 0; i < n; i++) {
- name[i].eval(env).genCSS(env, output);
- }
- return value;
- }
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.RulesetCall = function (variable) {
- this.variable = variable;
- };
- tree.RulesetCall.prototype = {
- type: "RulesetCall",
- accept: function (visitor) {
- },
- eval: function (env) {
- var detachedRuleset = new (tree.Variable)(this.variable).eval(env);
- return detachedRuleset.callEval(env);
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Ruleset = function (selectors, rules, strictImports) {
- this.selectors = selectors;
- this.rules = rules;
- this._lookups = {};
- this.strictImports = strictImports;
- };
- tree.Ruleset.prototype = {
- type: "Ruleset",
- accept: function (visitor) {
- if (this.paths) {
- visitor.visitArray(this.paths, true);
- } else if (this.selectors) {
- this.selectors = visitor.visitArray(this.selectors);
- }
- if (this.rules && this.rules.length) {
- this.rules = visitor.visitArray(this.rules);
- }
- },
- eval: function (env) {
- var thisSelectors = this.selectors, selectors,
- selCnt, selector, i, defaultFunc = tree.defaultFunc, hasOnePassingSelector = false;
-
- if (thisSelectors && (selCnt = thisSelectors.length)) {
- selectors = [];
- defaultFunc.error({
- type: "Syntax",
- message: "it is currently only allowed in parametric mixin guards,"
- });
- for (i = 0; i < selCnt; i++) {
- selector = thisSelectors[i].eval(env);
- selectors.push(selector);
- if (selector.evaldCondition) {
- hasOnePassingSelector = true;
- }
- }
- defaultFunc.reset();
- } else {
- hasOnePassingSelector = true;
- }
-
- var rules = this.rules ? this.rules.slice(0) : null,
- ruleset = new (tree.Ruleset)(selectors, rules, this.strictImports),
- rule, subRule;
-
- ruleset.originalRuleset = this;
- ruleset.root = this.root;
- ruleset.firstRoot = this.firstRoot;
- ruleset.allowImports = this.allowImports;
-
- if (this.debugInfo) {
- ruleset.debugInfo = this.debugInfo;
- }
-
- if (!hasOnePassingSelector) {
- rules.length = 0;
- }
-
- // push the current ruleset to the frames stack
- var envFrames = env.frames;
- envFrames.unshift(ruleset);
-
- // currrent selectors
- var envSelectors = env.selectors;
- if (!envSelectors) {
- env.selectors = envSelectors = [];
- }
- envSelectors.unshift(this.selectors);
-
- // Evaluate imports
- if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
- ruleset.evalImports(env);
- }
-
- // Store the frames around mixin definitions,
- // so they can be evaluated like closures when the time comes.
- var rsRules = ruleset.rules, rsRuleCnt = rsRules ? rsRules.length : 0;
- for (i = 0; i < rsRuleCnt; i++) {
- if (rsRules[i] instanceof tree.mixin.Definition || rsRules[i] instanceof tree.DetachedRuleset) {
- rsRules[i] = rsRules[i].eval(env);
- }
- }
-
- var mediaBlockCount = (env.mediaBlocks && env.mediaBlocks.length) || 0;
-
- // Evaluate mixin calls.
- for (i = 0; i < rsRuleCnt; i++) {
- if (rsRules[i] instanceof tree.mixin.Call) {
- /*jshint loopfunc:true */
- rules = rsRules[i].eval(env).filter(function (r) {
- if ((r instanceof tree.Rule) && r.variable) {
- // do not pollute the scope if the variable is
- // already there. consider returning false here
- // but we need a way to "return" variable from mixins
- return !(ruleset.variable(r.name));
- }
- return true;
- });
- rsRules.splice.apply(rsRules, [i, 1].concat(rules));
- rsRuleCnt += rules.length - 1;
- i += rules.length - 1;
- ruleset.resetCache();
- } else if (rsRules[i] instanceof tree.RulesetCall) {
- /*jshint loopfunc:true */
- rules = rsRules[i].eval(env).rules.filter(function (r) {
- if ((r instanceof tree.Rule) && r.variable) {
- // do not pollute the scope at all
- return false;
- }
- return true;
- });
- rsRules.splice.apply(rsRules, [i, 1].concat(rules));
- rsRuleCnt += rules.length - 1;
- i += rules.length - 1;
- ruleset.resetCache();
- }
- }
-
- // Evaluate everything else
- for (i = 0; i < rsRules.length; i++) {
- rule = rsRules[i];
- if (!(rule instanceof tree.mixin.Definition || rule instanceof tree.DetachedRuleset)) {
- rsRules[i] = rule = rule.eval ? rule.eval(env) : rule;
- }
- }
-
- // Evaluate everything else
- for (i = 0; i < rsRules.length; i++) {
- rule = rsRules[i];
- // for rulesets, check if it is a css guard and can be removed
- if (rule instanceof tree.Ruleset && rule.selectors && rule.selectors.length === 1) {
- // check if it can be folded in (e.g. & where)
- if (rule.selectors[0].isJustParentSelector()) {
- rsRules.splice(i--, 1);
-
- for (var j = 0; j < rule.rules.length; j++) {
- subRule = rule.rules[j];
- if (!(subRule instanceof tree.Rule) || !subRule.variable) {
- rsRules.splice(++i, 0, subRule);
- }
- }
- }
- }
- }
-
- // Pop the stack
- envFrames.shift();
- envSelectors.shift();
-
- if (env.mediaBlocks) {
- for (i = mediaBlockCount; i < env.mediaBlocks.length; i++) {
- env.mediaBlocks[i].bubbleSelectors(selectors);
- }
- }
-
- return ruleset;
- },
- evalImports: function (env) {
- var rules = this.rules, i, importRules;
- if (!rules) {
- return;
- }
-
- for (i = 0; i < rules.length; i++) {
- if (rules[i] instanceof tree.Import) {
- importRules = rules[i].eval(env);
- if (importRules && importRules.length) {
- rules.splice.apply(rules, [i, 1].concat(importRules));
- i += importRules.length - 1;
- } else {
- rules.splice(i, 1, importRules);
- }
- this.resetCache();
- }
- }
- },
- makeImportant: function () {
- return new tree.Ruleset(this.selectors, this.rules.map(function (r) {
- if (r.makeImportant) {
- return r.makeImportant();
- } else {
- return r;
- }
- }), this.strictImports);
- },
- matchArgs: function (args) {
- return !args || args.length === 0;
- },
- // lets you call a css selector with a guard
- matchCondition: function (args, env) {
- var lastSelector = this.selectors[this.selectors.length - 1];
- if (!lastSelector.evaldCondition) {
- return false;
- }
- if (lastSelector.condition && !lastSelector.condition.eval(
- new (tree.evalEnv)(env,
- env.frames))) {
- return false;
- }
- return true;
- },
- resetCache: function () {
- this._rulesets = null;
- this._variables = null;
- this._lookups = {};
- },
- variables: function () {
- if (!this._variables) {
- this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {
- if (r instanceof tree.Rule && r.variable === true) {
- hash[r.name] = r;
- }
- return hash;
- }, {});
- }
- return this._variables;
- },
- variable: function (name) {
- return this.variables()[name];
- },
- rulesets: function () {
- if (!this.rules) {
- return null;
- }
-
- var _Ruleset = tree.Ruleset, _MixinDefinition = tree.mixin.Definition,
- filtRules = [], rules = this.rules, cnt = rules.length,
- i, rule;
-
- for (i = 0; i < cnt; i++) {
- rule = rules[i];
- if ((rule instanceof _Ruleset) || (rule instanceof _MixinDefinition)) {
- filtRules.push(rule);
- }
- }
-
- return filtRules;
- },
- prependRule: function (rule) {
- var rules = this.rules;
- if (rules) {
- rules.unshift(rule);
- } else {
- this.rules = [rule];
- }
- },
- find: function (selector, self) {
- self = self || this;
- var rules = [], match,
- key = selector.toCSS();
-
- if (key in this._lookups) {
- return this._lookups[key];
- }
-
- this.rulesets().forEach(function (rule) {
- if (rule !== self) {
- for (var j = 0; j < rule.selectors.length; j++) {
- match = selector.match(rule.selectors[j]);
- if (match) {
- if (selector.elements.length > match) {
- Array.prototype.push.apply(rules, rule.find(
- new (tree.Selector)(selector.elements.slice(match)), self));
- } else {
- rules.push(rule);
- }
- break;
- }
- }
- }
- });
- this._lookups[key] = rules;
- return rules;
- },
- genCSS: function (env, output) {
- var i, j,
- charsetRuleNodes = [],
- ruleNodes = [],
- rulesetNodes = [],
- rulesetNodeCnt,
- debugInfo, // Line number debugging
- rule,
- path;
-
- env.tabLevel = (env.tabLevel || 0);
-
- if (!this.root) {
- env.tabLevel++;
- }
-
- var tabRuleStr = env.compress ? '' : Array(env.tabLevel + 1).join(" "),
- tabSetStr = env.compress ? '' : Array(env.tabLevel).join(" "),
- sep;
-
- function isRulesetLikeNode(rule, root) {
- // if it has nested rules, then it should be treated like a ruleset
- if (rule.rules)
- return true;
-
- // medias and comments do not have nested rules, but should be treated like rulesets anyway
- if ((rule instanceof tree.Media) || (root && rule instanceof tree.Comment))
- return true;
-
- // some directives and anonumoust nodes are ruleset like, others are not
- if ((rule instanceof tree.Directive) || (rule instanceof tree.Anonymous)) {
- return rule.isRulesetLike();
- }
-
- //anything else is assumed to be a rule
- return false;
- }
-
- for (i = 0; i < this.rules.length; i++) {
- rule = this.rules[i];
- if (isRulesetLikeNode(rule, this.root)) {
- rulesetNodes.push(rule);
- } else {
- //charsets should float on top of everything
- if (rule.isCharset && rule.isCharset()) {
- charsetRuleNodes.push(rule);
- } else {
- ruleNodes.push(rule);
- }
- }
- }
- ruleNodes = charsetRuleNodes.concat(ruleNodes);
-
- // If this is the root node, we don't render
- // a selector, or {}.
- if (!this.root) {
- debugInfo = tree.debugInfo(env, this, tabSetStr);
-
- if (debugInfo) {
- output.add(debugInfo);
- output.add(tabSetStr);
- }
-
- var paths = this.paths, pathCnt = paths.length,
- pathSubCnt;
-
- sep = env.compress ? ',' : (',\n' + tabSetStr);
-
- for (i = 0; i < pathCnt; i++) {
- path = paths[i];
- if (!(pathSubCnt = path.length)) {
- continue;
- }
- if (i > 0) {
- output.add(sep);
- }
-
- env.firstSelector = true;
- path[0].genCSS(env, output);
-
- env.firstSelector = false;
- for (j = 1; j < pathSubCnt; j++) {
- path[j].genCSS(env, output);
- }
- }
-
- output.add((env.compress ? '{' : ' {\n') + tabRuleStr);
- }
-
- // Compile rules and rulesets
- for (i = 0; i < ruleNodes.length; i++) {
- rule = ruleNodes[i];
-
- // @page{ directive ends up with root elements inside it, a mix of rules and rulesets
- // In this instance we do not know whether it is the last property
- if (i + 1 === ruleNodes.length && (!this.root || rulesetNodes.length === 0 || this.firstRoot)) {
- env.lastRule = true;
- }
-
- if (rule.genCSS) {
- rule.genCSS(env, output);
- } else if (rule.value) {
- output.add(rule.value.toString());
- }
-
- if (!env.lastRule) {
- output.add(env.compress ? '' : ('\n' + tabRuleStr));
- } else {
- env.lastRule = false;
- }
- }
-
- if (!this.root) {
- output.add((env.compress ? '}' : '\n' + tabSetStr + '}'));
- env.tabLevel--;
- }
-
- sep = (env.compress ? "" : "\n") + (this.root ? tabRuleStr : tabSetStr);
- rulesetNodeCnt = rulesetNodes.length;
- if (rulesetNodeCnt) {
- if (ruleNodes.length && sep) {
- output.add(sep);
- }
- rulesetNodes[0].genCSS(env, output);
- for (i = 1; i < rulesetNodeCnt; i++) {
- if (sep) {
- output.add(sep);
- }
- rulesetNodes[i].genCSS(env, output);
- }
- }
-
- if (!output.isEmpty() && !env.compress && this.firstRoot) {
- output.add('\n');
- }
- },
-
- toCSS: tree.toCSS,
-
- markReferenced: function () {
- if (!this.selectors) {
- return;
- }
- for (var s = 0; s < this.selectors.length; s++) {
- this.selectors[s].markReferenced();
- }
- },
-
- joinSelectors: function (paths, context, selectors) {
- for (var s = 0; s < selectors.length; s++) {
- this.joinSelector(paths, context, selectors[s]);
- }
- },
-
- joinSelector: function (paths, context, selector) {
-
- var i, j, k,
- hasParentSelector, newSelectors, el, sel, parentSel,
- newSelectorPath, afterParentJoin, newJoinedSelector,
- newJoinedSelectorEmpty, lastSelector, currentElements,
- selectorsMultiplied;
-
- for (i = 0; i < selector.elements.length; i++) {
- el = selector.elements[i];
- if (el.value === '&') {
- hasParentSelector = true;
- }
- }
-
- if (!hasParentSelector) {
- if (context.length > 0) {
- for (i = 0; i < context.length; i++) {
- paths.push(context[i].concat(selector));
- }
- }
- else {
- paths.push([selector]);
- }
- return;
- }
-
- // The paths are [[Selector]]
- // The first list is a list of comma seperated selectors
- // The inner list is a list of inheritance seperated selectors
- // e.g.
- // .a, .b {
- // .c {
- // }
- // }
- // == [[.a] [.c]] [[.b] [.c]]
- //
-
- // the elements from the current selector so far
- currentElements = [];
- // the current list of new selectors to add to the path.
- // We will build it up. We initiate it with one empty selector as we "multiply" the new selectors
- // by the parents
- newSelectors = [[]];
-
- for (i = 0; i < selector.elements.length; i++) {
- el = selector.elements[i];
- // non parent reference elements just get added
- if (el.value !== "&") {
- currentElements.push(el);
- } else {
- // the new list of selectors to add
- selectorsMultiplied = [];
-
- // merge the current list of non parent selector elements
- // on to the current list of selectors to add
- if (currentElements.length > 0) {
- this.mergeElementsOnToSelectors(currentElements, newSelectors);
- }
-
- // loop through our current selectors
- for (j = 0; j < newSelectors.length; j++) {
- sel = newSelectors[j];
- // if we don't have any parent paths, the & might be in a mixin so that it can be used
- // whether there are parents or not
- if (context.length === 0) {
- // the combinator used on el should now be applied to the next element instead so that
- // it is not lost
- if (sel.length > 0) {
- sel[0].elements = sel[0].elements.slice(0);
- sel[0].elements.push(new (tree.Element)(el.combinator, '', el.index, el.currentFileInfo));
- }
- selectorsMultiplied.push(sel);
- }
- else {
- // and the parent selectors
- for (k = 0; k < context.length; k++) {
- parentSel = context[k];
- // We need to put the current selectors
- // then join the last selector's elements on to the parents selectors
-
- // our new selector path
- newSelectorPath = [];
- // selectors from the parent after the join
- afterParentJoin = [];
- newJoinedSelectorEmpty = true;
-
- //construct the joined selector - if & is the first thing this will be empty,
- // if not newJoinedSelector will be the last set of elements in the selector
- if (sel.length > 0) {
- newSelectorPath = sel.slice(0);
- lastSelector = newSelectorPath.pop();
- newJoinedSelector = selector.createDerived(lastSelector.elements.slice(0));
- newJoinedSelectorEmpty = false;
- }
- else {
- newJoinedSelector = selector.createDerived([]);
- }
-
- //put together the parent selectors after the join
- if (parentSel.length > 1) {
- afterParentJoin = afterParentJoin.concat(parentSel.slice(1));
- }
-
- if (parentSel.length > 0) {
- newJoinedSelectorEmpty = false;
-
- // join the elements so far with the first part of the parent
- newJoinedSelector.elements.push(new (tree.Element)(el.combinator, parentSel[0].elements[0].value, el.index, el.currentFileInfo));
- newJoinedSelector.elements = newJoinedSelector.elements.concat(parentSel[0].elements.slice(1));
- }
-
- if (!newJoinedSelectorEmpty) {
- // now add the joined selector
- newSelectorPath.push(newJoinedSelector);
- }
-
- // and the rest of the parent
- newSelectorPath = newSelectorPath.concat(afterParentJoin);
-
- // add that to our new set of selectors
- selectorsMultiplied.push(newSelectorPath);
- }
- }
- }
-
- // our new selectors has been multiplied, so reset the state
- newSelectors = selectorsMultiplied;
- currentElements = [];
- }
- }
-
- // if we have any elements left over (e.g. .a& .b == .b)
- // add them on to all the current selectors
- if (currentElements.length > 0) {
- this.mergeElementsOnToSelectors(currentElements, newSelectors);
- }
-
- for (i = 0; i < newSelectors.length; i++) {
- if (newSelectors[i].length > 0) {
- paths.push(newSelectors[i]);
- }
- }
- },
-
- mergeElementsOnToSelectors: function (elements, selectors) {
- var i, sel;
-
- if (selectors.length === 0) {
- selectors.push([new (tree.Selector)(elements)]);
- return;
- }
-
- for (i = 0; i < selectors.length; i++) {
- sel = selectors[i];
-
- // if the previous thing in sel is a parent this needs to join on to it
- if (sel.length > 0) {
- sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));
- }
- else {
- sel.push(new (tree.Selector)(elements));
- }
- }
- }
- };
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Selector = function (elements, extendList, condition, index, currentFileInfo, isReferenced) {
- this.elements = elements;
- this.extendList = extendList;
- this.condition = condition;
- this.currentFileInfo = currentFileInfo || {};
- this.isReferenced = isReferenced;
- if (!condition) {
- this.evaldCondition = true;
- }
- };
- tree.Selector.prototype = {
- type: "Selector",
- accept: function (visitor) {
- if (this.elements) {
- this.elements = visitor.visitArray(this.elements);
- }
- if (this.extendList) {
- this.extendList = visitor.visitArray(this.extendList);
- }
- if (this.condition) {
- this.condition = visitor.visit(this.condition);
- }
- },
- createDerived: function (elements, extendList, evaldCondition) {
- evaldCondition = (evaldCondition != null) ? evaldCondition : this.evaldCondition;
- var newSelector = new (tree.Selector)(elements, extendList || this.extendList, null, this.index, this.currentFileInfo, this.isReferenced);
- newSelector.evaldCondition = evaldCondition;
- newSelector.mediaEmpty = this.mediaEmpty;
- return newSelector;
- },
- match: function (other) {
- var elements = this.elements,
- len = elements.length,
- olen, i;
-
- other.CacheElements();
-
- olen = other._elements.length;
- if (olen === 0 || len < olen) {
- return 0;
- } else {
- for (i = 0; i < olen; i++) {
- if (elements[i].value !== other._elements[i]) {
- return 0;
- }
- }
- }
-
- return olen; // return number of matched elements
- },
- CacheElements: function () {
- var css = '', len, v, i;
-
- if (!this._elements) {
-
- len = this.elements.length;
- for (i = 0; i < len; i++) {
-
- v = this.elements[i];
- css += v.combinator.value;
-
- if (!v.value.value) {
- css += v.value;
- continue;
- }
-
- if (typeof v.value.value !== "string") {
- css = '';
- break;
- }
- css += v.value.value;
- }
-
- this._elements = css.match(/[,\*\.\w-]([\w-]|(\\.))*/g);
-
- if (this._elements) {
- if (this._elements[0] === "&") {
- this._elements.shift();
- }
-
- } else {
- this._elements = [];
- }
-
- }
- },
- isJustParentSelector: function () {
- return !this.mediaEmpty &&
- this.elements.length === 1 &&
- this.elements[0].value === '&' &&
- (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');
- },
- eval: function (env) {
- var evaldCondition = this.condition && this.condition.eval(env),
- elements = this.elements, extendList = this.extendList;
-
- elements = elements && elements.map(function (e) {
- return e.eval(env);
- });
- extendList = extendList && extendList.map(function (extend) {
- return extend.eval(env);
- });
-
- return this.createDerived(elements, extendList, evaldCondition);
- },
- genCSS: function (env, output) {
- var i, element;
- if ((!env || !env.firstSelector) && this.elements[0].combinator.value === "") {
- output.add(' ', this.currentFileInfo, this.index);
- }
- if (!this._css) {
- //TODO caching? speed comparison?
- for (i = 0; i < this.elements.length; i++) {
- element = this.elements[i];
- element.genCSS(env, output);
- }
- }
- },
- toCSS: tree.toCSS,
- markReferenced: function () {
- this.isReferenced = true;
- },
- getIsReferenced: function () {
- return !this.currentFileInfo.reference || this.isReferenced;
- },
- getIsOutput: function () {
- return this.evaldCondition;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.UnicodeDescriptor = function (value) {
- this.value = value;
- };
- tree.UnicodeDescriptor.prototype = {
- type: "UnicodeDescriptor",
- genCSS: function (env, output) {
- output.add(this.value);
- },
- toCSS: tree.toCSS,
- eval: function () {
- return this;
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.URL = function (val, currentFileInfo, isEvald) {
- this.value = val;
- this.currentFileInfo = currentFileInfo;
- this.isEvald = isEvald;
- };
- tree.URL.prototype = {
- type: "Url",
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- genCSS: function (env, output) {
- output.add("url(");
- this.value.genCSS(env, output);
- output.add(")");
- },
- toCSS: tree.toCSS,
- eval: function (ctx) {
- var val = this.value.eval(ctx),
- rootpath;
-
- if (!this.isEvald) {
- // Add the base path if the URL is relative
- rootpath = this.currentFileInfo && this.currentFileInfo.rootpath;
- if (rootpath && typeof val.value === "string" && ctx.isPathRelative(val.value)) {
- if (!val.quote) {
- rootpath = rootpath.replace(/[\(\)'"\s]/g, function (match) {
- return "\\" + match;
- });
- }
- val.value = rootpath + val.value;
- }
-
- val.value = ctx.normalizePath(val.value);
-
- // Add url args if enabled
- if (ctx.urlArgs) {
- if (!val.value.match(/^\s*data:/)) {
- var delimiter = val.value.indexOf('?') === -1 ? '?' : '&';
- var urlArgs = delimiter + ctx.urlArgs;
- if (val.value.indexOf('#') !== -1) {
- val.value = val.value.replace('#', urlArgs + '#');
- } else {
- val.value += urlArgs;
- }
- }
- }
- }
-
- return new (tree.URL)(val, this.currentFileInfo, true);
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Value = function (value) {
- this.value = value;
- };
- tree.Value.prototype = {
- type: "Value",
- accept: function (visitor) {
- if (this.value) {
- this.value = visitor.visitArray(this.value);
- }
- },
- eval: function (env) {
- if (this.value.length === 1) {
- return this.value[0].eval(env);
- } else {
- return new (tree.Value)(this.value.map(function (v) {
- return v.eval(env);
- }));
- }
- },
- genCSS: function (env, output) {
- var i;
- for (i = 0; i < this.value.length; i++) {
- this.value[i].genCSS(env, output);
- if (i + 1 < this.value.length) {
- output.add((env && env.compress) ? ',' : ', ');
- }
- }
- },
- toCSS: tree.toCSS
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- tree.Variable = function (name, index, currentFileInfo) {
- this.name = name;
- this.index = index;
- this.currentFileInfo = currentFileInfo || {};
- };
- tree.Variable.prototype = {
- type: "Variable",
- eval: function (env) {
- var variable, name = this.name;
-
- if (name.indexOf('@@') === 0) {
- name = '@' + new (tree.Variable)(name.slice(1)).eval(env).value;
- }
-
- if (this.evaluating) {
- throw {
- type: 'Name',
- message: "Recursive variable definition for " + name,
- filename: this.currentFileInfo.file,
- index: this.index
- };
- }
-
- this.evaluating = true;
-
- variable = tree.find(env.frames, function (frame) {
- var v = frame.variable(name);
- if (v) {
- return v.value.eval(env);
- }
- });
- if (variable) {
- this.evaluating = false;
- return variable;
- } else {
- throw {
- type: 'Name',
- message: "variable " + name + " is undefined",
- filename: this.currentFileInfo.filename,
- index: this.index
- };
- }
- }
- };
-
-})(require('../tree'));
-
-(function (tree) {
-
- var parseCopyProperties = [
- 'paths', // option - unmodified - paths to search for imports on
- 'optimization', // option - optimization level (for the chunker)
- 'files', // list of files that have been imported, used for import-once
- 'contents', // map - filename to contents of all the files
- 'contentsIgnoredChars', // map - filename to lines at the begining of each file to ignore
- 'relativeUrls', // option - whether to adjust URL's to be relative
- 'rootpath', // option - rootpath to append to URL's
- 'strictImports', // option -
- 'insecure', // option - whether to allow imports from insecure ssl hosts
- 'dumpLineNumbers', // option - whether to dump line numbers
- 'compress', // option - whether to compress
- 'processImports', // option - whether to process imports. if false then imports will not be imported
- 'syncImport', // option - whether to import synchronously
- 'javascriptEnabled',// option - whether JavaScript is enabled. if undefined, defaults to true
- 'mime', // browser only - mime type for sheet import
- 'useFileCache', // browser only - whether to use the per file session cache
- 'currentFileInfo' // information about the current file - for error reporting and importing and making urls relative etc.
- ];
-
- //currentFileInfo = {
- // 'relativeUrls' - option - whether to adjust URL's to be relative
- // 'filename' - full resolved filename of current file
- // 'rootpath' - path to append to normal URLs for this node
- // 'currentDirectory' - path to the current file, absolute
- // 'rootFilename' - filename of the base file
- // 'entryPath' - absolute path to the entry file
- // 'reference' - whether the file should not be output and only output parts that are referenced
-
- tree.parseEnv = function (options) {
- copyFromOriginal(options, this, parseCopyProperties);
-
- if (!this.contents) {
- this.contents = {};
- }
- if (!this.contentsIgnoredChars) {
- this.contentsIgnoredChars = {};
- }
- if (!this.files) {
- this.files = {};
- }
-
- if (typeof this.paths === "string") {
- this.paths = [this.paths];
- }
-
- if (!this.currentFileInfo) {
- var filename = (options && options.filename) || "input";
- var entryPath = filename.replace(/[^\/\\]*$/, "");
- if (options) {
- options.filename = null;
- }
- this.currentFileInfo = {
- filename: filename,
- relativeUrls: this.relativeUrls,
- rootpath: (options && options.rootpath) || "",
- currentDirectory: entryPath,
- entryPath: entryPath,
- rootFilename: filename
- };
- }
- };
-
- var evalCopyProperties = [
- 'silent', // whether to swallow errors and warnings
- 'verbose', // whether to log more activity
- 'compress', // whether to compress
- 'yuicompress', // whether to compress with the outside tool yui compressor
- 'ieCompat', // whether to enforce IE compatibility (IE8 data-uri)
- 'strictMath', // whether math has to be within parenthesis
- 'strictUnits', // whether units need to evaluate correctly
- 'cleancss', // whether to compress with clean-css
- 'sourceMap', // whether to output a source map
- 'importMultiple', // whether we are currently importing multiple copies
- 'urlArgs' // whether to add args into url tokens
- ];
-
- tree.evalEnv = function (options, frames) {
- copyFromOriginal(options, this, evalCopyProperties);
-
- this.frames = frames || [];
- };
-
- tree.evalEnv.prototype.inParenthesis = function () {
- if (!this.parensStack) {
- this.parensStack = [];
- }
- this.parensStack.push(true);
- };
-
- tree.evalEnv.prototype.outOfParenthesis = function () {
- this.parensStack.pop();
- };
-
- tree.evalEnv.prototype.isMathOn = function () {
- return this.strictMath ? (this.parensStack && this.parensStack.length) : true;
- };
-
- tree.evalEnv.prototype.isPathRelative = function (path) {
- return !/^(?:[a-z-]+:|\/)/.test(path);
- };
-
- tree.evalEnv.prototype.normalizePath = function (path) {
- var
- segments = path.split("/").reverse(),
- segment;
-
- path = [];
- while (segments.length !== 0) {
- segment = segments.pop();
- switch (segment) {
- case ".":
- break;
- case "..":
- if ((path.length === 0) || (path[path.length - 1] === "..")) {
- path.push(segment);
- } else {
- path.pop();
- }
- break;
- default:
- path.push(segment);
- break;
- }
- }
-
- return path.join("/");
- };
-
- //todo - do the same for the toCSS env
- //tree.toCSSEnv = function (options) {
- //};
-
- var copyFromOriginal = function (original, destination, propertiesToCopy) {
- if (!original) {
- return;
- }
-
- for (var i = 0; i < propertiesToCopy.length; i++) {
- if (original.hasOwnProperty(propertiesToCopy[i])) {
- destination[propertiesToCopy[i]] = original[propertiesToCopy[i]];
- }
- }
- };
-
-})(require('./tree'));
-
-(function (tree) {
-
- var _visitArgs = {visitDeeper: true},
- _hasIndexed = false;
-
- function _noop(node) {
- return node;
- }
-
- function indexNodeTypes(parent, ticker) {
- // add .typeIndex to tree node types for lookup table
- var key, child;
- for (key in parent) {
- if (parent.hasOwnProperty(key)) {
- child = parent[key];
- switch (typeof child) {
- case "function":
- // ignore bound functions directly on tree which do not have a prototype
- // or aren't nodes
- if (child.prototype && child.prototype.type) {
- child.prototype.typeIndex = ticker++;
- }
- break;
- case "object":
- ticker = indexNodeTypes(child, ticker);
- break;
- }
- }
- }
- return ticker;
- }
-
- tree.visitor = function (implementation) {
- this._implementation = implementation;
- this._visitFnCache = [];
-
- if (!_hasIndexed) {
- indexNodeTypes(tree, 1);
- _hasIndexed = true;
- }
- };
-
- tree.visitor.prototype = {
- visit: function (node) {
- if (!node) {
- return node;
- }
-
- var nodeTypeIndex = node.typeIndex;
- if (!nodeTypeIndex) {
- return node;
- }
-
- var visitFnCache = this._visitFnCache,
- impl = this._implementation,
- aryIndx = nodeTypeIndex << 1,
- outAryIndex = aryIndx | 1,
- func = visitFnCache[aryIndx],
- funcOut = visitFnCache[outAryIndex],
- visitArgs = _visitArgs,
- fnName;
-
- visitArgs.visitDeeper = true;
-
- if (!func) {
- fnName = "visit" + node.type;
- func = impl[fnName] || _noop;
- funcOut = impl[fnName + "Out"] || _noop;
- visitFnCache[aryIndx] = func;
- visitFnCache[outAryIndex] = funcOut;
- }
-
- if (func !== _noop) {
- var newNode = func.call(impl, node, visitArgs);
- if (impl.isReplacing) {
- node = newNode;
- }
- }
-
- if (visitArgs.visitDeeper && node && node.accept) {
- node.accept(this);
- }
-
- if (funcOut != _noop) {
- funcOut.call(impl, node);
- }
-
- return node;
- },
- visitArray: function (nodes, nonReplacing) {
- if (!nodes) {
- return nodes;
- }
-
- var cnt = nodes.length, i;
-
- // Non-replacing
- if (nonReplacing || !this._implementation.isReplacing) {
- for (i = 0; i < cnt; i++) {
- this.visit(nodes[i]);
- }
- return nodes;
- }
-
- // Replacing
- var out = [];
- for (i = 0; i < cnt; i++) {
- var evald = this.visit(nodes[i]);
- if (!evald.splice) {
- out.push(evald);
- } else if (evald.length) {
- this.flatten(evald, out);
- }
- }
- return out;
- },
- flatten: function (arr, out) {
- if (!out) {
- out = [];
- }
-
- var cnt, i, item,
- nestedCnt, j, nestedItem;
-
- for (i = 0, cnt = arr.length; i < cnt; i++) {
- item = arr[i];
- if (!item.splice) {
- out.push(item);
- continue;
- }
-
- for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {
- nestedItem = item[j];
- if (!nestedItem.splice) {
- out.push(nestedItem);
- } else if (nestedItem.length) {
- this.flatten(nestedItem, out);
- }
- }
- }
-
- return out;
- }
- };
-
-})(require('./tree'));
-(function (tree) {
- tree.importVisitor = function (importer, finish, evalEnv, onceFileDetectionMap, recursionDetector) {
- this._visitor = new tree.visitor(this);
- this._importer = importer;
- this._finish = finish;
- this.env = evalEnv || new tree.evalEnv();
- this.importCount = 0;
- this.onceFileDetectionMap = onceFileDetectionMap || {};
- this.recursionDetector = {};
- if (recursionDetector) {
- for (var fullFilename in recursionDetector) {
- if (recursionDetector.hasOwnProperty(fullFilename)) {
- this.recursionDetector[fullFilename] = true;
- }
- }
- }
- };
-
- tree.importVisitor.prototype = {
- isReplacing: true,
- run: function (root) {
- var error;
- try {
- // process the contents
- this._visitor.visit(root);
- }
- catch (e) {
- error = e;
- }
-
- this.isFinished = true;
-
- if (this.importCount === 0) {
- this._finish(error);
- }
- },
- visitImport: function (importNode, visitArgs) {
- var importVisitor = this,
- evaldImportNode,
- inlineCSS = importNode.options.inline;
-
- if (!importNode.css || inlineCSS) {
-
- try {
- evaldImportNode = importNode.evalForImport(this.env);
- } catch (e) {
- if (!e.filename) {
- e.index = importNode.index;
- e.filename = importNode.currentFileInfo.filename;
- }
- // attempt to eval properly and treat as css
- importNode.css = true;
- // if that fails, this error will be thrown
- importNode.error = e;
- }
-
- if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {
- importNode = evaldImportNode;
- this.importCount++;
- var env = new tree.evalEnv(this.env, this.env.frames.slice(0));
-
- if (importNode.options.multiple) {
- env.importMultiple = true;
- }
-
- this._importer.push(importNode.getPath(), importNode.currentFileInfo, importNode.options, function (e, root, importedAtRoot, fullPath) {
- if (e && !e.filename) {
- e.index = importNode.index;
- e.filename = importNode.currentFileInfo.filename;
- }
-
- var duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;
- if (!env.importMultiple) {
- if (duplicateImport) {
- importNode.skip = true;
- } else {
- importNode.skip = function () {
- if (fullPath in importVisitor.onceFileDetectionMap) {
- return true;
- }
- importVisitor.onceFileDetectionMap[fullPath] = true;
- return false;
- };
- }
- }
-
- var subFinish = function (e) {
- importVisitor.importCount--;
-
- if (importVisitor.importCount === 0 && importVisitor.isFinished) {
- importVisitor._finish(e);
- }
- };
-
- if (root) {
- importNode.root = root;
- importNode.importedFilename = fullPath;
-
- if (!inlineCSS && (env.importMultiple || !duplicateImport)) {
- importVisitor.recursionDetector[fullPath] = true;
- new (tree.importVisitor)(importVisitor._importer, subFinish, env, importVisitor.onceFileDetectionMap, importVisitor.recursionDetector)
- .run(root);
- return;
- }
- }
-
- subFinish();
- });
- }
- }
- visitArgs.visitDeeper = false;
- return importNode;
- },
- visitRule: function (ruleNode, visitArgs) {
- visitArgs.visitDeeper = false;
- return ruleNode;
- },
- visitDirective: function (directiveNode, visitArgs) {
- this.env.frames.unshift(directiveNode);
- return directiveNode;
- },
- visitDirectiveOut: function (directiveNode) {
- this.env.frames.shift();
- },
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
- this.env.frames.unshift(mixinDefinitionNode);
- return mixinDefinitionNode;
- },
- visitMixinDefinitionOut: function (mixinDefinitionNode) {
- this.env.frames.shift();
- },
- visitRuleset: function (rulesetNode, visitArgs) {
- this.env.frames.unshift(rulesetNode);
- return rulesetNode;
- },
- visitRulesetOut: function (rulesetNode) {
- this.env.frames.shift();
- },
- visitMedia: function (mediaNode, visitArgs) {
- this.env.frames.unshift(mediaNode.rules[0]);
- return mediaNode;
- },
- visitMediaOut: function (mediaNode) {
- this.env.frames.shift();
- }
- };
-
-})(require('./tree'));
-(function (tree) {
- tree.joinSelectorVisitor = function () {
- this.contexts = [[]];
- this._visitor = new tree.visitor(this);
- };
-
- tree.joinSelectorVisitor.prototype = {
- run: function (root) {
- return this._visitor.visit(root);
- },
- visitRule: function (ruleNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
-
- visitRuleset: function (rulesetNode, visitArgs) {
- var context = this.contexts[this.contexts.length - 1],
- paths = [], selectors;
-
- this.contexts.push(paths);
-
- if (!rulesetNode.root) {
- selectors = rulesetNode.selectors;
- if (selectors) {
- selectors = selectors.filter(function (selector) {
- return selector.getIsOutput();
- });
- rulesetNode.selectors = selectors.length ? selectors : (selectors = null);
- if (selectors) {
- rulesetNode.joinSelectors(paths, context, selectors);
- }
- }
- if (!selectors) {
- rulesetNode.rules = null;
- }
- rulesetNode.paths = paths;
- }
- },
- visitRulesetOut: function (rulesetNode) {
- this.contexts.length = this.contexts.length - 1;
- },
- visitMedia: function (mediaNode, visitArgs) {
- var context = this.contexts[this.contexts.length - 1];
- mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);
- }
- };
-
-})(require('./tree'));
-(function (tree) {
- tree.toCSSVisitor = function (env) {
- this._visitor = new tree.visitor(this);
- this._env = env;
- };
-
- tree.toCSSVisitor.prototype = {
- isReplacing: true,
- run: function (root) {
- return this._visitor.visit(root);
- },
-
- visitRule: function (ruleNode, visitArgs) {
- if (ruleNode.variable) {
- return [];
- }
- return ruleNode;
- },
-
- visitMixinDefinition: function (mixinNode, visitArgs) {
- // mixin definitions do not get eval'd - this means they keep state
- // so we have to clear that state here so it isn't used if toCSS is called twice
- mixinNode.frames = [];
- return [];
- },
-
- visitExtend: function (extendNode, visitArgs) {
- return [];
- },
-
- visitComment: function (commentNode, visitArgs) {
- if (commentNode.isSilent(this._env)) {
- return [];
- }
- return commentNode;
- },
-
- visitMedia: function (mediaNode, visitArgs) {
- mediaNode.accept(this._visitor);
- visitArgs.visitDeeper = false;
-
- if (!mediaNode.rules.length) {
- return [];
- }
- return mediaNode;
- },
-
- visitDirective: function (directiveNode, visitArgs) {
- if (directiveNode.currentFileInfo.reference && !directiveNode.isReferenced) {
- return [];
- }
- if (directiveNode.name === "@charset") {
- // Only output the debug info together with subsequent @charset definitions
- // a comment (or @media statement) before the actual @charset directive would
- // be considered illegal css as it has to be on the first line
- if (this.charset) {
- if (directiveNode.debugInfo) {
- var comment = new tree.Comment("/* " + directiveNode.toCSS(this._env).replace(/\n/g, "") + " */\n");
- comment.debugInfo = directiveNode.debugInfo;
- return this._visitor.visit(comment);
- }
- return [];
- }
- this.charset = true;
- }
- if (directiveNode.rules && directiveNode.rules.rules) {
- this._mergeRules(directiveNode.rules.rules);
- }
- return directiveNode;
- },
-
- checkPropertiesInRoot: function (rules) {
- var ruleNode;
- for (var i = 0; i < rules.length; i++) {
- ruleNode = rules[i];
- if (ruleNode instanceof tree.Rule && !ruleNode.variable) {
- throw {
- message: "properties must be inside selector blocks, they cannot be in the root.",
- index: ruleNode.index,
- filename: ruleNode.currentFileInfo ? ruleNode.currentFileInfo.filename : null
- };
- }
- }
- },
-
- visitRuleset: function (rulesetNode, visitArgs) {
- var rule, rulesets = [];
- if (rulesetNode.firstRoot) {
- this.checkPropertiesInRoot(rulesetNode.rules);
- }
- if (!rulesetNode.root) {
- if (rulesetNode.paths) {
- rulesetNode.paths = rulesetNode.paths
- .filter(function (p) {
- var i;
- if (p[0].elements[0].combinator.value === ' ') {
- p[0].elements[0].combinator = new (tree.Combinator)('');
- }
- for (i = 0; i < p.length; i++) {
- if (p[i].getIsReferenced() && p[i].getIsOutput()) {
- return true;
- }
- }
- return false;
- });
- }
-
- // Compile rules and rulesets
- var nodeRules = rulesetNode.rules, nodeRuleCnt = nodeRules ? nodeRules.length : 0;
- for (var i = 0; i < nodeRuleCnt;) {
- rule = nodeRules[i];
- if (rule && rule.rules) {
- // visit because we are moving them out from being a child
- rulesets.push(this._visitor.visit(rule));
- nodeRules.splice(i, 1);
- nodeRuleCnt--;
- continue;
- }
- i++;
- }
- // accept the visitor to remove rules and refactor itself
- // then we can decide now whether we want it or not
- if (nodeRuleCnt > 0) {
- rulesetNode.accept(this._visitor);
- } else {
- rulesetNode.rules = null;
- }
- visitArgs.visitDeeper = false;
-
- nodeRules = rulesetNode.rules;
- if (nodeRules) {
- this._mergeRules(nodeRules);
- nodeRules = rulesetNode.rules;
- }
- if (nodeRules) {
- this._removeDuplicateRules(nodeRules);
- nodeRules = rulesetNode.rules;
- }
-
- // now decide whether we keep the ruleset
- if (nodeRules && nodeRules.length > 0 && rulesetNode.paths.length > 0) {
- rulesets.splice(0, 0, rulesetNode);
- }
- } else {
- rulesetNode.accept(this._visitor);
- visitArgs.visitDeeper = false;
- if (rulesetNode.firstRoot || (rulesetNode.rules && rulesetNode.rules.length > 0)) {
- rulesets.splice(0, 0, rulesetNode);
- }
- }
- if (rulesets.length === 1) {
- return rulesets[0];
- }
- return rulesets;
- },
-
- _removeDuplicateRules: function (rules) {
- if (!rules) {
- return;
- }
-
- // remove duplicates
- var ruleCache = {},
- ruleList, rule, i;
-
- for (i = rules.length - 1; i >= 0; i--) {
- rule = rules[i];
- if (rule instanceof tree.Rule) {
- if (!ruleCache[rule.name]) {
- ruleCache[rule.name] = rule;
- } else {
- ruleList = ruleCache[rule.name];
- if (ruleList instanceof tree.Rule) {
- ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._env)];
- }
- var ruleCSS = rule.toCSS(this._env);
- if (ruleList.indexOf(ruleCSS) !== -1) {
- rules.splice(i, 1);
- } else {
- ruleList.push(ruleCSS);
- }
- }
- }
- }
- },
-
- _mergeRules: function (rules) {
- if (!rules) {
- return;
- }
-
- var groups = {},
- parts,
- rule,
- key;
-
- for (var i = 0; i < rules.length; i++) {
- rule = rules[i];
-
- if ((rule instanceof tree.Rule) && rule.merge) {
- key = [rule.name,
- rule.important ? "!" : ""].join(",");
-
- if (!groups[key]) {
- groups[key] = [];
- } else {
- rules.splice(i--, 1);
- }
-
- groups[key].push(rule);
- }
- }
-
- Object.keys(groups).map(function (k) {
-
- function toExpression(values) {
- return new (tree.Expression)(values.map(function (p) {
- return p.value;
- }));
- }
-
- function toValue(values) {
- return new (tree.Value)(values.map(function (p) {
- return p;
- }));
- }
-
- parts = groups[k];
-
- if (parts.length > 1) {
- rule = parts[0];
- var spacedGroups = [];
- var lastSpacedGroup = [];
- parts.map(function (p) {
- if (p.merge === "+") {
- if (lastSpacedGroup.length > 0) {
- spacedGroups.push(toExpression(lastSpacedGroup));
- }
- lastSpacedGroup = [];
- }
- lastSpacedGroup.push(p);
- });
- spacedGroups.push(toExpression(lastSpacedGroup));
- rule.value = toValue(spacedGroups);
- }
- });
- }
- };
-
-})(require('./tree'));
-(function (tree) {
- /*jshint loopfunc:true */
-
- tree.extendFinderVisitor = function () {
- this._visitor = new tree.visitor(this);
- this.contexts = [];
- this.allExtendsStack = [[]];
- };
-
- tree.extendFinderVisitor.prototype = {
- run: function (root) {
- root = this._visitor.visit(root);
- root.allExtends = this.allExtendsStack[0];
- return root;
- },
- visitRule: function (ruleNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitRuleset: function (rulesetNode, visitArgs) {
- if (rulesetNode.root) {
- return;
- }
-
- var i, j, extend, allSelectorsExtendList = [], extendList;
-
- // get &:extend(.a); rules which apply to all selectors in this ruleset
- var rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;
- for (i = 0; i < ruleCnt; i++) {
- if (rulesetNode.rules[i] instanceof tree.Extend) {
- allSelectorsExtendList.push(rules[i]);
- rulesetNode.extendOnEveryPath = true;
- }
- }
-
- // now find every selector and apply the extends that apply to all extends
- // and the ones which apply to an individual extend
- var paths = rulesetNode.paths;
- for (i = 0; i < paths.length; i++) {
- var selectorPath = paths[i],
- selector = selectorPath[selectorPath.length - 1],
- selExtendList = selector.extendList;
-
- extendList = selExtendList ? selExtendList.slice(0).concat(allSelectorsExtendList)
- : allSelectorsExtendList;
-
- if (extendList) {
- extendList = extendList.map(function (allSelectorsExtend) {
- return allSelectorsExtend.clone();
- });
- }
-
- for (j = 0; j < extendList.length; j++) {
- this.foundExtends = true;
- extend = extendList[j];
- extend.findSelfSelectors(selectorPath);
- extend.ruleset = rulesetNode;
- if (j === 0) {
- extend.firstExtendOnThisSelectorPath = true;
- }
- this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);
- }
- }
-
- this.contexts.push(rulesetNode.selectors);
- },
- visitRulesetOut: function (rulesetNode) {
- if (!rulesetNode.root) {
- this.contexts.length = this.contexts.length - 1;
- }
- },
- visitMedia: function (mediaNode, visitArgs) {
- mediaNode.allExtends = [];
- this.allExtendsStack.push(mediaNode.allExtends);
- },
- visitMediaOut: function (mediaNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- },
- visitDirective: function (directiveNode, visitArgs) {
- directiveNode.allExtends = [];
- this.allExtendsStack.push(directiveNode.allExtends);
- },
- visitDirectiveOut: function (directiveNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- }
- };
-
- tree.processExtendsVisitor = function () {
- this._visitor = new tree.visitor(this);
- };
-
- tree.processExtendsVisitor.prototype = {
- run: function (root) {
- var extendFinder = new tree.extendFinderVisitor();
- extendFinder.run(root);
- if (!extendFinder.foundExtends) {
- return root;
- }
- root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));
- this.allExtendsStack = [root.allExtends];
- return this._visitor.visit(root);
- },
- doExtendChaining: function (extendsList, extendsListTarget, iterationCount) {
- //
- // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering and pasting
- // the selector we would do normally, but we are also adding an extend with the same target selector
- // this means this new extend can then go and alter other extends
- //
- // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors
- // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already processed if
- // we look at each selector at a time, as is done in visitRuleset
-
- var extendIndex, targetExtendIndex, matches, extendsToAdd = [], newSelector, extendVisitor = this, selectorPath, extend, targetExtend, newExtend;
-
- iterationCount = iterationCount || 0;
-
- //loop through comparing every extend with every target extend.
- // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place
- // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one
- // and the second is the target.
- // the seperation into two lists allows us to process a subset of chains with a bigger set, as is the
- // case when processing media queries
- for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {
- for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {
-
- extend = extendsList[extendIndex];
- targetExtend = extendsListTarget[targetExtendIndex];
-
- // look for circular references
- if (extend.parent_ids.indexOf(targetExtend.object_id) >= 0) {
- continue;
- }
-
- // find a match in the target extends self selector (the bit before :extend)
- selectorPath = [targetExtend.selfSelectors[0]];
- matches = extendVisitor.findMatch(extend, selectorPath);
-
- if (matches.length) {
-
- // we found a match, so for each self selector..
- extend.selfSelectors.forEach(function (selfSelector) {
-
- // process the extend as usual
- newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector);
-
- // but now we create a new extend from it
- newExtend = new (tree.Extend)(targetExtend.selector, targetExtend.option, 0);
- newExtend.selfSelectors = newSelector;
-
- // add the extend onto the list of extends for that selector
- newSelector[newSelector.length - 1].extendList = [newExtend];
-
- // record that we need to add it.
- extendsToAdd.push(newExtend);
- newExtend.ruleset = targetExtend.ruleset;
-
- //remember its parents for circular references
- newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);
-
- // only process the selector once.. if we have :extend(.a,.b) then multiple
- // extends will look at the same selector path, so when extending
- // we know that any others will be duplicates in terms of what is added to the css
- if (targetExtend.firstExtendOnThisSelectorPath) {
- newExtend.firstExtendOnThisSelectorPath = true;
- targetExtend.ruleset.paths.push(newSelector);
- }
- });
- }
- }
- }
-
- if (extendsToAdd.length) {
- // try to detect circular references to stop a stack overflow.
- // may no longer be needed.
- this.extendChainCount++;
- if (iterationCount > 100) {
- var selectorOne = "{unable to calculate}";
- var selectorTwo = "{unable to calculate}";
- try {
- selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();
- selectorTwo = extendsToAdd[0].selector.toCSS();
- }
- catch (e) {
- }
- throw {message: "extend circular reference detected. One of the circular extends is currently:" + selectorOne + ":extend(" + selectorTwo + ")"};
- }
-
- // now process the new extends on the existing rules so that we can handle a extending b extending c ectending d extending e...
- return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));
- } else {
- return extendsToAdd;
- }
- },
- visitRule: function (ruleNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitSelector: function (selectorNode, visitArgs) {
- visitArgs.visitDeeper = false;
- },
- visitRuleset: function (rulesetNode, visitArgs) {
- if (rulesetNode.root) {
- return;
- }
- var matches, pathIndex, extendIndex, allExtends = this.allExtendsStack[this.allExtendsStack.length - 1], selectorsToAdd = [], extendVisitor = this, selectorPath;
-
- // look at each selector path in the ruleset, find any extend matches and then copy, find and replace
-
- for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {
- for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {
- selectorPath = rulesetNode.paths[pathIndex];
-
- // extending extends happens initially, before the main pass
- if (rulesetNode.extendOnEveryPath) {
- continue;
- }
- var extendList = selectorPath[selectorPath.length - 1].extendList;
- if (extendList && extendList.length) {
- continue;
- }
-
- matches = this.findMatch(allExtends[extendIndex], selectorPath);
-
- if (matches.length) {
-
- allExtends[extendIndex].selfSelectors.forEach(function (selfSelector) {
- selectorsToAdd.push(extendVisitor.extendSelector(matches, selectorPath, selfSelector));
- });
- }
- }
- }
- rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);
- },
- findMatch: function (extend, haystackSelectorPath) {
- //
- // look through the haystack selector path to try and find the needle - extend.selector
- // returns an array of selector matches that can then be replaced
- //
- var haystackSelectorIndex, hackstackSelector, hackstackElementIndex, haystackElement,
- targetCombinator, i,
- extendVisitor = this,
- needleElements = extend.selector.elements,
- potentialMatches = [], potentialMatch, matches = [];
-
- // loop through the haystack elements
- for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {
- hackstackSelector = haystackSelectorPath[haystackSelectorIndex];
-
- for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {
-
- haystackElement = hackstackSelector.elements[hackstackElementIndex];
-
- // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.
- if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {
- potentialMatches.push({
- pathIndex: haystackSelectorIndex,
- index: hackstackElementIndex,
- matched: 0,
- initialCombinator: haystackElement.combinator
- });
- }
-
- for (i = 0; i < potentialMatches.length; i++) {
- potentialMatch = potentialMatches[i];
-
- // selectors add " " onto the first element. When we use & it joins the selectors together, but if we don't
- // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to work out
- // what the resulting combinator will be
- targetCombinator = haystackElement.combinator.value;
- if (targetCombinator === '' && hackstackElementIndex === 0) {
- targetCombinator = ' ';
- }
-
- // if we don't match, null our match to indicate failure
- if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||
- (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {
- potentialMatch = null;
- } else {
- potentialMatch.matched++;
- }
-
- // if we are still valid and have finished, test whether we have elements after and whether these are allowed
- if (potentialMatch) {
- potentialMatch.finished = potentialMatch.matched === needleElements.length;
- if (potentialMatch.finished &&
- (!extend.allowAfter && (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {
- potentialMatch = null;
- }
- }
- // if null we remove, if not, we are still valid, so either push as a valid match or continue
- if (potentialMatch) {
- if (potentialMatch.finished) {
- potentialMatch.length = needleElements.length;
- potentialMatch.endPathIndex = haystackSelectorIndex;
- potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match
- potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again
- matches.push(potentialMatch);
- }
- } else {
- potentialMatches.splice(i, 1);
- i--;
- }
- }
- }
- }
- return matches;
- },
- isElementValuesEqual: function (elementValue1, elementValue2) {
- if (typeof elementValue1 === "string" || typeof elementValue2 === "string") {
- return elementValue1 === elementValue2;
- }
- if (elementValue1 instanceof tree.Attribute) {
- if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {
- return false;
- }
- if (!elementValue1.value || !elementValue2.value) {
- if (elementValue1.value || elementValue2.value) {
- return false;
- }
- return true;
- }
- elementValue1 = elementValue1.value.value || elementValue1.value;
- elementValue2 = elementValue2.value.value || elementValue2.value;
- return elementValue1 === elementValue2;
- }
- elementValue1 = elementValue1.value;
- elementValue2 = elementValue2.value;
- if (elementValue1 instanceof tree.Selector) {
- if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {
- return false;
- }
- for (var i = 0; i < elementValue1.elements.length; i++) {
- if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {
- if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {
- return false;
- }
- }
- if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) {
- return false;
- }
- }
- return true;
- }
- return false;
- },
- extendSelector: function (matches, selectorPath, replacementSelector) {
-
- //for a set of matches, replace each match with the replacement selector
-
- var currentSelectorPathIndex = 0,
- currentSelectorPathElementIndex = 0,
- path = [],
- matchIndex,
- selector,
- firstElement,
- match,
- newElements;
-
- for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {
- match = matches[matchIndex];
- selector = selectorPath[match.pathIndex];
- firstElement = new tree.Element(
- match.initialCombinator,
- replacementSelector.elements[0].value,
- replacementSelector.elements[0].index,
- replacementSelector.elements[0].currentFileInfo
- );
-
- if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {
- path[path.length - 1].elements = path[path.length - 1].elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
- currentSelectorPathElementIndex = 0;
- currentSelectorPathIndex++;
- }
-
- newElements = selector.elements
- .slice(currentSelectorPathElementIndex, match.index)
- .concat([firstElement])
- .concat(replacementSelector.elements.slice(1));
-
- if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {
- path[path.length - 1].elements =
- path[path.length - 1].elements.concat(newElements);
- } else {
- path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));
-
- path.push(new tree.Selector(
- newElements
- ));
- }
- currentSelectorPathIndex = match.endPathIndex;
- currentSelectorPathElementIndex = match.endPathElementIndex;
- if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {
- currentSelectorPathElementIndex = 0;
- currentSelectorPathIndex++;
- }
- }
-
- if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {
- path[path.length - 1].elements = path[path.length - 1].elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
- currentSelectorPathIndex++;
- }
-
- path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));
-
- return path;
- },
- visitRulesetOut: function (rulesetNode) {
- },
- visitMedia: function (mediaNode, visitArgs) {
- var newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
- newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));
- this.allExtendsStack.push(newAllExtends);
- },
- visitMediaOut: function (mediaNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- },
- visitDirective: function (directiveNode, visitArgs) {
- var newAllExtends = directiveNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
- newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, directiveNode.allExtends));
- this.allExtendsStack.push(newAllExtends);
- },
- visitDirectiveOut: function (directiveNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- }
- };
-
-})(require('./tree'));
-
-(function (tree) {
-
- tree.sourceMapOutput = function (options) {
- this._css = [];
- this._rootNode = options.rootNode;
- this._writeSourceMap = options.writeSourceMap;
- this._contentsMap = options.contentsMap;
- this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;
- this._sourceMapFilename = options.sourceMapFilename;
- this._outputFilename = options.outputFilename;
- this._sourceMapURL = options.sourceMapURL;
- if (options.sourceMapBasepath) {
- this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\/g, '/');
- }
- this._sourceMapRootpath = options.sourceMapRootpath;
- this._outputSourceFiles = options.outputSourceFiles;
- this._sourceMapGeneratorConstructor = options.sourceMapGenerator || require("source-map").SourceMapGenerator;
-
- if (this._sourceMapRootpath && this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {
- this._sourceMapRootpath += '/';
- }
-
- this._lineNumber = 0;
- this._column = 0;
- };
-
- tree.sourceMapOutput.prototype.normalizeFilename = function (filename) {
- filename = filename.replace(/\\/g, '/');
-
- if (this._sourceMapBasepath && filename.indexOf(this._sourceMapBasepath) === 0) {
- filename = filename.substring(this._sourceMapBasepath.length);
- if (filename.charAt(0) === '\\' || filename.charAt(0) === '/') {
- filename = filename.substring(1);
- }
- }
- return (this._sourceMapRootpath || "") + filename;
- };
-
- tree.sourceMapOutput.prototype.add = function (chunk, fileInfo, index, mapLines) {
-
- //ignore adding empty strings
- if (!chunk) {
- return;
- }
-
- var lines,
- sourceLines,
- columns,
- sourceColumns,
- i;
-
- if (fileInfo) {
- var inputSource = this._contentsMap[fileInfo.filename];
-
- // remove vars/banner added to the top of the file
- if (this._contentsIgnoredCharsMap[fileInfo.filename]) {
- // adjust the index
- index -= this._contentsIgnoredCharsMap[fileInfo.filename];
- if (index < 0) {
- index = 0;
- }
- // adjust the source
- inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);
- }
- inputSource = inputSource.substring(0, index);
- sourceLines = inputSource.split("\n");
- sourceColumns = sourceLines[sourceLines.length - 1];
- }
-
- lines = chunk.split("\n");
- columns = lines[lines.length - 1];
-
- if (fileInfo) {
- if (!mapLines) {
- this._sourceMapGenerator.addMapping({
- generated: {line: this._lineNumber + 1, column: this._column},
- original: {line: sourceLines.length, column: sourceColumns.length},
- source: this.normalizeFilename(fileInfo.filename)
- });
- } else {
- for (i = 0; i < lines.length; i++) {
- this._sourceMapGenerator.addMapping({
- generated: {line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0},
- original: {line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0},
- source: this.normalizeFilename(fileInfo.filename)
- });
- }
- }
- }
-
- if (lines.length === 1) {
- this._column += columns.length;
- } else {
- this._lineNumber += lines.length - 1;
- this._column = columns.length;
- }
-
- this._css.push(chunk);
- };
-
- tree.sourceMapOutput.prototype.isEmpty = function () {
- return this._css.length === 0;
- };
-
- tree.sourceMapOutput.prototype.toCSS = function (env) {
- this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({
- file: this._outputFilename,
- sourceRoot: null
- });
-
- if (this._outputSourceFiles) {
- for (var filename in this._contentsMap) {
- if (this._contentsMap.hasOwnProperty(filename)) {
- var source = this._contentsMap[filename];
- if (this._contentsIgnoredCharsMap[filename]) {
- source = source.slice(this._contentsIgnoredCharsMap[filename]);
- }
- this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);
- }
- }
- }
-
- this._rootNode.genCSS(env, this);
-
- if (this._css.length > 0) {
- var sourceMapURL,
- sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());
-
- if (this._sourceMapURL) {
- sourceMapURL = this._sourceMapURL;
- } else if (this._sourceMapFilename) {
- sourceMapURL = this.normalizeFilename(this._sourceMapFilename);
- }
-
- if (this._writeSourceMap) {
- this._writeSourceMap(sourceMapContent);
- } else {
- sourceMapURL = "data:application/json;base64," + require('./encoder.js').encodeBase64(sourceMapContent);
- }
-
- if (sourceMapURL) {
- this._css.push("/*# sourceMappingURL=" + sourceMapURL + " */");
- }
- }
-
- return this._css.join('');
- };
-
-})(require('./tree'));
-
-// wraps the source-map code in a less module
-(function () {
- less.modules["source-map"] = function () {
-
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-
- /**
- * Define a module along with a payload.
- * @param {string} moduleName Name for the payload
- * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec
- * @param {function} payload Function with (require, exports, module) params
- */
- function define(moduleName, deps, payload) {
- if (typeof moduleName != "string") {
- throw new TypeError('Expected string, got: ' + moduleName);
- }
-
- if (arguments.length == 2) {
- payload = deps;
- }
-
- if (moduleName in define.modules) {
- throw new Error("Module already defined: " + moduleName);
- }
- define.modules[moduleName] = payload;
- };
-
- /**
- * The global store of un-instantiated modules
- */
- define.modules = {};
-
-
- /**
- * We invoke require() in the context of a Domain so we can have multiple
- * sets of modules running separate from each other.
- * This contrasts with JSMs which are singletons, Domains allows us to
- * optionally load a CommonJS module twice with separate data each time.
- * Perhaps you want 2 command lines with a different set of commands in each,
- * for example.
- */
- function Domain() {
- this.modules = {};
- this._currentModule = null;
- }
-
- (function () {
-
- /**
- * Lookup module names and resolve them by calling the definition function if
- * needed.
- * There are 2 ways to call this, either with an array of dependencies and a
- * callback to call when the dependencies are found (which can happen
- * asynchronously in an in-page context) or with a single string an no callback
- * where the dependency is resolved synchronously and returned.
- * The API is designed to be compatible with the CommonJS AMD spec and
- * RequireJS.
- * @param {string[]|string} deps A name, or names for the payload
- * @param {function|undefined} callback Function to call when the dependencies
- * are resolved
- * @return {undefined|object} The module required or undefined for
- * array/callback method
- */
- Domain.prototype.require = function (deps, callback) {
- if (Array.isArray(deps)) {
- var params = deps.map(function (dep) {
- return this.lookup(dep);
- }, this);
- if (callback) {
- callback.apply(null, params);
- }
- return undefined;
- }
- else {
- return this.lookup(deps);
- }
- };
-
- function normalize(path) {
- var bits = path.split('/');
- var i = 1;
- while (i < bits.length) {
- if (bits[i] === '..') {
- bits.splice(i - 1, 1);
- } else if (bits[i] === '.') {
- bits.splice(i, 1);
- } else {
- i++;
- }
- }
- return bits.join('/');
- }
-
- function join(a, b) {
- a = a.trim();
- b = b.trim();
- if (/^\//.test(b)) {
- return b;
- } else {
- return a.replace(/\/*$/, '/') + b;
- }
- }
-
- function dirname(path) {
- var bits = path.split('/');
- bits.pop();
- return bits.join('/');
- }
-
- /**
- * Lookup module names and resolve them by calling the definition function if
- * needed.
- * @param {string} moduleName A name for the payload to lookup
- * @return {object} The module specified by aModuleName or null if not found.
- */
- Domain.prototype.lookup = function (moduleName) {
- if (/^\./.test(moduleName)) {
- moduleName = normalize(join(dirname(this._currentModule), moduleName));
- }
-
- if (moduleName in this.modules) {
- var module = this.modules[moduleName];
- return module;
- }
-
- if (!(moduleName in define.modules)) {
- throw new Error("Module not defined: " + moduleName);
- }
-
- var module = define.modules[moduleName];
-
- if (typeof module == "function") {
- var exports = {};
- var previousModule = this._currentModule;
- this._currentModule = moduleName;
- module(this.require.bind(this), exports, {id: moduleName, uri: ""});
- this._currentModule = previousModule;
- module = exports;
- }
-
- // cache the resulting module object for next time
- this.modules[moduleName] = module;
-
- return module;
- };
-
- }());
-
- define.Domain = Domain;
- define.globalDomain = new Domain();
- var require = define.globalDomain.require.bind(define.globalDomain);
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/source-map-generator', ['require', 'exports', 'module', 'source-map/base64-vlq', 'source-map/util', 'source-map/array-set'], function (require, exports, module) {
-
- var base64VLQ = require('./base64-vlq');
- var util = require('./util');
- var ArraySet = require('./array-set').ArraySet;
-
- /**
- * An instance of the SourceMapGenerator represents a source map which is
- * being built incrementally. To create a new one, you must pass an object
- * with the following properties:
- *
- * - file: The filename of the generated source.
- * - sourceRoot: An optional root for all URLs in this source map.
- */
- function SourceMapGenerator(aArgs) {
- this._file = util.getArg(aArgs, 'file');
- this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
- this._sources = new ArraySet();
- this._names = new ArraySet();
- this._mappings = [];
- this._sourcesContents = null;
- }
-
- SourceMapGenerator.prototype._version = 3;
-
- /**
- * Creates a new SourceMapGenerator based on a SourceMapConsumer
- *
- * @param aSourceMapConsumer The SourceMap.
- */
- SourceMapGenerator.fromSourceMap =
- function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
- var sourceRoot = aSourceMapConsumer.sourceRoot;
- var generator = new SourceMapGenerator({
- file: aSourceMapConsumer.file,
- sourceRoot: sourceRoot
- });
- aSourceMapConsumer.eachMapping(function (mapping) {
- var newMapping = {
- generated: {
- line: mapping.generatedLine,
- column: mapping.generatedColumn
- }
- };
-
- if (mapping.source) {
- newMapping.source = mapping.source;
- if (sourceRoot) {
- newMapping.source = util.relative(sourceRoot, newMapping.source);
- }
-
- newMapping.original = {
- line: mapping.originalLine,
- column: mapping.originalColumn
- };
-
- if (mapping.name) {
- newMapping.name = mapping.name;
- }
- }
-
- generator.addMapping(newMapping);
- });
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- generator.setSourceContent(sourceFile, content);
- }
- });
- return generator;
- };
-
- /**
- * Add a single mapping from original source line and column to the generated
- * source's line and column for this source map being created. The mapping
- * object should have the following properties:
- *
- * - generated: An object with the generated line and column positions.
- * - original: An object with the original line and column positions.
- * - source: The original source file (relative to the sourceRoot).
- * - name: An optional original token name for this mapping.
- */
- SourceMapGenerator.prototype.addMapping =
- function SourceMapGenerator_addMapping(aArgs) {
- var generated = util.getArg(aArgs, 'generated');
- var original = util.getArg(aArgs, 'original', null);
- var source = util.getArg(aArgs, 'source', null);
- var name = util.getArg(aArgs, 'name', null);
-
- this._validateMapping(generated, original, source, name);
-
- if (source && !this._sources.has(source)) {
- this._sources.add(source);
- }
-
- if (name && !this._names.has(name)) {
- this._names.add(name);
- }
-
- this._mappings.push({
- generatedLine: generated.line,
- generatedColumn: generated.column,
- originalLine: original != null && original.line,
- originalColumn: original != null && original.column,
- source: source,
- name: name
- });
- };
-
- /**
- * Set the source content for a source file.
- */
- SourceMapGenerator.prototype.setSourceContent =
- function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
- var source = aSourceFile;
- if (this._sourceRoot) {
- source = util.relative(this._sourceRoot, source);
- }
-
- if (aSourceContent !== null) {
- // Add the source content to the _sourcesContents map.
- // Create a new _sourcesContents map if the property is null.
- if (!this._sourcesContents) {
- this._sourcesContents = {};
- }
- this._sourcesContents[util.toSetString(source)] = aSourceContent;
- } else {
- // Remove the source file from the _sourcesContents map.
- // If the _sourcesContents map is empty, set the property to null.
- delete this._sourcesContents[util.toSetString(source)];
- if (Object.keys(this._sourcesContents).length === 0) {
- this._sourcesContents = null;
- }
- }
- };
-
- /**
- * Applies the mappings of a sub-source-map for a specific source file to the
- * source map being generated. Each mapping to the supplied source file is
- * rewritten using the supplied source map. Note: The resolution for the
- * resulting mappings is the minimium of this map and the supplied map.
- *
- * @param aSourceMapConsumer The source map to be applied.
- * @param aSourceFile Optional. The filename of the source file.
- * If omitted, SourceMapConsumer's file property will be used.
- */
- SourceMapGenerator.prototype.applySourceMap =
- function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) {
- // If aSourceFile is omitted, we will use the file property of the SourceMap
- if (!aSourceFile) {
- aSourceFile = aSourceMapConsumer.file;
- }
- var sourceRoot = this._sourceRoot;
- // Make "aSourceFile" relative if an absolute Url is passed.
- if (sourceRoot) {
- aSourceFile = util.relative(sourceRoot, aSourceFile);
- }
- // Applying the SourceMap can add and remove items from the sources and
- // the names array.
- var newSources = new ArraySet();
- var newNames = new ArraySet();
-
- // Find mappings for the "aSourceFile"
- this._mappings.forEach(function (mapping) {
- if (mapping.source === aSourceFile && mapping.originalLine) {
- // Check if it can be mapped by the source map, then update the mapping.
- var original = aSourceMapConsumer.originalPositionFor({
- line: mapping.originalLine,
- column: mapping.originalColumn
- });
- if (original.source !== null) {
- // Copy mapping
- if (sourceRoot) {
- mapping.source = util.relative(sourceRoot, original.source);
- } else {
- mapping.source = original.source;
- }
- mapping.originalLine = original.line;
- mapping.originalColumn = original.column;
- if (original.name !== null && mapping.name !== null) {
- // Only use the identifier name if it's an identifier
- // in both SourceMaps
- mapping.name = original.name;
- }
- }
- }
-
- var source = mapping.source;
- if (source && !newSources.has(source)) {
- newSources.add(source);
- }
-
- var name = mapping.name;
- if (name && !newNames.has(name)) {
- newNames.add(name);
- }
-
- }, this);
- this._sources = newSources;
- this._names = newNames;
-
- // Copy sourcesContents of applied map.
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- if (sourceRoot) {
- sourceFile = util.relative(sourceRoot, sourceFile);
- }
- this.setSourceContent(sourceFile, content);
- }
- }, this);
- };
-
- /**
- * A mapping can have one of the three levels of data:
- *
- * 1. Just the generated position.
- * 2. The Generated position, original position, and original source.
- * 3. Generated and original position, original source, as well as a name
- * token.
- *
- * To maintain consistency, we validate that any new mapping being added falls
- * in to one of these categories.
- */
- SourceMapGenerator.prototype._validateMapping =
- function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
- aName) {
- if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
- && aGenerated.line > 0 && aGenerated.column >= 0
- && !aOriginal && !aSource && !aName) {
- // Case 1.
- return;
- }
- else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
- && aOriginal && 'line' in aOriginal && 'column' in aOriginal
- && aGenerated.line > 0 && aGenerated.column >= 0
- && aOriginal.line > 0 && aOriginal.column >= 0
- && aSource) {
- // Cases 2 and 3.
- return;
- }
- else {
- throw new Error('Invalid mapping: ' + JSON.stringify({
- generated: aGenerated,
- source: aSource,
- original: aOriginal,
- name: aName
- }));
- }
- };
-
- /**
- * Serialize the accumulated mappings in to the stream of base 64 VLQs
- * specified by the source map format.
- */
- SourceMapGenerator.prototype._serializeMappings =
- function SourceMapGenerator_serializeMappings() {
- var previousGeneratedColumn = 0;
- var previousGeneratedLine = 1;
- var previousOriginalColumn = 0;
- var previousOriginalLine = 0;
- var previousName = 0;
- var previousSource = 0;
- var result = '';
- var mapping;
-
- // The mappings must be guaranteed to be in sorted order before we start
- // serializing them or else the generated line numbers (which are defined
- // via the ';' separators) will be all messed up. Note: it might be more
- // performant to maintain the sorting as we insert them, rather than as we
- // serialize them, but the big O is the same either way.
- this._mappings.sort(util.compareByGeneratedPositions);
-
- for (var i = 0, len = this._mappings.length; i < len; i++) {
- mapping = this._mappings[i];
-
- if (mapping.generatedLine !== previousGeneratedLine) {
- previousGeneratedColumn = 0;
- while (mapping.generatedLine !== previousGeneratedLine) {
- result += ';';
- previousGeneratedLine++;
- }
- }
- else {
- if (i > 0) {
- if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {
- continue;
- }
- result += ',';
- }
- }
-
- result += base64VLQ.encode(mapping.generatedColumn
- - previousGeneratedColumn);
- previousGeneratedColumn = mapping.generatedColumn;
-
- if (mapping.source) {
- result += base64VLQ.encode(this._sources.indexOf(mapping.source)
- - previousSource);
- previousSource = this._sources.indexOf(mapping.source);
-
- // lines are stored 0-based in SourceMap spec version 3
- result += base64VLQ.encode(mapping.originalLine - 1
- - previousOriginalLine);
- previousOriginalLine = mapping.originalLine - 1;
-
- result += base64VLQ.encode(mapping.originalColumn
- - previousOriginalColumn);
- previousOriginalColumn = mapping.originalColumn;
-
- if (mapping.name) {
- result += base64VLQ.encode(this._names.indexOf(mapping.name)
- - previousName);
- previousName = this._names.indexOf(mapping.name);
- }
- }
- }
-
- return result;
- };
-
- SourceMapGenerator.prototype._generateSourcesContent =
- function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
- return aSources.map(function (source) {
- if (!this._sourcesContents) {
- return null;
- }
- if (aSourceRoot) {
- source = util.relative(aSourceRoot, source);
- }
- var key = util.toSetString(source);
- return Object.prototype.hasOwnProperty.call(this._sourcesContents,
- key)
- ? this._sourcesContents[key]
- : null;
- }, this);
- };
-
- /**
- * Externalize the source map.
- */
- SourceMapGenerator.prototype.toJSON =
- function SourceMapGenerator_toJSON() {
- var map = {
- version: this._version,
- file: this._file,
- sources: this._sources.toArray(),
- names: this._names.toArray(),
- mappings: this._serializeMappings()
- };
- if (this._sourceRoot) {
- map.sourceRoot = this._sourceRoot;
- }
- if (this._sourcesContents) {
- map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
- }
-
- return map;
- };
-
- /**
- * Render the source map being generated to a string.
- */
- SourceMapGenerator.prototype.toString =
- function SourceMapGenerator_toString() {
- return JSON.stringify(this);
- };
-
- exports.SourceMapGenerator = SourceMapGenerator;
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- *
- * Based on the Base 64 VLQ implementation in Closure Compiler:
- * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
- *
- * Copyright 2011 The Closure Compiler Authors. All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- define('source-map/base64-vlq', ['require', 'exports', 'module', 'source-map/base64'], function (require, exports, module) {
-
- var base64 = require('./base64');
-
- // A single base 64 digit can contain 6 bits of data. For the base 64 variable
- // length quantities we use in the source map spec, the first bit is the sign,
- // the next four bits are the actual value, and the 6th bit is the
- // continuation bit. The continuation bit tells us whether there are more
- // digits in this value following this digit.
- //
- // Continuation
- // | Sign
- // | |
- // V V
- // 101011
-
- var VLQ_BASE_SHIFT = 5;
-
- // binary: 100000
- var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
-
- // binary: 011111
- var VLQ_BASE_MASK = VLQ_BASE - 1;
-
- // binary: 100000
- var VLQ_CONTINUATION_BIT = VLQ_BASE;
-
- /**
- * Converts from a two-complement value to a value where the sign bit is
- * is placed in the least significant bit. For example, as decimals:
- * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
- * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
- */
- function toVLQSigned(aValue) {
- return aValue < 0
- ? ((-aValue) << 1) + 1
- : (aValue << 1) + 0;
- }
-
- /**
- * Converts to a two-complement value from a value where the sign bit is
- * is placed in the least significant bit. For example, as decimals:
- * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
- * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
- */
- function fromVLQSigned(aValue) {
- var isNegative = (aValue & 1) === 1;
- var shifted = aValue >> 1;
- return isNegative
- ? -shifted
- : shifted;
- }
-
- /**
- * Returns the base 64 VLQ encoded value.
- */
- exports.encode = function base64VLQ_encode(aValue) {
- var encoded = "";
- var digit;
-
- var vlq = toVLQSigned(aValue);
-
- do {
- digit = vlq & VLQ_BASE_MASK;
- vlq >>>= VLQ_BASE_SHIFT;
- if (vlq > 0) {
- // There are still more digits in this value, so we must make sure the
- // continuation bit is marked.
- digit |= VLQ_CONTINUATION_BIT;
- }
- encoded += base64.encode(digit);
- } while (vlq > 0);
-
- return encoded;
- };
-
- /**
- * Decodes the next base 64 VLQ value from the given string and returns the
- * value and the rest of the string.
- */
- exports.decode = function base64VLQ_decode(aStr) {
- var i = 0;
- var strLen = aStr.length;
- var result = 0;
- var shift = 0;
- var continuation, digit;
-
- do {
- if (i >= strLen) {
- throw new Error("Expected more digits in base 64 VLQ value.");
- }
- digit = base64.decode(aStr.charAt(i++));
- continuation = !!(digit & VLQ_CONTINUATION_BIT);
- digit &= VLQ_BASE_MASK;
- result = result + (digit << shift);
- shift += VLQ_BASE_SHIFT;
- } while (continuation);
-
- return {
- value: fromVLQSigned(result),
- rest: aStr.slice(i)
- };
- };
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/base64', ['require', 'exports', 'module',], function (require, exports, module) {
-
- var charToIntMap = {};
- var intToCharMap = {};
-
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- .split('')
- .forEach(function (ch, index) {
- charToIntMap[ch] = index;
- intToCharMap[index] = ch;
- });
-
- /**
- * Encode an integer in the range of 0 to 63 to a single base 64 digit.
- */
- exports.encode = function base64_encode(aNumber) {
- if (aNumber in intToCharMap) {
- return intToCharMap[aNumber];
- }
- throw new TypeError("Must be between 0 and 63: " + aNumber);
- };
-
- /**
- * Decode a single base 64 digit to an integer.
- */
- exports.decode = function base64_decode(aChar) {
- if (aChar in charToIntMap) {
- return charToIntMap[aChar];
- }
- throw new TypeError("Not a valid base 64 digit: " + aChar);
- };
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/util', ['require', 'exports', 'module',], function (require, exports, module) {
-
- /**
- * This is a helper function for getting values from parameter/options
- * objects.
- *
- * @param args The object we are extracting values from
- * @param name The name of the property we are getting.
- * @param defaultValue An optional value to return if the property is missing
- * from the object. If this is not specified and the property is missing, an
- * error will be thrown.
- */
- function getArg(aArgs, aName, aDefaultValue) {
- if (aName in aArgs) {
- return aArgs[aName];
- } else if (arguments.length === 3) {
- return aDefaultValue;
- } else {
- throw new Error('"' + aName + '" is a required argument.');
- }
- }
-
- exports.getArg = getArg;
-
- var urlRegexp = /([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/;
- var dataUrlRegexp = /^data:.+\,.+/;
-
- function urlParse(aUrl) {
- var match = aUrl.match(urlRegexp);
- if (!match) {
- return null;
- }
- return {
- scheme: match[1],
- auth: match[3],
- host: match[4],
- port: match[6],
- path: match[7]
- };
- }
-
- exports.urlParse = urlParse;
-
- function urlGenerate(aParsedUrl) {
- var url = aParsedUrl.scheme + "://";
- if (aParsedUrl.auth) {
- url += aParsedUrl.auth + "@"
- }
- if (aParsedUrl.host) {
- url += aParsedUrl.host;
- }
- if (aParsedUrl.port) {
- url += ":" + aParsedUrl.port
- }
- if (aParsedUrl.path) {
- url += aParsedUrl.path;
- }
- return url;
- }
-
- exports.urlGenerate = urlGenerate;
-
- function join(aRoot, aPath) {
- var url;
-
- if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) {
- return aPath;
- }
-
- if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) {
- url.path = aPath;
- return urlGenerate(url);
- }
-
- return aRoot.replace(/\/$/, '') + '/' + aPath;
- }
-
- exports.join = join;
-
- /**
- * Because behavior goes wacky when you set `__proto__` on objects, we
- * have to prefix all the strings in our set with an arbitrary character.
- *
- * See https://github.com/mozilla/source-map/pull/31 and
- * https://github.com/mozilla/source-map/issues/30
- *
- * @param String aStr
- */
- function toSetString(aStr) {
- return '$' + aStr;
- }
-
- exports.toSetString = toSetString;
-
- function fromSetString(aStr) {
- return aStr.substr(1);
- }
-
- exports.fromSetString = fromSetString;
-
- function relative(aRoot, aPath) {
- aRoot = aRoot.replace(/\/$/, '');
-
- var url = urlParse(aRoot);
- if (aPath.charAt(0) == "/" && url && url.path == "/") {
- return aPath.slice(1);
- }
-
- return aPath.indexOf(aRoot + '/') === 0
- ? aPath.substr(aRoot.length + 1)
- : aPath;
- }
-
- exports.relative = relative;
-
- function strcmp(aStr1, aStr2) {
- var s1 = aStr1 || "";
- var s2 = aStr2 || "";
- return (s1 > s2) - (s1 < s2);
- }
-
- /**
- * Comparator between two mappings where the original positions are compared.
- *
- * Optionally pass in `true` as `onlyCompareGenerated` to consider two
- * mappings with the same original source/line/column, but different generated
- * line and column the same. Useful when searching for a mapping with a
- * stubbed out mapping.
- */
- function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
- var cmp;
-
- cmp = strcmp(mappingA.source, mappingB.source);
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.originalLine - mappingB.originalLine;
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.originalColumn - mappingB.originalColumn;
- if (cmp || onlyCompareOriginal) {
- return cmp;
- }
-
- cmp = strcmp(mappingA.name, mappingB.name);
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp) {
- return cmp;
- }
-
- return mappingA.generatedColumn - mappingB.generatedColumn;
- };
- exports.compareByOriginalPositions = compareByOriginalPositions;
-
- /**
- * Comparator between two mappings where the generated positions are
- * compared.
- *
- * Optionally pass in `true` as `onlyCompareGenerated` to consider two
- * mappings with the same generated line and column, but different
- * source/name/original line and column the same. Useful when searching for a
- * mapping with a stubbed out mapping.
- */
- function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {
- var cmp;
-
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
- if (cmp || onlyCompareGenerated) {
- return cmp;
- }
-
- cmp = strcmp(mappingA.source, mappingB.source);
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.originalLine - mappingB.originalLine;
- if (cmp) {
- return cmp;
- }
-
- cmp = mappingA.originalColumn - mappingB.originalColumn;
- if (cmp) {
- return cmp;
- }
-
- return strcmp(mappingA.name, mappingB.name);
- };
- exports.compareByGeneratedPositions = compareByGeneratedPositions;
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/array-set', ['require', 'exports', 'module', 'source-map/util'], function (require, exports, module) {
-
- var util = require('./util');
-
- /**
- * A data structure which is a combination of an array and a set. Adding a new
- * member is O(1), testing for membership is O(1), and finding the index of an
- * element is O(1). Removing elements from the set is not supported. Only
- * strings are supported for membership.
- */
- function ArraySet() {
- this._array = [];
- this._set = {};
- }
-
- /**
- * Static method for creating ArraySet instances from an existing array.
- */
- ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
- var set = new ArraySet();
- for (var i = 0, len = aArray.length; i < len; i++) {
- set.add(aArray[i], aAllowDuplicates);
- }
- return set;
- };
-
- /**
- * Add the given string to this set.
- *
- * @param String aStr
- */
- ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
- var isDuplicate = this.has(aStr);
- var idx = this._array.length;
- if (!isDuplicate || aAllowDuplicates) {
- this._array.push(aStr);
- }
- if (!isDuplicate) {
- this._set[util.toSetString(aStr)] = idx;
- }
- };
-
- /**
- * Is the given string a member of this set?
- *
- * @param String aStr
- */
- ArraySet.prototype.has = function ArraySet_has(aStr) {
- return Object.prototype.hasOwnProperty.call(this._set,
- util.toSetString(aStr));
- };
-
- /**
- * What is the index of the given string in the array?
- *
- * @param String aStr
- */
- ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
- if (this.has(aStr)) {
- return this._set[util.toSetString(aStr)];
- }
- throw new Error('"' + aStr + '" is not in the set.');
- };
-
- /**
- * What is the element at the given index?
- *
- * @param Number aIdx
- */
- ArraySet.prototype.at = function ArraySet_at(aIdx) {
- if (aIdx >= 0 && aIdx < this._array.length) {
- return this._array[aIdx];
- }
- throw new Error('No element indexed by ' + aIdx);
- };
-
- /**
- * Returns the array representation of this set (which has the proper indices
- * indicated by indexOf). Note that this is a copy of the internal array used
- * for storing the members so that no one can mess with internal state.
- */
- ArraySet.prototype.toArray = function ArraySet_toArray() {
- return this._array.slice();
- };
-
- exports.ArraySet = ArraySet;
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/source-map-consumer', ['require', 'exports', 'module', 'source-map/util', 'source-map/binary-search', 'source-map/array-set', 'source-map/base64-vlq'], function (require, exports, module) {
-
- var util = require('./util');
- var binarySearch = require('./binary-search');
- var ArraySet = require('./array-set').ArraySet;
- var base64VLQ = require('./base64-vlq');
-
- /**
- * A SourceMapConsumer instance represents a parsed source map which we can
- * query for information about the original file positions by giving it a file
- * position in the generated source.
- *
- * The only parameter is the raw source map (either as a JSON string, or
- * already parsed to an object). According to the spec, source maps have the
- * following attributes:
- *
- * - version: Which version of the source map spec this map is following.
- * - sources: An array of URLs to the original source files.
- * - names: An array of identifiers which can be referrenced by individual mappings.
- * - sourceRoot: Optional. The URL root from which all sources are relative.
- * - sourcesContent: Optional. An array of contents of the original source files.
- * - mappings: A string of base64 VLQs which contain the actual mappings.
- * - file: The generated file this source map is associated with.
- *
- * Here is an example source map, taken from the source map spec[0]:
- *
- * {
- * version : 3,
- * file: "out.js",
- * sourceRoot : "",
- * sources: ["foo.js", "bar.js"],
- * names: ["src", "maps", "are", "fun"],
- * mappings: "AA,AB;;ABCDE;"
- * }
- *
- * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
- */
- function SourceMapConsumer(aSourceMap) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
- }
-
- var version = util.getArg(sourceMap, 'version');
- var sources = util.getArg(sourceMap, 'sources');
- // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
- // requires the array) to play nice here.
- var names = util.getArg(sourceMap, 'names', []);
- var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
- var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
- var mappings = util.getArg(sourceMap, 'mappings');
- var file = util.getArg(sourceMap, 'file', null);
-
- // Once again, Sass deviates from the spec and supplies the version as a
- // string rather than a number, so we use loose equality checking here.
- if (version != this._version) {
- throw new Error('Unsupported version: ' + version);
- }
-
- // Pass `true` below to allow duplicate names and sources. While source maps
- // are intended to be compressed and deduplicated, the TypeScript compiler
- // sometimes generates source maps with duplicates in them. See Github issue
- // #72 and bugzil.la/889492.
- this._names = ArraySet.fromArray(names, true);
- this._sources = ArraySet.fromArray(sources, true);
-
- this.sourceRoot = sourceRoot;
- this.sourcesContent = sourcesContent;
- this._mappings = mappings;
- this.file = file;
- }
-
- /**
- * Create a SourceMapConsumer from a SourceMapGenerator.
- *
- * @param SourceMapGenerator aSourceMap
- * The source map that will be consumed.
- * @returns SourceMapConsumer
- */
- SourceMapConsumer.fromSourceMap =
- function SourceMapConsumer_fromSourceMap(aSourceMap) {
- var smc = Object.create(SourceMapConsumer.prototype);
-
- smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
- smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
- smc.sourceRoot = aSourceMap._sourceRoot;
- smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
- smc.sourceRoot);
- smc.file = aSourceMap._file;
-
- smc.__generatedMappings = aSourceMap._mappings.slice()
- .sort(util.compareByGeneratedPositions);
- smc.__originalMappings = aSourceMap._mappings.slice()
- .sort(util.compareByOriginalPositions);
-
- return smc;
- };
-
- /**
- * The version of the source mapping spec that we are consuming.
- */
- SourceMapConsumer.prototype._version = 3;
-
- /**
- * The list of original sources.
- */
- Object.defineProperty(SourceMapConsumer.prototype, 'sources', {
- get: function () {
- return this._sources.toArray().map(function (s) {
- return this.sourceRoot ? util.join(this.sourceRoot, s) : s;
- }, this);
- }
- });
-
- // `__generatedMappings` and `__originalMappings` are arrays that hold the
- // parsed mapping coordinates from the source map's "mappings" attribute. They
- // are lazily instantiated, accessed via the `_generatedMappings` and
- // `_originalMappings` getters respectively, and we only parse the mappings
- // and create these arrays once queried for a source location. We jump through
- // these hoops because there can be many thousands of mappings, and parsing
- // them is expensive, so we only want to do it if we must.
- //
- // Each object in the arrays is of the form:
- //
- // {
- // generatedLine: The line number in the generated code,
- // generatedColumn: The column number in the generated code,
- // source: The path to the original source file that generated this
- // chunk of code,
- // originalLine: The line number in the original source that
- // corresponds to this chunk of generated code,
- // originalColumn: The column number in the original source that
- // corresponds to this chunk of generated code,
- // name: The name of the original symbol which generated this chunk of
- // code.
- // }
- //
- // All properties except for `generatedLine` and `generatedColumn` can be
- // `null`.
- //
- // `_generatedMappings` is ordered by the generated positions.
- //
- // `_originalMappings` is ordered by the original positions.
-
- SourceMapConsumer.prototype.__generatedMappings = null;
- Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
- get: function () {
- if (!this.__generatedMappings) {
- this.__generatedMappings = [];
- this.__originalMappings = [];
- this._parseMappings(this._mappings, this.sourceRoot);
- }
-
- return this.__generatedMappings;
- }
- });
-
- SourceMapConsumer.prototype.__originalMappings = null;
- Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
- get: function () {
- if (!this.__originalMappings) {
- this.__generatedMappings = [];
- this.__originalMappings = [];
- this._parseMappings(this._mappings, this.sourceRoot);
- }
-
- return this.__originalMappings;
- }
- });
-
- /**
- * Parse the mappings in a string in to a data structure which we can easily
- * query (the ordered arrays in the `this.__generatedMappings` and
- * `this.__originalMappings` properties).
- */
- SourceMapConsumer.prototype._parseMappings =
- function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
- var generatedLine = 1;
- var previousGeneratedColumn = 0;
- var previousOriginalLine = 0;
- var previousOriginalColumn = 0;
- var previousSource = 0;
- var previousName = 0;
- var mappingSeparator = /^[,;]/;
- var str = aStr;
- var mapping;
- var temp;
-
- while (str.length > 0) {
- if (str.charAt(0) === ';') {
- generatedLine++;
- str = str.slice(1);
- previousGeneratedColumn = 0;
- }
- else if (str.charAt(0) === ',') {
- str = str.slice(1);
- }
- else {
- mapping = {};
- mapping.generatedLine = generatedLine;
-
- // Generated column.
- temp = base64VLQ.decode(str);
- mapping.generatedColumn = previousGeneratedColumn + temp.value;
- previousGeneratedColumn = mapping.generatedColumn;
- str = temp.rest;
-
- if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {
- // Original source.
- temp = base64VLQ.decode(str);
- mapping.source = this._sources.at(previousSource + temp.value);
- previousSource += temp.value;
- str = temp.rest;
- if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {
- throw new Error('Found a source, but no line and column');
- }
-
- // Original line.
- temp = base64VLQ.decode(str);
- mapping.originalLine = previousOriginalLine + temp.value;
- previousOriginalLine = mapping.originalLine;
- // Lines are stored 0-based
- mapping.originalLine += 1;
- str = temp.rest;
- if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {
- throw new Error('Found a source and line, but no column');
- }
-
- // Original column.
- temp = base64VLQ.decode(str);
- mapping.originalColumn = previousOriginalColumn + temp.value;
- previousOriginalColumn = mapping.originalColumn;
- str = temp.rest;
-
- if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {
- // Original name.
- temp = base64VLQ.decode(str);
- mapping.name = this._names.at(previousName + temp.value);
- previousName += temp.value;
- str = temp.rest;
- }
- }
-
- this.__generatedMappings.push(mapping);
- if (typeof mapping.originalLine === 'number') {
- this.__originalMappings.push(mapping);
- }
- }
- }
-
- this.__originalMappings.sort(util.compareByOriginalPositions);
- };
-
- /**
- * Find the mapping that best matches the hypothetical "needle" mapping that
- * we are searching for in the given "haystack" of mappings.
- */
- SourceMapConsumer.prototype._findMapping =
- function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
- aColumnName, aComparator) {
- // To return the position we are searching for, we must first find the
- // mapping for the given position and then return the opposite position it
- // points to. Because the mappings are sorted, we can use binary search to
- // find the best mapping.
-
- if (aNeedle[aLineName] <= 0) {
- throw new TypeError('Line must be greater than or equal to 1, got '
- + aNeedle[aLineName]);
- }
- if (aNeedle[aColumnName] < 0) {
- throw new TypeError('Column must be greater than or equal to 0, got '
- + aNeedle[aColumnName]);
- }
-
- return binarySearch.search(aNeedle, aMappings, aComparator);
- };
-
- /**
- * Returns the original source, line, and column information for the generated
- * source's line and column positions provided. The only argument is an object
- * with the following properties:
- *
- * - line: The line number in the generated source.
- * - column: The column number in the generated source.
- *
- * and an object is returned with the following properties:
- *
- * - source: The original source file, or null.
- * - line: The line number in the original source, or null.
- * - column: The column number in the original source, or null.
- * - name: The original identifier, or null.
- */
- SourceMapConsumer.prototype.originalPositionFor =
- function SourceMapConsumer_originalPositionFor(aArgs) {
- var needle = {
- generatedLine: util.getArg(aArgs, 'line'),
- generatedColumn: util.getArg(aArgs, 'column')
- };
-
- var mapping = this._findMapping(needle,
- this._generatedMappings,
- "generatedLine",
- "generatedColumn",
- util.compareByGeneratedPositions);
-
- if (mapping) {
- var source = util.getArg(mapping, 'source', null);
- if (source && this.sourceRoot) {
- source = util.join(this.sourceRoot, source);
- }
- return {
- source: source,
- line: util.getArg(mapping, 'originalLine', null),
- column: util.getArg(mapping, 'originalColumn', null),
- name: util.getArg(mapping, 'name', null)
- };
- }
-
- return {
- source: null,
- line: null,
- column: null,
- name: null
- };
- };
-
- /**
- * Returns the original source content. The only argument is the url of the
- * original source file. Returns null if no original source content is
- * availible.
- */
- SourceMapConsumer.prototype.sourceContentFor =
- function SourceMapConsumer_sourceContentFor(aSource) {
- if (!this.sourcesContent) {
- return null;
- }
-
- if (this.sourceRoot) {
- aSource = util.relative(this.sourceRoot, aSource);
- }
-
- if (this._sources.has(aSource)) {
- return this.sourcesContent[this._sources.indexOf(aSource)];
- }
-
- var url;
- if (this.sourceRoot
- && (url = util.urlParse(this.sourceRoot))) {
- // XXX: file:// URIs and absolute paths lead to unexpected behavior for
- // many users. We can help them out when they expect file:// URIs to
- // behave like it would if they were running a local HTTP server. See
- // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
- var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
- if (url.scheme == "file"
- && this._sources.has(fileUriAbsPath)) {
- return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
- }
-
- if ((!url.path || url.path == "/")
- && this._sources.has("/" + aSource)) {
- return this.sourcesContent[this._sources.indexOf("/" + aSource)];
- }
- }
-
- throw new Error('"' + aSource + '" is not in the SourceMap.');
- };
-
- /**
- * Returns the generated line and column information for the original source,
- * line, and column positions provided. The only argument is an object with
- * the following properties:
- *
- * - source: The filename of the original source.
- * - line: The line number in the original source.
- * - column: The column number in the original source.
- *
- * and an object is returned with the following properties:
- *
- * - line: The line number in the generated source, or null.
- * - column: The column number in the generated source, or null.
- */
- SourceMapConsumer.prototype.generatedPositionFor =
- function SourceMapConsumer_generatedPositionFor(aArgs) {
- var needle = {
- source: util.getArg(aArgs, 'source'),
- originalLine: util.getArg(aArgs, 'line'),
- originalColumn: util.getArg(aArgs, 'column')
- };
-
- if (this.sourceRoot) {
- needle.source = util.relative(this.sourceRoot, needle.source);
- }
-
- var mapping = this._findMapping(needle,
- this._originalMappings,
- "originalLine",
- "originalColumn",
- util.compareByOriginalPositions);
-
- if (mapping) {
- return {
- line: util.getArg(mapping, 'generatedLine', null),
- column: util.getArg(mapping, 'generatedColumn', null)
- };
- }
-
- return {
- line: null,
- column: null
- };
- };
-
- SourceMapConsumer.GENERATED_ORDER = 1;
- SourceMapConsumer.ORIGINAL_ORDER = 2;
-
- /**
- * Iterate over each mapping between an original source/line/column and a
- * generated line/column in this source map.
- *
- * @param Function aCallback
- * The function that is called with each mapping.
- * @param Object aContext
- * Optional. If specified, this object will be the value of `this` every
- * time that `aCallback` is called.
- * @param aOrder
- * Either `SourceMapConsumer.GENERATED_ORDER` or
- * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
- * iterate over the mappings sorted by the generated file's line/column
- * order or the original's source/line/column order, respectively. Defaults to
- * `SourceMapConsumer.GENERATED_ORDER`.
- */
- SourceMapConsumer.prototype.eachMapping =
- function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
- var context = aContext || null;
- var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
-
- var mappings;
- switch (order) {
- case SourceMapConsumer.GENERATED_ORDER:
- mappings = this._generatedMappings;
- break;
- case SourceMapConsumer.ORIGINAL_ORDER:
- mappings = this._originalMappings;
- break;
- default:
- throw new Error("Unknown order of iteration.");
- }
-
- var sourceRoot = this.sourceRoot;
- mappings.map(function (mapping) {
- var source = mapping.source;
- if (source && sourceRoot) {
- source = util.join(sourceRoot, source);
- }
- return {
- source: source,
- generatedLine: mapping.generatedLine,
- generatedColumn: mapping.generatedColumn,
- originalLine: mapping.originalLine,
- originalColumn: mapping.originalColumn,
- name: mapping.name
- };
- }).forEach(aCallback, context);
- };
-
- exports.SourceMapConsumer = SourceMapConsumer;
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/binary-search', ['require', 'exports', 'module',], function (require, exports, module) {
-
- /**
- * Recursive implementation of binary search.
- *
- * @param aLow Indices here and lower do not contain the needle.
- * @param aHigh Indices here and higher do not contain the needle.
- * @param aNeedle The element being searched for.
- * @param aHaystack The non-empty array being searched.
- * @param aCompare Function which takes two elements and returns -1, 0, or 1.
- */
- function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
- // This function terminates when one of the following is true:
- //
- // 1. We find the exact element we are looking for.
- //
- // 2. We did not find the exact element, but we can return the next
- // closest element that is less than that element.
- //
- // 3. We did not find the exact element, and there is no next-closest
- // element which is less than the one we are searching for, so we
- // return null.
- var mid = Math.floor((aHigh - aLow) / 2) + aLow;
- var cmp = aCompare(aNeedle, aHaystack[mid], true);
- if (cmp === 0) {
- // Found the element we are looking for.
- return aHaystack[mid];
- }
- else if (cmp > 0) {
- // aHaystack[mid] is greater than our needle.
- if (aHigh - mid > 1) {
- // The element is in the upper half.
- return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);
- }
- // We did not find an exact match, return the next closest one
- // (termination case 2).
- return aHaystack[mid];
- }
- else {
- // aHaystack[mid] is less than our needle.
- if (mid - aLow > 1) {
- // The element is in the lower half.
- return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);
- }
- // The exact needle element was not found in this haystack. Determine if
- // we are in termination case (2) or (3) and return the appropriate thing.
- return aLow < 0
- ? null
- : aHaystack[aLow];
- }
- }
-
- /**
- * This is an implementation of binary search which will always try and return
- * the next lowest value checked if there is no exact hit. This is because
- * mappings between original and generated line/col pairs are single points,
- * and there is an implicit region between each of them, so a miss just means
- * that you aren't on the very start of a region.
- *
- * @param aNeedle The element you are looking for.
- * @param aHaystack The array that is being searched.
- * @param aCompare A function which takes the needle and an element in the
- * array and returns -1, 0, or 1 depending on whether the needle is less
- * than, equal to, or greater than the element, respectively.
- */
- exports.search = function search(aNeedle, aHaystack, aCompare) {
- return aHaystack.length > 0
- ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)
- : null;
- };
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
- /*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
- define('source-map/source-node', ['require', 'exports', 'module', 'source-map/source-map-generator', 'source-map/util'], function (require, exports, module) {
-
- var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
- var util = require('./util');
-
- /**
- * SourceNodes provide a way to abstract over interpolating/concatenating
- * snippets of generated JavaScript source code while maintaining the line and
- * column information associated with the original source code.
- *
- * @param aLine The original line number.
- * @param aColumn The original column number.
- * @param aSource The original source's filename.
- * @param aChunks Optional. An array of strings which are snippets of
- * generated JS, or other SourceNodes.
- * @param aName The original identifier.
- */
- function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
- this.children = [];
- this.sourceContents = {};
- this.line = aLine === undefined ? null : aLine;
- this.column = aColumn === undefined ? null : aColumn;
- this.source = aSource === undefined ? null : aSource;
- this.name = aName === undefined ? null : aName;
- if (aChunks != null) this.add(aChunks);
- }
-
- /**
- * Creates a SourceNode from generated code and a SourceMapConsumer.
- *
- * @param aGeneratedCode The generated code
- * @param aSourceMapConsumer The SourceMap for the generated code
- */
- SourceNode.fromStringWithSourceMap =
- function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) {
- // The SourceNode we want to fill with the generated code
- // and the SourceMap
- var node = new SourceNode();
-
- // The generated code
- // Processed fragments are removed from this array.
- var remainingLines = aGeneratedCode.split('\n');
-
- // We need to remember the position of "remainingLines"
- var lastGeneratedLine = 1, lastGeneratedColumn = 0;
-
- // The generate SourceNodes we need a code range.
- // To extract it current and last mapping is used.
- // Here we store the last mapping.
- var lastMapping = null;
-
- aSourceMapConsumer.eachMapping(function (mapping) {
- if (lastMapping === null) {
- // We add the generated code until the first mapping
- // to the SourceNode without any mapping.
- // Each line is added as separate string.
- while (lastGeneratedLine < mapping.generatedLine) {
- node.add(remainingLines.shift() + "\n");
- lastGeneratedLine++;
- }
- if (lastGeneratedColumn < mapping.generatedColumn) {
- var nextLine = remainingLines[0];
- node.add(nextLine.substr(0, mapping.generatedColumn));
- remainingLines[0] = nextLine.substr(mapping.generatedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- }
- } else {
- // We add the code from "lastMapping" to "mapping":
- // First check if there is a new line in between.
- if (lastGeneratedLine < mapping.generatedLine) {
- var code = "";
- // Associate full lines with "lastMapping"
- do {
- code += remainingLines.shift() + "\n";
- lastGeneratedLine++;
- lastGeneratedColumn = 0;
- } while (lastGeneratedLine < mapping.generatedLine);
- // When we reached the correct line, we add code until we
- // reach the correct column too.
- if (lastGeneratedColumn < mapping.generatedColumn) {
- var nextLine = remainingLines[0];
- code += nextLine.substr(0, mapping.generatedColumn);
- remainingLines[0] = nextLine.substr(mapping.generatedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- }
- // Create the SourceNode.
- addMappingWithCode(lastMapping, code);
- } else {
- // There is no new line in between.
- // Associate the code between "lastGeneratedColumn" and
- // "mapping.generatedColumn" with "lastMapping"
- var nextLine = remainingLines[0];
- var code = nextLine.substr(0, mapping.generatedColumn -
- lastGeneratedColumn);
- remainingLines[0] = nextLine.substr(mapping.generatedColumn -
- lastGeneratedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- addMappingWithCode(lastMapping, code);
- }
- }
- lastMapping = mapping;
- }, this);
- // We have processed all mappings.
- // Associate the remaining code in the current line with "lastMapping"
- // and add the remaining lines without any mapping
- addMappingWithCode(lastMapping, remainingLines.join("\n"));
-
- // Copy sourcesContent into SourceNode
- aSourceMapConsumer.sources.forEach(function (sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- node.setSourceContent(sourceFile, content);
- }
- });
-
- return node;
-
- function addMappingWithCode(mapping, code) {
- if (mapping === null || mapping.source === undefined) {
- node.add(code);
- } else {
- node.add(new SourceNode(mapping.originalLine,
- mapping.originalColumn,
- mapping.source,
- code,
- mapping.name));
- }
- }
- };
-
- /**
- * Add a chunk of generated JS to this source node.
- *
- * @param aChunk A string snippet of generated JS code, another instance of
- * SourceNode, or an array where each member is one of those things.
- */
- SourceNode.prototype.add = function SourceNode_add(aChunk) {
- if (Array.isArray(aChunk)) {
- aChunk.forEach(function (chunk) {
- this.add(chunk);
- }, this);
- }
- else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
- if (aChunk) {
- this.children.push(aChunk);
- }
- }
- else {
- throw new TypeError(
- "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
- );
- }
- return this;
- };
-
- /**
- * Add a chunk of generated JS to the beginning of this source node.
- *
- * @param aChunk A string snippet of generated JS code, another instance of
- * SourceNode, or an array where each member is one of those things.
- */
- SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
- if (Array.isArray(aChunk)) {
- for (var i = aChunk.length - 1; i >= 0; i--) {
- this.prepend(aChunk[i]);
- }
- }
- else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
- this.children.unshift(aChunk);
- }
- else {
- throw new TypeError(
- "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
- );
- }
- return this;
- };
-
- /**
- * Walk over the tree of JS snippets in this node and its children. The
- * walking function is called once for each snippet of JS and is passed that
- * snippet and the its original associated source's line/column location.
- *
- * @param aFn The traversal function.
- */
- SourceNode.prototype.walk = function SourceNode_walk(aFn) {
- var chunk;
- for (var i = 0, len = this.children.length; i < len; i++) {
- chunk = this.children[i];
- if (chunk instanceof SourceNode) {
- chunk.walk(aFn);
- }
- else {
- if (chunk !== '') {
- aFn(chunk, {
- source: this.source,
- line: this.line,
- column: this.column,
- name: this.name
- });
- }
- }
- }
- };
-
- /**
- * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
- * each of `this.children`.
- *
- * @param aSep The separator.
- */
- SourceNode.prototype.join = function SourceNode_join(aSep) {
- var newChildren;
- var i;
- var len = this.children.length;
- if (len > 0) {
- newChildren = [];
- for (i = 0; i < len - 1; i++) {
- newChildren.push(this.children[i]);
- newChildren.push(aSep);
- }
- newChildren.push(this.children[i]);
- this.children = newChildren;
- }
- return this;
- };
-
- /**
- * Call String.prototype.replace on the very right-most source snippet. Useful
- * for trimming whitespace from the end of a source node, etc.
- *
- * @param aPattern The pattern to replace.
- * @param aReplacement The thing to replace the pattern with.
- */
- SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
- var lastChild = this.children[this.children.length - 1];
- if (lastChild instanceof SourceNode) {
- lastChild.replaceRight(aPattern, aReplacement);
- }
- else if (typeof lastChild === 'string') {
- this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
- }
- else {
- this.children.push(''.replace(aPattern, aReplacement));
- }
- return this;
- };
-
- /**
- * Set the source content for a source file. This will be added to the SourceMapGenerator
- * in the sourcesContent field.
- *
- * @param aSourceFile The filename of the source file
- * @param aSourceContent The content of the source file
- */
- SourceNode.prototype.setSourceContent =
- function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
- this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
- };
-
- /**
- * Walk over the tree of SourceNodes. The walking function is called for each
- * source file content and is passed the filename and source content.
- *
- * @param aFn The traversal function.
- */
- SourceNode.prototype.walkSourceContents =
- function SourceNode_walkSourceContents(aFn) {
- for (var i = 0, len = this.children.length; i < len; i++) {
- if (this.children[i] instanceof SourceNode) {
- this.children[i].walkSourceContents(aFn);
- }
- }
-
- var sources = Object.keys(this.sourceContents);
- for (var i = 0, len = sources.length; i < len; i++) {
- aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
- }
- };
-
- /**
- * Return the string representation of this source node. Walks over the tree
- * and concatenates all the various snippets together to one string.
- */
- SourceNode.prototype.toString = function SourceNode_toString() {
- var str = "";
- this.walk(function (chunk) {
- str += chunk;
- });
- return str;
- };
-
- /**
- * Returns the string representation of this source node along with a source
- * map.
- */
- SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
- var generated = {
- code: "",
- line: 1,
- column: 0
- };
- var map = new SourceMapGenerator(aArgs);
- var sourceMappingActive = false;
- var lastOriginalSource = null;
- var lastOriginalLine = null;
- var lastOriginalColumn = null;
- var lastOriginalName = null;
- this.walk(function (chunk, original) {
- generated.code += chunk;
- if (original.source !== null
- && original.line !== null
- && original.column !== null) {
- if (lastOriginalSource !== original.source
- || lastOriginalLine !== original.line
- || lastOriginalColumn !== original.column
- || lastOriginalName !== original.name) {
- map.addMapping({
- source: original.source,
- original: {
- line: original.line,
- column: original.column
- },
- generated: {
- line: generated.line,
- column: generated.column
- },
- name: original.name
- });
- }
- lastOriginalSource = original.source;
- lastOriginalLine = original.line;
- lastOriginalColumn = original.column;
- lastOriginalName = original.name;
- sourceMappingActive = true;
- } else if (sourceMappingActive) {
- map.addMapping({
- generated: {
- line: generated.line,
- column: generated.column
- }
- });
- lastOriginalSource = null;
- sourceMappingActive = false;
- }
- chunk.split('').forEach(function (ch) {
- if (ch === '\n') {
- generated.line++;
- generated.column = 0;
- } else {
- generated.column++;
- }
- });
- });
- this.walkSourceContents(function (sourceFile, sourceContent) {
- map.setSourceContent(sourceFile, sourceContent);
- });
-
- return {code: generated.code, map: map};
- };
-
- exports.SourceNode = SourceNode;
-
- });
- /* -*- Mode: js; js-indent-level: 2; -*- */
-///////////////////////////////////////////////////////////////////////////////
-
- this.sourceMap = {
- SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer,
- SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator,
- SourceNode: require('source-map/source-node').SourceNode
- };
-
-// footer to wrap "source-map" module
- return this.sourceMap;
- }();
-})();
-
-
-/* Less.js v1.7.5 RHINO | Copyright (c) 2009-2014, Alexis Sellier */
-
-/*global name:true, less, loadStyleSheet, os */
-
-function formatError(ctx, options) {
- options = options || {};
-
- var message = "";
- var extract = ctx.extract;
- var error = [];
-
-// var stylize = options.color ? require('./lessc_helper').stylize : function (str) { return str; };
- var stylize = function (str) {
- return str;
- };
-
- // only output a stack if it isn't a less error
- if (ctx.stack && !ctx.type) {
- return stylize(ctx.stack, 'red');
- }
-
- if (!ctx.hasOwnProperty('index') || !extract) {
- return ctx.stack || ctx.message;
- }
-
- if (typeof(extract[0]) === 'string') {
- error.push(stylize((ctx.line - 1) + ' ' + extract[0], 'grey'));
- }
-
- if (typeof(extract[1]) === 'string') {
- var errorTxt = ctx.line + ' ';
- if (extract[1]) {
- errorTxt += extract[1].slice(0, ctx.column) +
- stylize(stylize(stylize(extract[1][ctx.column], 'bold') +
- extract[1].slice(ctx.column + 1), 'red'), 'inverse');
- }
- error.push(errorTxt);
- }
-
- if (typeof(extract[2]) === 'string') {
- error.push(stylize((ctx.line + 1) + ' ' + extract[2], 'grey'));
- }
- error = error.join('\n') + stylize('', 'reset') + '\n';
-
- message += stylize(ctx.type + 'Error: ' + ctx.message, 'red');
- if (ctx.filename) {
- message += stylize(' in ', 'red') + ctx.filename +
- stylize(' on line ' + ctx.line + ', column ' + (ctx.column + 1) + ':', 'grey');
- }
-
- message += '\n' + error;
-
- if (ctx.callLine) {
- message += stylize('from ', 'red') + (ctx.filename || '') + '/n';
- message += stylize(ctx.callLine, 'grey') + ' ' + ctx.callExtract + '/n';
- }
-
- return message;
-}
-
-function writeError(ctx, options) {
- options = options || {};
- if (options.silent) {
- return;
- }
- var message = formatError(ctx, options);
- throw new Error(message);
-}
-
-function loadStyleSheet(sheet, callback, reload, remaining) {
- var endOfPath = Math.max(name.lastIndexOf('/'), name.lastIndexOf('\\')),
- sheetName = name.slice(0, endOfPath + 1) + sheet.href,
- contents = sheet.contents || {},
- input = readFile(sheetName);
-
- input = input.replace(/^\xEF\xBB\xBF/, '');
-
- contents[sheetName] = input;
-
- var parser = new less.Parser({
- paths: [sheet.href.replace(/[\w\.-]+$/, '')],
- contents: contents
- });
- parser.parse(input, function (e, root) {
- if (e) {
- return writeError(e);
- }
- //try {
- callback(e, root, input, sheet, {local: false, lastModified: 0, remaining: remaining}, sheetName);
- //} catch (e) {
- //writeError(e);
- //log.error(e);
- //}
- });
-}
-
-less.Parser.fileLoader = function (file, currentFileInfo, callback, env) {
-
- var href = file;
- if (currentFileInfo && currentFileInfo.currentDirectory && !/^\//.test(file)) {
- href = less.modules.path.join(currentFileInfo.currentDirectory, file);
- }
-
- var path = less.modules.path.dirname(href);
-
- var newFileInfo = {
- currentDirectory: path + '/',
- filename: href
- };
-
- if (currentFileInfo) {
- newFileInfo.entryPath = currentFileInfo.entryPath;
- newFileInfo.rootpath = currentFileInfo.rootpath;
- newFileInfo.rootFilename = currentFileInfo.rootFilename;
- newFileInfo.relativeUrls = currentFileInfo.relativeUrls;
- } else {
- newFileInfo.entryPath = path;
- newFileInfo.rootpath = less.rootpath || path;
- newFileInfo.rootFilename = href;
- newFileInfo.relativeUrls = env.relativeUrls;
- }
-
- var j = file.lastIndexOf('/');
- if (newFileInfo.relativeUrls && !/^(?:[a-z-]+:|\/)/.test(file) && j != -1) {
- var relativeSubDirectory = file.slice(0, j + 1);
- newFileInfo.rootpath = newFileInfo.rootpath + relativeSubDirectory; // append (sub|sup) directory path of imported file
- }
- newFileInfo.currentDirectory = path;
- newFileInfo.filename = href;
-
- var data = null;
- try {
- data = readFile(href);
- } catch (e) {
- log.error(e);
- callback({type: 'File', message: "'" + less.modules.path.basename(href) + "' wasn't found"});
- return;
- }
-
- try {
- callback(null, data, href, newFileInfo, {lastModified: 0});
- } catch (e) {
- callback(e, null, href);
- }
-};
-
-
-function writeFile(filename, content) {
- var f = new File(filename);
- f.open('w');
- f.write(content);
- f.close();
-}
-
-// Command line integration via Rhino
-var compile = function (args) {
-
- var options = {
- depends: false,
- compress: false,
- cleancss: false,
- max_line_len: -1,
- optimization: 1,
- silent: false,
- verbose: false,
- lint: false,
- paths: [],
- color: true,
- strictImports: false,
- rootpath: '',
- relativeUrls: false,
- ieCompat: true,
- strictMath: false,
- strictUnits: false
- };
- var continueProcessing = true,
- currentErrorcode;
-
- var checkArgFunc = function (arg, option) {
- if (!option) {
- print(arg + " option requires a parameter");
- continueProcessing = false;
- return false;
- }
- return true;
- };
-
- var checkBooleanArg = function (arg) {
- var onOff = /^((on|t|true|y|yes)|(off|f|false|n|no))$/i.exec(arg);
- if (!onOff) {
- print(" unable to parse " + arg + " as a boolean. use one of on/t/true/y/yes/off/f/false/n/no");
- continueProcessing = false;
- return false;
- }
- return Boolean(onOff[2]);
- };
-
- var warningMessages = "";
- var sourceMapFileInline = false;
-
- args = args.filter(function (arg) {
- var match = arg.match(/^-I(.+)$/);
-
- if (match) {
- options.paths.push(match[1]);
- return false;
- }
-
- match = arg.match(/^--?([a-z][0-9a-z-]*)(?:=(.*))?$/i);
- if (match) {
- arg = match[1];
- } // was (?:=([^\s]*)), check!
- else {
- return arg;
- }
-
- switch (arg) {
- case 'v':
- case 'version':
- console.log("lessc " + less.version.join('.') + " (Less Compiler) [JavaScript]");
- continueProcessing = false;
- break;
- case 'verbose':
- options.verbose = true;
- break;
- case 's':
- case 'silent':
- options.silent = true;
- break;
- case 'l':
- case 'lint':
- options.lint = true;
- break;
- case 'strict-imports':
- options.strictImports = true;
- break;
- case 'h':
- case 'help':
- //TODO
-// require('../lib/less/lessc_helper').printUsage();
- continueProcessing = false;
- break;
- case 'x':
- case 'compress':
- options.compress = true;
- break;
- case 'M':
- case 'depends':
- options.depends = true;
- break;
- case 'yui-compress':
- warningMessages += "yui-compress option has been removed. assuming clean-css.";
- options.cleancss = true;
- break;
- case 'clean-css':
- options.cleancss = true;
- break;
- case 'max-line-len':
- if (checkArgFunc(arg, match[2])) {
- options.maxLineLen = parseInt(match[2], 10);
- if (options.maxLineLen <= 0) {
- options.maxLineLen = -1;
- }
- }
- break;
- case 'no-color':
- options.color = false;
- break;
- case 'no-ie-compat':
- options.ieCompat = false;
- break;
- case 'no-js':
- options.javascriptEnabled = false;
- break;
- case 'include-path':
- if (checkArgFunc(arg, match[2])) {
- options.paths = match[2].split(os.type().match(/Windows/) ? ';' : ':')
- .map(function (p) {
- if (p) {
-// return path.resolve(process.cwd(), p);
- return p;
- }
- });
- }
- break;
- case 'O0':
- options.optimization = 0;
- break;
- case 'O1':
- options.optimization = 1;
- break;
- case 'O2':
- options.optimization = 2;
- break;
- case 'line-numbers':
- if (checkArgFunc(arg, match[2])) {
- options.dumpLineNumbers = match[2];
- }
- break;
- case 'source-map':
- if (!match[2]) {
- options.sourceMap = true;
- } else {
- options.sourceMap = match[2];
- }
- break;
- case 'source-map-rootpath':
- if (checkArgFunc(arg, match[2])) {
- options.sourceMapRootpath = match[2];
- }
- break;
- case 'source-map-basepath':
- if (checkArgFunc(arg, match[2])) {
- options.sourceMapBasepath = match[2];
- }
- break;
- case 'source-map-map-inline':
- sourceMapFileInline = true;
- options.sourceMap = true;
- break;
- case 'source-map-less-inline':
- options.outputSourceFiles = true;
- break;
- case 'source-map-url':
- if (checkArgFunc(arg, match[2])) {
- options.sourceMapURL = match[2];
- }
- break;
- case 'source-map-output-map-file':
- if (checkArgFunc(arg, match[2])) {
- options.writeSourceMap = function (sourceMapContent) {
- writeFile(match[2], sourceMapContent);
- };
- }
- break;
- case 'rp':
- case 'rootpath':
- if (checkArgFunc(arg, match[2])) {
- options.rootpath = match[2].replace(/\\/g, '/');
- }
- break;
- case "ru":
- case "relative-urls":
- options.relativeUrls = true;
- break;
- case "sm":
- case "strict-math":
- if (checkArgFunc(arg, match[2])) {
- options.strictMath = checkBooleanArg(match[2]);
- }
- break;
- case "su":
- case "strict-units":
- if (checkArgFunc(arg, match[2])) {
- options.strictUnits = checkBooleanArg(match[2]);
- }
- break;
- default:
- console.log('invalid option ' + arg);
- continueProcessing = false;
- }
- });
-
- if (!continueProcessing) {
- return;
- }
-
- var name = args[0];
- if (name && name != '-') {
-// name = path.resolve(process.cwd(), name);
- }
- var output = args[1];
- var outputbase = args[1];
- if (output) {
- options.sourceMapOutputFilename = output;
-// output = path.resolve(process.cwd(), output);
- if (warningMessages) {
- console.log(warningMessages);
- }
- }
-
-// options.sourceMapBasepath = process.cwd();
-// options.sourceMapBasepath = '';
-
- if (options.sourceMap === true) {
- console.log("output: " + output);
- if (!output && !sourceMapFileInline) {
- console.log("the sourcemap option only has an optional filename if the css filename is given");
- return;
- }
- options.sourceMapFullFilename = options.sourceMapOutputFilename + ".map";
- options.sourceMap = less.modules.path.basename(options.sourceMapFullFilename);
- } else if (options.sourceMap) {
- options.sourceMapOutputFilename = options.sourceMap;
- }
-
-
- if (!name) {
- console.log("lessc: no inout files");
- console.log("");
- // TODO
-// require('../lib/less/lessc_helper').printUsage();
- currentErrorcode = 1;
- return;
- }
-
-// var ensureDirectory = function (filepath) {
-// var dir = path.dirname(filepath),
-// cmd,
-// existsSync = fs.existsSync || path.existsSync;
-// if (!existsSync(dir)) {
-// if (mkdirp === undefined) {
-// try {mkdirp = require('mkdirp');}
-// catch(e) { mkdirp = null; }
-// }
-// cmd = mkdirp && mkdirp.sync || fs.mkdirSync;
-// cmd(dir);
-// }
-// };
-
- if (options.depends) {
- if (!outputbase) {
- console.log("option --depends requires an output path to be specified");
- return;
- }
- console.log(outputbase + ": ");
- }
-
- if (!name) {
- console.log('No files present in the fileset');
- quit(1);
- }
-
- var input = null;
- try {
- input = readFile(name, 'utf-8');
- } catch (e) {
- log.error(e);
- quit(1);
- }
-
- options.filename = name;
- var result;
- var parser = new less.Parser(options);
- parser.parse(input, function (e, root) {
- if (e) {
- log.info(e);
- writeError(e, options);
- quit(1);
- } else {
- result = root.toCSS(options);
- if (output) {
- writeFile(output, result);
- console.log("Written to " + output);
- } else {
- print(result);
- }
- quit(0);
- }
- }, {
- globalVars: {'self-class': fuseState.currentUnit + '-unit'}
- });
-};
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/login.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/login.jag
deleted file mode 100644
index 7b93c3c7..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/login.jag
+++ /dev/null
@@ -1,36 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-(function(){
- var constants = require('/modules/constants.js');
- if (!session.get(constants.USER_SESSION_KEY)) {
- var dataConfig = require('/config/dc-props.js').config();
- var sso = require('/modules/sso.js').sso;
- var keyStoreParams = {
- keyStoreName : dataConfig.ssoConfiguration.keyStoreName,
- keyStorePassword : dataConfig.ssoConfiguration.keyStorePassword,
- identityAlias : dataConfig.ssoConfiguration.identityAlias
- }
- sso.configure(dataConfig.ssoConfiguration.issuer, dataConfig.ssoConfiguration.appName, keyStoreParams,
- dataConfig.ssoConfiguration.identityProviderURL);
- sso.login();
- }else{
- response.sendRedirect(dataConfig.appContext);
- }
-}());
-%>
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/logout.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/lib/logout.jag
deleted file mode 100644
index 4ae365d9..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/lib/logout.jag
+++ /dev/null
@@ -1,37 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-var constants = require('/modules/constants.js');
-var user = session.get(constants.USER_SESSION_KEY);
-var dataConfig = require('/config/dc-props.js').config();
-var log = new Log();
-if (user === null) {
- log.debug("Cannot perform logout. No user session found.");
- response.sendRedirect(dataConfig.appContext+'dashboard');
-} else {
- var sso = require('/modules/sso.js').sso;
- var keyStoreParams = {
- keyStoreName: dataConfig.ssoConfiguration.keyStoreName,
- keyStorePassword: dataConfig.ssoConfiguration.keyStorePassword,
- identityAlias: dataConfig.ssoConfiguration.identityAlias
- }
- sso.configure(dataConfig.ssoConfiguration.issuer, dataConfig.ssoConfiguration.appName, keyStoreParams,
- dataConfig.ssoConfiguration.identityProviderURL);
- sso.logout(user);
-}
-%>
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/constants.js b/modules/distribution/src/repository/jaggeryapps/sensebot/modules/constants.js
deleted file mode 100644
index 182d319e..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/constants.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var WEB_APP_TITLE = "WSO2 DC - Device Cloud";
-var WEB_APP_CONTEXT = "/iot";
-var USER_SESSION_KEY = "USER";
-var UNSPECIFIED = "Unspecified";
-
-var ERRORS = {
- "USER_NOT_FOUND": "USER_NOT_FOUND"
- };
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/download.js b/modules/distribution/src/repository/jaggeryapps/sensebot/modules/download.js
deleted file mode 100644
index 5394c8bf..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/download.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var downloadModule;
-var Handlebars = require('../lib/handlebars-v2.0.0.js').Handlebars;
-downloadModule = function () {
- var log = new Log("modules/download.js");
-
- var constants = require("/modules/constants.js");
-
- var publicMethods = {};
- var privateMethods = {};
-
- /**
- * Downloading a specified sketch file.
- *
- * @param file File name or file object of the downloading file
- * @param replaceParams
- */
- publicMethods.downloadSketch = function (file, response, replaceParams) {
- var file = new File("../sketch/" + file);
-
- file.open('r');
- log.debug("Reading file '" + file.getPath() + "'");
- var content = file.readAll().trim();
- file.close();
-
- var downloadFile = privateMethods.allReplace(content,replaceParams);
-
- response.contentType = "application/octet-stream";
- response.addHeader("Content-Disposition", "attachment; filename='sketch.hbs'");
- response.addHeader("Content-Length", String(downloadFile.length));
- response.content = downloadFile;
- };
-
- /**
- * Find and replace all occurrences.
- * @param inStr input string
- * @param replaceParams key value array
- * @returns retStr replaced string
- */
- privateMethods.allReplace = function (inStr, replaceParams) {
- var retStr = inStr;
- for (var x in replaceParams) {
- retStr = retStr.replace(new RegExp(x, 'g'), replaceParams[x])
- }
- return retStr;
- };
-
- return publicMethods;
-}();
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/pinch.min.js b/modules/distribution/src/repository/jaggeryapps/sensebot/modules/pinch.min.js
deleted file mode 100644
index feccd2da..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/pinch.min.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2011 František Hába
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy of
-* this software and associated documentation files (the 'Software'), to deal in
-* the Software without restriction, including without limitation the rights to use,
-* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
-* Software, and to permit persons to whom the Software is furnished to do so,
-* subject to the following conditions:
-* The above copyright notice and this permission notice shall be included in all
-* copies or substantial portions of the Software.
-
-* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Reference:- https://github.com/Baggz/Pinch
-* Pinch is a small JavaScript utility which is able to replace any data in a JavaScript object (or JSON).
-* */
-(function(){var k=function(a,c){return a.length!==c.length?!1:a.every(function(a,b){return c[b]===a})},j=function(a,c,d){var b,e;if("[object Array]"===Object.prototype.toString.call(a)){b=0;for(e=a.length;bYou are now being redirected to SSO Provider. If the redirection fails, please click on the "+
- "button below.
" +
- "");
- };
-
- sso.logout = function (user) {
- var sso_sessions = getSSOSessions();
- sso.sessionId = session.getId();
- sso.sessionIndex = sso_sessions[sso.sessionId];
-
- var referer = request.getHeader("referer");
- sso.relayState = (referer ? referer : sso.relayState);
- sso.relayState = sso.relayState + request.getQueryString(); // append query string
- sso.encodedSAMLLogoutRequest = ssoMod.client.getEncodedSAMLLogoutRequest(user, sso.sessionIndex, sso.issuer);
- var postUrl = sso.address + sso.ssoService;
-
- if (log.isDebugEnabled()) {
- sso.log.debug("Logout request recieved from session id ::: " + sso.sessionId);
- }
- print("You are now redirected to Stratos Identity. If theredirection fails, please click the post " +
- "button.
");
- };
-
- sso.acs = function (loginCallback, logoutCallback) {
- var sso_sessions = getSSOSessions();
- sso.sessionId = session.getId();
- var samlResponse = request.getParameter('SAMLResponse');
- var samlRequest = request.getParameter('SAMLRequest');
- var relayState = request.getParameter('RelayState');
- var samlRespObj;
-
- if (samlResponse != null) {
- samlRespObj = ssoMod.client.getSamlObject(samlResponse);
- if (ssoMod.client.isLogoutResponse(samlRespObj)) {
- logoutCallback();
- if (log.isDebugEnabled()) {
- sso.log.debug('Session Id Invalidated :::' + sso.sessionId);
- }
- // Invalidating the session after the callback
- session.invalidate();
- } else {
- if (log.isDebugEnabled()) {
- sso.log.debug("Login request");
- }
- // validating the signature
- if (sso.responseSign) {
- if (ssoMod.client.validateSignature(samlRespObj, sso.keyStoreProps)) {
- var sessionObj = ssoMod.client.decodeSAMLLoginResponse(samlRespObj, samlResponse,
- sso.sessionId);
- if (log.isDebugEnabled()) {
- sso.log.debug("Saml object session ID :::" + sessionObj.sessionId);
- }
- if (sessionObj.sessionIndex != null || sessionObj.sessionIndex != 'undefined') {
- sso_sessions[sso_sessions[sessionObj.sessionIndex] = sessionObj.sessionId] =
- sessionObj.sessionIndex;
- if (log.isDebugEnabled()) {
- sso.log.debug("Login successful");
- sso.log.debug('User is set :::' + sessionObj.loggedInUser);
- }
- loginCallback(sessionObj.loggedInUser);
- } else {
- sso.log.error("Session index invalid");
- }
- } else {
- sso.log.error("Response Signing failed");
- }
- } else {
- if (log.isDebugEnabled()) {
- sso.log.debug("Response Signing is disabled");
- }
- }
- }
- }
- /*
- Executed for single logout requests
- */
- if (samlRequest != null) {
- var index = ssoMod.client.decodeSAMLLogoutRequest(ssoMod.client.getSamlObject(samlRequest));
- var jSessionId = getSSOSessions()[index];
- delete getSSOSessions()[index];
- if (log.isDebugEnabled()) {
- sso.log.debug('Backend logout received from store. The index is :::' + index);
- sso.log.debug('Session Id Invalidated :::' + jSessionId);
- }
- session.invalidate();
- }
- }
-})();
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/user.js b/modules/distribution/src/repository/jaggeryapps/sensebot/modules/user.js
deleted file mode 100644
index 2dfff33e..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/user.js
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var userModule;
-userModule = function () {
- var log = new Log("modules/user.js");
-
- var constants = require("/modules/constants.js");
- var utility = require("/modules/utility.js").utility;
-
- //var userManagementService = utility.getUserManagementService();
-
- var publicMethods = {};
- var privateMethods = {};
-
- /**
- * Authenticate a user when he or she attempts to login to DC.
- *
- * @param username Username of the user
- * @param password Password of the user
- * @param successCallback Function to be called at the event of successful authentication
- * @param failureCallback Function to be called at the event of failed authentication
- */
- publicMethods.login = function (username, password, successCallback, failureCallback) {
- var carbonModule = require("carbon");
- var carbonServer = application.get("carbonServer");
- try {
- // get tenant specific full user name.
- username = username + "@" + carbonModule.server.tenantDomain();
- // check if the user is an authenticated user.
- var isAuthenticated = carbonServer.authenticate(username, password);
- if (isAuthenticated) {
- var tenantUser = carbonModule.server.tenantUser(username);
- session.put(constants.USER_SESSION_KEY, tenantUser);
- successCallback(tenantUser);
- } else {
- failureCallback();
- }
- } catch (e) {
- throw e;
- }
- };
-
- /**
- * Register user to dc-user-store.
- *
- * @param username Username of the user
- * @param firstname First name of the user
- * @param lastname Last name of the user
- * @param emailAddress Email address of the user
- * @param password Password of the user
- * @param userRoles Roles assigned to the user
- *
- * @returns {number} HTTP Status code 201 if succeeded, 409 if user already exists
- */
- publicMethods.registerUser = function (username, firstname, lastname, emailAddress, password, userRoles) {
- var carbon = require('carbon');
- var tenantId = carbon.server.tenantId();
- var url = carbon.server.address('https') + "/admin/services";
- var server = new carbon.server.Server(url);
- var userManager = new carbon.user.UserManager(server, tenantId);
-
- try {
- if (userManager.userExists(username)) {
- if (log.isDebugEnabled()) {
- log.debug("A user with name '" + username + "' already exists.");
- }
- // http status code 409 refers to - conflict.
- return 409;
- } else {
- var defaultUserClaims = privateMethods.buildDefaultUserClaims(firstname, lastname, emailAddress);
-
- userManager.addUser(username, password, userRoles, defaultUserClaims, "default");
- if (log.isDebugEnabled()) {
- log.debug("A new user with name '" + username + "' was created.");
- }
- // http status code 201 refers to - created.
- return 201;
- }
- } catch (e) {
- throw e;
- }
- };
-
- /**
- * Add user to dc-user-store.
- *
- * @param username Username of the user
- * @param firstname First name of the user
- * @param lastname Last name of the user
- * @param emailAddress Email address of the user
- * @param userRoles Roles assigned to the user
- *
- * @returns {number} HTTP Status code 201 if succeeded, 409 if user already exists
- */
- publicMethods.addUser = function (username, firstname, lastname, emailAddress, userRoles) {
- var carbon = require('carbon');
- var tenantId = carbon.server.tenantId();
- var url = carbon.server.address('https') + "/admin/services";
- var server = new carbon.server.Server(url);
- var userManager = new carbon.user.UserManager(server, tenantId);
-
- try {
- if (userManager.userExists(username)) {
- if (log.isDebugEnabled()) {
- log.debug("A user with name '" + username + "' already exists.");
- }
- // http status code 409 refers to - conflict.
- return 409;
- } else {
- var initialUserPassword = privateMethods.generateInitialUserPassword();
- var defaultUserClaims = privateMethods.buildDefaultUserClaims(firstname, lastname, emailAddress);
-
- userManager.addUser(username, initialUserPassword, userRoles, defaultUserClaims, "default");
- privateMethods.inviteUserToEnroll(username, initialUserPassword);
- if (log.isDebugEnabled()) {
- log.debug("A new user with name '" + username + "' was created.");
- }
- // http status code 201 refers to - created.
- return 201;
- }
- } catch (e) {
- throw e;
- }
- };
-
- /**
- * Remove an existing user from mdm-user-store.
- *
- * @param username Username of the user
- * @returns {number} HTTP Status code 200 if succeeded, 409 if the user does not exist
- */
- publicMethods.removeUser = function (username) {
- var carbon = require('carbon');
- var tenantId = carbon.server.tenantId();
- var url = carbon.server.address('https') + "/admin/services";
- var server = new carbon.server.Server(url);
- var userManager = new carbon.user.UserManager(server, tenantId);
-
- try {
- if (userManager.userExists(username)) {
- userManager.removeUser(username);
- if (log.isDebugEnabled()) {
- log.debug("An existing user with name '" + username + "' was removed.");
- }
- // http status code 200 refers to - success.
- return 200;
- } else {
- if (log.isDebugEnabled()) {
- log.debug("A user with name '" + username + "' does not exist to remove.");
- }
- // http status code 409 refers to - conflict.
- return 409;
- }
- } catch (e) {
- throw e;
- }
- };
-
- /**
- * Private method to be used by addUser() to
- * generate an initial user password for a user.
- * This will be the password used by a user for his initial login to the system.
- *
- * @returns {string} Initial User Password
- */
- privateMethods.generateInitialUserPassword = function () {
- var passwordLength = 6;
- //defining the pool of characters to be used for initial password generation
- var lowerCaseCharset = "abcdefghijklmnopqrstuvwxyz";
- var upperCaseCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- var numericCharset = "0123456789";
-
- var totalCharset = lowerCaseCharset + upperCaseCharset + numericCharset;
- var totalCharsetLength = totalCharset.length;
-
- var initialUserPassword = "";
- for (var i = 0; i < passwordLength; ++i) {
- initialUserPassword += totalCharset.charAt(Math.floor(Math.random() * totalCharsetLength));
- }
- if (log.isDebugEnabled()) {
- log.debug("Initial password created for new user : " + initialUserPassword);
- }
- return String(initialUserPassword);
- };
-
- /**
- * Build default user claims.
- *
- * @param firstname First name of the user
- * @param lastname Last name of the user
- * @param emailAddress Email address of the user
- *
- * @returns {Object} Default user claims to be provided
- */
- privateMethods.buildDefaultUserClaims = function (firstname, lastname, emailAddress) {
- var defaultUserClaims = {
- "http://wso2.org/claims/givenname": firstname,
- "http://wso2.org/claims/lastname": lastname,
- "http://wso2.org/claims/emailaddress": emailAddress
- };
- if (log.isDebugEnabled()) {
- log.debug("ClaimMap created for new user : " + stringify(defaultUserClaims));
- }
- return defaultUserClaims;
- };
-
- publicMethods.addPermissions = function (permissionList, path, init) {
- var carbonModule = require("carbon");
- var carbonServer = application.get("carbonServer");
- var options = {system: true};
- if (init == "login") {
- var carbonUser = session.get(constants.USER_SESSION_KEY);
- if (carbonUser) {
- options.tenantId = carbonUser.tenantId;
- }
- }
- var registry = new carbonModule.registry.Registry(carbonServer, options);
- var i, permission, resource;
- for (i = 0; i < permissionList.length; i++) {
- permission = permissionList[i];
- resource = {
- collection : true,
- name : permission.name,
- properties : {
- name : permission.name
- }
- };
- registry.put("/_system/governance/permission/" + path + "/" + permission.key, resource);
- }
- };
-
- //publicMethods.getUsers = function () {
- // var carbon = require('carbon');
- //
- // var carbonUser = session.get(constants.USER_SESSION_KEY);
- // if (!carbonUser) {
- // log.error("User object was not found in the session");
- // throw constants.ERRORS.USER_NOT_FOUND;
- // }
- //
- // var userList;
- // try{
- // userList = userManagementService.getUsersForTenant(carbonUser.tenantId);
- // }catch(e){
- // log.error("Error occurred while reading all users");
- // return [];
- // }
- //
- // var users = [];
- // var i, userObject;
- // for (i = 0; i < userList.size(); i++) {
- // userObject = userList.get(i);
- // users.push({
- // "username" : userObject.getUserName(),
- // "email" : userObject.getEmail(),
- // "name" : userObject.getFirstName() + " " + userObject.getLastName()
- // });
- // }
- // return users;
- //};
-
- publicMethods.isAuthorized = function (permission) {
- var carbonModule = require("carbon");
- var carbonServer = application.get("carbonServer");
- var carbonUser = session.get(constants.USER_SESSION_KEY);
- if (!carbonUser) {
- log.error("User object was not found in the session");
- throw constants.ERRORS.USER_NOT_FOUND;
- }
- var userManager = new carbonModule.user.UserManager(carbonServer, carbonUser.tenantId);
- var user = new carbonModule.user.User(userManager, carbonUser.username);
- return user.isAuthorized(permission, "ui.execute");
- };
-
- publicMethods.logout = function (successCallback) {
- session.invalidate();
- successCallback();
- };
-
- return publicMethods;
-}();
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/utility.js b/modules/distribution/src/repository/jaggeryapps/sensebot/modules/utility.js
deleted file mode 100644
index 6286701b..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/modules/utility.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var utility;
-utility = function () {
- //var JavaClass = Packages.java.lang.Class;
- //var PrivilegedCarbonContext = Packages.org.wso2.carbon.context.PrivilegedCarbonContext;
-
- //var getOsgiService = function (className) {
- // var log = new Log();
- // log.info("###### Current Class : "+className);
- // return PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(JavaClass.forName(className));
- //};
-
- var publicMethods = {};
-
- //publicMethods.getUserManagementService = function () {
- // return getOsgiService('org.wso2.carbon.device.mgt.user.core.service.UserManagementService');
- //};
-
- publicMethods.insertAppPermissions = function (userModule, type) {
- userModule.addPermissions([{key: "device-mgt", name: "Device Management"}], "", type);
- userModule.addPermissions([{key: "admin", name: "Device Management Admin"}], "device-mgt", type);
- userModule.addPermissions([{key: "user", name: "Device Management User"}], "device-mgt", type);
-
- userModule.addPermissions([{key: "devices", name: "Devices"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "devices/list", name: "List Devices"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "devices/operation", name: "Perform Operation"}], "device-mgt/admin", type);
-
- userModule.addPermissions([{key: "users", name: "Users"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "users/add", name: "Add New Users"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "users/invite", name: "Invite Users"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "users/list", name: "List Users"}], "device-mgt/admin", type);
- userModule.addPermissions([{key: "users/remove", name: "Remove Users"}], "device-mgt/admin", type);
-
- userModule.addPermissions([{key: "devices", name: "Devices"}], "device-mgt/user", type);
- userModule.addPermissions([{key: "devices/list", name: "List Devices"}], "device-mgt/user", type);
- userModule.addPermissions([{key: "devices/operation", name: "Perform Operation"}], "device-mgt/user", "init");
- };
-
- return publicMethods;
-}();
-
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/pages/index.hbs b/modules/distribution/src/repository/jaggeryapps/sensebot/pages/index.hbs
deleted file mode 100644
index c9b64db9..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/pages/index.hbs
+++ /dev/null
@@ -1,8 +0,0 @@
-{{layout "fluid"}}
-{{#zone "title"}}
- WSO2 DC | Device Cloud
-{{/zone}}
-{{#zone "body"}}
- {{unit "appbar"}}
- {{unit "mydevice"}}
-{{/zone}}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/test/testExecutor.jag b/modules/distribution/src/repository/jaggeryapps/sensebot/test/testExecutor.jag
deleted file mode 100644
index 8701e7ba..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/test/testExecutor.jag
+++ /dev/null
@@ -1,20 +0,0 @@
-<%
-/*
- * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-require("jaggery-test").test.run();
-%>
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/tmp/cached_theme_less_base.css b/modules/distribution/src/repository/jaggeryapps/sensebot/tmp/cached_theme_less_base.css
deleted file mode 100644
index 6edb4b23..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/tmp/cached_theme_less_base.css
+++ /dev/null
@@ -1,6293 +0,0 @@
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-html {
- font-family: sans-serif;
- -ms-text-size-adjust: 100%;
- -webkit-text-size-adjust: 100%;
-}
-body {
- margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-audio,
-canvas,
-progress,
-video {
- display: inline-block;
- vertical-align: baseline;
-}
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-[hidden],
-template {
- display: none;
-}
-a {
- background-color: transparent;
-}
-a:active,
-a:hover {
- outline: 0;
-}
-abbr[title] {
- border-bottom: 1px dotted;
-}
-b,
-strong {
- font-weight: bold;
-}
-dfn {
- font-style: italic;
-}
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-mark {
- background: #ff0;
- color: #000;
-}
-small {
- font-size: 80%;
-}
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-sup {
- top: -0.5em;
-}
-sub {
- bottom: -0.25em;
-}
-img {
- border: 0;
-}
-svg:not(:root) {
- overflow: hidden;
-}
-figure {
- margin: 1em 40px;
-}
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-pre {
- overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit;
- font: inherit;
- margin: 0;
-}
-button {
- overflow: visible;
-}
-button,
-select {
- text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button;
- cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-input {
- line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box;
- padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-input[type="search"] {
- -webkit-appearance: textfield;
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box;
- box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-legend {
- border: 0;
- padding: 0;
-}
-textarea {
- overflow: auto;
-}
-optgroup {
- font-weight: bold;
-}
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-td,
-th {
- padding: 0;
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print {
- *,
- *:before,
- *:after {
- background: transparent !important;
- color: #000 !important;
- box-shadow: none !important;
- text-shadow: none !important;
- }
- a,
- a:visited {
- text-decoration: underline;
- }
- a[href]:after {
- content: " (" attr(href) ")";
- }
- abbr[title]:after {
- content: " (" attr(title) ")";
- }
- a[href^="#"]:after,
- a[href^="javascript:"]:after {
- content: "";
- }
- pre,
- blockquote {
- border: 1px solid #999;
- page-break-inside: avoid;
- }
- thead {
- display: table-header-group;
- }
- tr,
- img {
- page-break-inside: avoid;
- }
- img {
- max-width: 100% !important;
- }
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
- h2,
- h3 {
- page-break-after: avoid;
- }
- select {
- background: #fff !important;
- }
- .navbar {
- display: none;
- }
- .btn > .caret,
- .dropup > .btn > .caret {
- border-top-color: #000 !important;
- }
- .label {
- border: 1px solid #000;
- }
- .table {
- border-collapse: collapse !important;
- }
- .table td,
- .table th {
- background-color: #fff !important;
- }
- .table-bordered th,
- .table-bordered td {
- border: 1px solid #ddd !important;
- }
-}
-@font-face {
- font-family: 'Glyphicons Halflings';
- src: url('../fonts/glyphicons-halflings-regular.eot');
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: normal;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
- content: "\2a";
-}
-.glyphicon-plus:before {
- content: "\2b";
-}
-.glyphicon-euro:before,
-.glyphicon-eur:before {
- content: "\20ac";
-}
-.glyphicon-minus:before {
- content: "\2212";
-}
-.glyphicon-cloud:before {
- content: "\2601";
-}
-.glyphicon-envelope:before {
- content: "\2709";
-}
-.glyphicon-pencil:before {
- content: "\270f";
-}
-.glyphicon-glass:before {
- content: "\e001";
-}
-.glyphicon-music:before {
- content: "\e002";
-}
-.glyphicon-search:before {
- content: "\e003";
-}
-.glyphicon-heart:before {
- content: "\e005";
-}
-.glyphicon-star:before {
- content: "\e006";
-}
-.glyphicon-star-empty:before {
- content: "\e007";
-}
-.glyphicon-user:before {
- content: "\e008";
-}
-.glyphicon-film:before {
- content: "\e009";
-}
-.glyphicon-th-large:before {
- content: "\e010";
-}
-.glyphicon-th:before {
- content: "\e011";
-}
-.glyphicon-th-list:before {
- content: "\e012";
-}
-.glyphicon-ok:before {
- content: "\e013";
-}
-.glyphicon-remove:before {
- content: "\e014";
-}
-.glyphicon-zoom-in:before {
- content: "\e015";
-}
-.glyphicon-zoom-out:before {
- content: "\e016";
-}
-.glyphicon-off:before {
- content: "\e017";
-}
-.glyphicon-signal:before {
- content: "\e018";
-}
-.glyphicon-cog:before {
- content: "\e019";
-}
-.glyphicon-trash:before {
- content: "\e020";
-}
-.glyphicon-home:before {
- content: "\e021";
-}
-.glyphicon-file:before {
- content: "\e022";
-}
-.glyphicon-time:before {
- content: "\e023";
-}
-.glyphicon-road:before {
- content: "\e024";
-}
-.glyphicon-download-alt:before {
- content: "\e025";
-}
-.glyphicon-download:before {
- content: "\e026";
-}
-.glyphicon-upload:before {
- content: "\e027";
-}
-.glyphicon-inbox:before {
- content: "\e028";
-}
-.glyphicon-play-circle:before {
- content: "\e029";
-}
-.glyphicon-repeat:before {
- content: "\e030";
-}
-.glyphicon-refresh:before {
- content: "\e031";
-}
-.glyphicon-list-alt:before {
- content: "\e032";
-}
-.glyphicon-lock:before {
- content: "\e033";
-}
-.glyphicon-flag:before {
- content: "\e034";
-}
-.glyphicon-headphones:before {
- content: "\e035";
-}
-.glyphicon-volume-off:before {
- content: "\e036";
-}
-.glyphicon-volume-down:before {
- content: "\e037";
-}
-.glyphicon-volume-up:before {
- content: "\e038";
-}
-.glyphicon-qrcode:before {
- content: "\e039";
-}
-.glyphicon-barcode:before {
- content: "\e040";
-}
-.glyphicon-tag:before {
- content: "\e041";
-}
-.glyphicon-tags:before {
- content: "\e042";
-}
-.glyphicon-book:before {
- content: "\e043";
-}
-.glyphicon-bookmark:before {
- content: "\e044";
-}
-.glyphicon-print:before {
- content: "\e045";
-}
-.glyphicon-camera:before {
- content: "\e046";
-}
-.glyphicon-font:before {
- content: "\e047";
-}
-.glyphicon-bold:before {
- content: "\e048";
-}
-.glyphicon-italic:before {
- content: "\e049";
-}
-.glyphicon-text-height:before {
- content: "\e050";
-}
-.glyphicon-text-width:before {
- content: "\e051";
-}
-.glyphicon-align-left:before {
- content: "\e052";
-}
-.glyphicon-align-center:before {
- content: "\e053";
-}
-.glyphicon-align-right:before {
- content: "\e054";
-}
-.glyphicon-align-justify:before {
- content: "\e055";
-}
-.glyphicon-list:before {
- content: "\e056";
-}
-.glyphicon-indent-left:before {
- content: "\e057";
-}
-.glyphicon-indent-right:before {
- content: "\e058";
-}
-.glyphicon-facetime-video:before {
- content: "\e059";
-}
-.glyphicon-picture:before {
- content: "\e060";
-}
-.glyphicon-map-marker:before {
- content: "\e062";
-}
-.glyphicon-adjust:before {
- content: "\e063";
-}
-.glyphicon-tint:before {
- content: "\e064";
-}
-.glyphicon-edit:before {
- content: "\e065";
-}
-.glyphicon-share:before {
- content: "\e066";
-}
-.glyphicon-check:before {
- content: "\e067";
-}
-.glyphicon-move:before {
- content: "\e068";
-}
-.glyphicon-step-backward:before {
- content: "\e069";
-}
-.glyphicon-fast-backward:before {
- content: "\e070";
-}
-.glyphicon-backward:before {
- content: "\e071";
-}
-.glyphicon-play:before {
- content: "\e072";
-}
-.glyphicon-pause:before {
- content: "\e073";
-}
-.glyphicon-stop:before {
- content: "\e074";
-}
-.glyphicon-forward:before {
- content: "\e075";
-}
-.glyphicon-fast-forward:before {
- content: "\e076";
-}
-.glyphicon-step-forward:before {
- content: "\e077";
-}
-.glyphicon-eject:before {
- content: "\e078";
-}
-.glyphicon-chevron-left:before {
- content: "\e079";
-}
-.glyphicon-chevron-right:before {
- content: "\e080";
-}
-.glyphicon-plus-sign:before {
- content: "\e081";
-}
-.glyphicon-minus-sign:before {
- content: "\e082";
-}
-.glyphicon-remove-sign:before {
- content: "\e083";
-}
-.glyphicon-ok-sign:before {
- content: "\e084";
-}
-.glyphicon-question-sign:before {
- content: "\e085";
-}
-.glyphicon-info-sign:before {
- content: "\e086";
-}
-.glyphicon-screenshot:before {
- content: "\e087";
-}
-.glyphicon-remove-circle:before {
- content: "\e088";
-}
-.glyphicon-ok-circle:before {
- content: "\e089";
-}
-.glyphicon-ban-circle:before {
- content: "\e090";
-}
-.glyphicon-arrow-left:before {
- content: "\e091";
-}
-.glyphicon-arrow-right:before {
- content: "\e092";
-}
-.glyphicon-arrow-up:before {
- content: "\e093";
-}
-.glyphicon-arrow-down:before {
- content: "\e094";
-}
-.glyphicon-share-alt:before {
- content: "\e095";
-}
-.glyphicon-resize-full:before {
- content: "\e096";
-}
-.glyphicon-resize-small:before {
- content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
- content: "\e101";
-}
-.glyphicon-gift:before {
- content: "\e102";
-}
-.glyphicon-leaf:before {
- content: "\e103";
-}
-.glyphicon-fire:before {
- content: "\e104";
-}
-.glyphicon-eye-open:before {
- content: "\e105";
-}
-.glyphicon-eye-close:before {
- content: "\e106";
-}
-.glyphicon-warning-sign:before {
- content: "\e107";
-}
-.glyphicon-plane:before {
- content: "\e108";
-}
-.glyphicon-calendar:before {
- content: "\e109";
-}
-.glyphicon-random:before {
- content: "\e110";
-}
-.glyphicon-comment:before {
- content: "\e111";
-}
-.glyphicon-magnet:before {
- content: "\e112";
-}
-.glyphicon-chevron-up:before {
- content: "\e113";
-}
-.glyphicon-chevron-down:before {
- content: "\e114";
-}
-.glyphicon-retweet:before {
- content: "\e115";
-}
-.glyphicon-shopping-cart:before {
- content: "\e116";
-}
-.glyphicon-folder-close:before {
- content: "\e117";
-}
-.glyphicon-folder-open:before {
- content: "\e118";
-}
-.glyphicon-resize-vertical:before {
- content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
- content: "\e120";
-}
-.glyphicon-hdd:before {
- content: "\e121";
-}
-.glyphicon-bullhorn:before {
- content: "\e122";
-}
-.glyphicon-bell:before {
- content: "\e123";
-}
-.glyphicon-certificate:before {
- content: "\e124";
-}
-.glyphicon-thumbs-up:before {
- content: "\e125";
-}
-.glyphicon-thumbs-down:before {
- content: "\e126";
-}
-.glyphicon-hand-right:before {
- content: "\e127";
-}
-.glyphicon-hand-left:before {
- content: "\e128";
-}
-.glyphicon-hand-up:before {
- content: "\e129";
-}
-.glyphicon-hand-down:before {
- content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
- content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
- content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
- content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
- content: "\e134";
-}
-.glyphicon-globe:before {
- content: "\e135";
-}
-.glyphicon-wrench:before {
- content: "\e136";
-}
-.glyphicon-tasks:before {
- content: "\e137";
-}
-.glyphicon-filter:before {
- content: "\e138";
-}
-.glyphicon-briefcase:before {
- content: "\e139";
-}
-.glyphicon-fullscreen:before {
- content: "\e140";
-}
-.glyphicon-dashboard:before {
- content: "\e141";
-}
-.glyphicon-paperclip:before {
- content: "\e142";
-}
-.glyphicon-heart-empty:before {
- content: "\e143";
-}
-.glyphicon-link:before {
- content: "\e144";
-}
-.glyphicon-phone:before {
- content: "\e145";
-}
-.glyphicon-pushpin:before {
- content: "\e146";
-}
-.glyphicon-usd:before {
- content: "\e148";
-}
-.glyphicon-gbp:before {
- content: "\e149";
-}
-.glyphicon-sort:before {
- content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
- content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
- content: "\e152";
-}
-.glyphicon-sort-by-order:before {
- content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
- content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
- content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
- content: "\e156";
-}
-.glyphicon-unchecked:before {
- content: "\e157";
-}
-.glyphicon-expand:before {
- content: "\e158";
-}
-.glyphicon-collapse-down:before {
- content: "\e159";
-}
-.glyphicon-collapse-up:before {
- content: "\e160";
-}
-.glyphicon-log-in:before {
- content: "\e161";
-}
-.glyphicon-flash:before {
- content: "\e162";
-}
-.glyphicon-log-out:before {
- content: "\e163";
-}
-.glyphicon-new-window:before {
- content: "\e164";
-}
-.glyphicon-record:before {
- content: "\e165";
-}
-.glyphicon-save:before {
- content: "\e166";
-}
-.glyphicon-open:before {
- content: "\e167";
-}
-.glyphicon-saved:before {
- content: "\e168";
-}
-.glyphicon-import:before {
- content: "\e169";
-}
-.glyphicon-export:before {
- content: "\e170";
-}
-.glyphicon-send:before {
- content: "\e171";
-}
-.glyphicon-floppy-disk:before {
- content: "\e172";
-}
-.glyphicon-floppy-saved:before {
- content: "\e173";
-}
-.glyphicon-floppy-remove:before {
- content: "\e174";
-}
-.glyphicon-floppy-save:before {
- content: "\e175";
-}
-.glyphicon-floppy-open:before {
- content: "\e176";
-}
-.glyphicon-credit-card:before {
- content: "\e177";
-}
-.glyphicon-transfer:before {
- content: "\e178";
-}
-.glyphicon-cutlery:before {
- content: "\e179";
-}
-.glyphicon-header:before {
- content: "\e180";
-}
-.glyphicon-compressed:before {
- content: "\e181";
-}
-.glyphicon-earphone:before {
- content: "\e182";
-}
-.glyphicon-phone-alt:before {
- content: "\e183";
-}
-.glyphicon-tower:before {
- content: "\e184";
-}
-.glyphicon-stats:before {
- content: "\e185";
-}
-.glyphicon-sd-video:before {
- content: "\e186";
-}
-.glyphicon-hd-video:before {
- content: "\e187";
-}
-.glyphicon-subtitles:before {
- content: "\e188";
-}
-.glyphicon-sound-stereo:before {
- content: "\e189";
-}
-.glyphicon-sound-dolby:before {
- content: "\e190";
-}
-.glyphicon-sound-5-1:before {
- content: "\e191";
-}
-.glyphicon-sound-6-1:before {
- content: "\e192";
-}
-.glyphicon-sound-7-1:before {
- content: "\e193";
-}
-.glyphicon-copyright-mark:before {
- content: "\e194";
-}
-.glyphicon-registration-mark:before {
- content: "\e195";
-}
-.glyphicon-cloud-download:before {
- content: "\e197";
-}
-.glyphicon-cloud-upload:before {
- content: "\e198";
-}
-.glyphicon-tree-conifer:before {
- content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
- content: "\e200";
-}
-* {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-*:before,
-*:after {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-html {
- font-size: 10px;
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 1.42857143;
- color: #333333;
- background-color: #ffffff;
-}
-input,
-button,
-select,
-textarea {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
-}
-a {
- color: #337ab7;
- text-decoration: none;
-}
-a:hover,
-a:focus {
- color: #23527c;
- text-decoration: underline;
-}
-a:focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-figure {
- margin: 0;
-}
-img {
- vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
- display: block;
- max-width: 100%;
- height: auto;
-}
-.img-rounded {
- border-radius: 6px;
-}
-.img-thumbnail {
- padding: 4px;
- line-height: 1.42857143;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-radius: 4px;
- -webkit-transition: all 0.2s ease-in-out;
- -o-transition: all 0.2s ease-in-out;
- transition: all 0.2s ease-in-out;
- display: inline-block;
- max-width: 100%;
- height: auto;
-}
-.img-circle {
- border-radius: 50%;
-}
-hr {
- margin-top: 20px;
- margin-bottom: 20px;
- border: 0;
- border-top: 1px solid #eeeeee;
-}
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- margin: -1px;
- padding: 0;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
- font-family: inherit;
- font-weight: 500;
- line-height: 1.1;
- color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
- font-weight: normal;
- line-height: 1;
- color: #777777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
- margin-top: 20px;
- margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
- font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
- font-size: 75%;
-}
-h1,
-.h1 {
- font-size: 36px;
-}
-h2,
-.h2 {
- font-size: 30px;
-}
-h3,
-.h3 {
- font-size: 24px;
-}
-h4,
-.h4 {
- font-size: 18px;
-}
-h5,
-.h5 {
- font-size: 14px;
-}
-h6,
-.h6 {
- font-size: 12px;
-}
-p {
- margin: 0 0 10px;
-}
-.lead {
- margin-bottom: 20px;
- font-size: 16px;
- font-weight: 300;
- line-height: 1.4;
-}
-@media (min-width: 768px) {
- .lead {
- font-size: 21px;
- }
-}
-small,
-.small {
- font-size: 85%;
-}
-mark,
-.mark {
- background-color: #fcf8e3;
- padding: .2em;
-}
-.text-left {
- text-align: left;
-}
-.text-right {
- text-align: right;
-}
-.text-center {
- text-align: center;
-}
-.text-justify {
- text-align: justify;
-}
-.text-nowrap {
- white-space: nowrap;
-}
-.text-lowercase {
- text-transform: lowercase;
-}
-.text-uppercase {
- text-transform: uppercase;
-}
-.text-capitalize {
- text-transform: capitalize;
-}
-.text-muted {
- color: #777777;
-}
-.text-primary {
- color: #337ab7;
-}
-a.text-primary:hover {
- color: #286090;
-}
-.text-success {
- color: #3c763d;
-}
-a.text-success:hover {
- color: #2b542c;
-}
-.text-info {
- color: #31708f;
-}
-a.text-info:hover {
- color: #245269;
-}
-.text-warning {
- color: #8a6d3b;
-}
-a.text-warning:hover {
- color: #66512c;
-}
-.text-danger {
- color: #a94442;
-}
-a.text-danger:hover {
- color: #843534;
-}
-.bg-primary {
- color: #fff;
- background-color: #337ab7;
-}
-a.bg-primary:hover {
- background-color: #286090;
-}
-.bg-success {
- background-color: #dff0d8;
-}
-a.bg-success:hover {
- background-color: #c1e2b3;
-}
-.bg-info {
- background-color: #d9edf7;
-}
-a.bg-info:hover {
- background-color: #afd9ee;
-}
-.bg-warning {
- background-color: #fcf8e3;
-}
-a.bg-warning:hover {
- background-color: #f7ecb5;
-}
-.bg-danger {
- background-color: #f2dede;
-}
-a.bg-danger:hover {
- background-color: #e4b9b9;
-}
-.page-header {
- padding-bottom: 9px;
- margin: 40px 0 20px;
- border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
- margin-top: 0;
- margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
- margin-bottom: 0;
-}
-.list-unstyled {
- padding-left: 0;
- list-style: none;
-}
-.list-inline {
- padding-left: 0;
- list-style: none;
- margin-left: -5px;
-}
-.list-inline > li {
- display: inline-block;
- padding-left: 5px;
- padding-right: 5px;
-}
-dl {
- margin-top: 0;
- margin-bottom: 20px;
-}
-dt,
-dd {
- line-height: 1.42857143;
-}
-dt {
- font-weight: bold;
-}
-dd {
- margin-left: 0;
-}
-@media (min-width: 768px) {
- .dl-horizontal dt {
- float: left;
- width: 160px;
- clear: left;
- text-align: right;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .dl-horizontal dd {
- margin-left: 180px;
- }
-}
-abbr[title],
-abbr[data-original-title] {
- cursor: help;
- border-bottom: 1px dotted #777777;
-}
-.initialism {
- font-size: 90%;
- text-transform: uppercase;
-}
-blockquote {
- padding: 10px 20px;
- margin: 0 0 20px;
- font-size: 17.5px;
- border-left: 5px solid #eeeeee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
- margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
- display: block;
- font-size: 80%;
- line-height: 1.42857143;
- color: #777777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
- content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid #eeeeee;
- border-left: 0;
- text-align: right;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
- content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
- content: '\00A0 \2014';
-}
-address {
- margin-bottom: 20px;
- font-style: normal;
- line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
- font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: #c7254e;
- background-color: #f9f2f4;
- border-radius: 4px;
-}
-kbd {
- padding: 2px 4px;
- font-size: 90%;
- color: #ffffff;
- background-color: #333333;
- border-radius: 3px;
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-kbd kbd {
- padding: 0;
- font-size: 100%;
- font-weight: bold;
- box-shadow: none;
-}
-pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 1.42857143;
- word-break: break-all;
- word-wrap: break-word;
- color: #333333;
- background-color: #f5f5f5;
- border: 1px solid #cccccc;
- border-radius: 4px;
-}
-pre code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border-radius: 0;
-}
-.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
-}
-.container {
- margin-right: auto;
- margin-left: auto;
- padding-left: 15px;
- padding-right: 15px;
-}
-@media (min-width: 768px) {
- .container {
- width: 750px;
- }
-}
-@media (min-width: 992px) {
- .container {
- width: 970px;
- }
-}
-@media (min-width: 1200px) {
- .container {
- width: 1170px;
- }
-}
-.container-fluid {
- margin-right: auto;
- margin-left: auto;
- padding-left: 15px;
- padding-right: 15px;
-}
-.row {
- margin-left: -15px;
- margin-right: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
- position: relative;
- min-height: 1px;
- padding-left: 15px;
- padding-right: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
- float: left;
-}
-.col-xs-12 {
- width: 100%;
-}
-.col-xs-11 {
- width: 91.66666667%;
-}
-.col-xs-10 {
- width: 83.33333333%;
-}
-.col-xs-9 {
- width: 75%;
-}
-.col-xs-8 {
- width: 66.66666667%;
-}
-.col-xs-7 {
- width: 58.33333333%;
-}
-.col-xs-6 {
- width: 50%;
-}
-.col-xs-5 {
- width: 41.66666667%;
-}
-.col-xs-4 {
- width: 33.33333333%;
-}
-.col-xs-3 {
- width: 25%;
-}
-.col-xs-2 {
- width: 16.66666667%;
-}
-.col-xs-1 {
- width: 8.33333333%;
-}
-.col-xs-pull-12 {
- right: 100%;
-}
-.col-xs-pull-11 {
- right: 91.66666667%;
-}
-.col-xs-pull-10 {
- right: 83.33333333%;
-}
-.col-xs-pull-9 {
- right: 75%;
-}
-.col-xs-pull-8 {
- right: 66.66666667%;
-}
-.col-xs-pull-7 {
- right: 58.33333333%;
-}
-.col-xs-pull-6 {
- right: 50%;
-}
-.col-xs-pull-5 {
- right: 41.66666667%;
-}
-.col-xs-pull-4 {
- right: 33.33333333%;
-}
-.col-xs-pull-3 {
- right: 25%;
-}
-.col-xs-pull-2 {
- right: 16.66666667%;
-}
-.col-xs-pull-1 {
- right: 8.33333333%;
-}
-.col-xs-pull-0 {
- right: auto;
-}
-.col-xs-push-12 {
- left: 100%;
-}
-.col-xs-push-11 {
- left: 91.66666667%;
-}
-.col-xs-push-10 {
- left: 83.33333333%;
-}
-.col-xs-push-9 {
- left: 75%;
-}
-.col-xs-push-8 {
- left: 66.66666667%;
-}
-.col-xs-push-7 {
- left: 58.33333333%;
-}
-.col-xs-push-6 {
- left: 50%;
-}
-.col-xs-push-5 {
- left: 41.66666667%;
-}
-.col-xs-push-4 {
- left: 33.33333333%;
-}
-.col-xs-push-3 {
- left: 25%;
-}
-.col-xs-push-2 {
- left: 16.66666667%;
-}
-.col-xs-push-1 {
- left: 8.33333333%;
-}
-.col-xs-push-0 {
- left: auto;
-}
-.col-xs-offset-12 {
- margin-left: 100%;
-}
-.col-xs-offset-11 {
- margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
- margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
- margin-left: 75%;
-}
-.col-xs-offset-8 {
- margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
- margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
- margin-left: 50%;
-}
-.col-xs-offset-5 {
- margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
- margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
- margin-left: 25%;
-}
-.col-xs-offset-2 {
- margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
- margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
- margin-left: 0%;
-}
-@media (min-width: 768px) {
- .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
- float: left;
- }
- .col-sm-12 {
- width: 100%;
- }
- .col-sm-11 {
- width: 91.66666667%;
- }
- .col-sm-10 {
- width: 83.33333333%;
- }
- .col-sm-9 {
- width: 75%;
- }
- .col-sm-8 {
- width: 66.66666667%;
- }
- .col-sm-7 {
- width: 58.33333333%;
- }
- .col-sm-6 {
- width: 50%;
- }
- .col-sm-5 {
- width: 41.66666667%;
- }
- .col-sm-4 {
- width: 33.33333333%;
- }
- .col-sm-3 {
- width: 25%;
- }
- .col-sm-2 {
- width: 16.66666667%;
- }
- .col-sm-1 {
- width: 8.33333333%;
- }
- .col-sm-pull-12 {
- right: 100%;
- }
- .col-sm-pull-11 {
- right: 91.66666667%;
- }
- .col-sm-pull-10 {
- right: 83.33333333%;
- }
- .col-sm-pull-9 {
- right: 75%;
- }
- .col-sm-pull-8 {
- right: 66.66666667%;
- }
- .col-sm-pull-7 {
- right: 58.33333333%;
- }
- .col-sm-pull-6 {
- right: 50%;
- }
- .col-sm-pull-5 {
- right: 41.66666667%;
- }
- .col-sm-pull-4 {
- right: 33.33333333%;
- }
- .col-sm-pull-3 {
- right: 25%;
- }
- .col-sm-pull-2 {
- right: 16.66666667%;
- }
- .col-sm-pull-1 {
- right: 8.33333333%;
- }
- .col-sm-pull-0 {
- right: auto;
- }
- .col-sm-push-12 {
- left: 100%;
- }
- .col-sm-push-11 {
- left: 91.66666667%;
- }
- .col-sm-push-10 {
- left: 83.33333333%;
- }
- .col-sm-push-9 {
- left: 75%;
- }
- .col-sm-push-8 {
- left: 66.66666667%;
- }
- .col-sm-push-7 {
- left: 58.33333333%;
- }
- .col-sm-push-6 {
- left: 50%;
- }
- .col-sm-push-5 {
- left: 41.66666667%;
- }
- .col-sm-push-4 {
- left: 33.33333333%;
- }
- .col-sm-push-3 {
- left: 25%;
- }
- .col-sm-push-2 {
- left: 16.66666667%;
- }
- .col-sm-push-1 {
- left: 8.33333333%;
- }
- .col-sm-push-0 {
- left: auto;
- }
- .col-sm-offset-12 {
- margin-left: 100%;
- }
- .col-sm-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-sm-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-sm-offset-9 {
- margin-left: 75%;
- }
- .col-sm-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-sm-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-sm-offset-6 {
- margin-left: 50%;
- }
- .col-sm-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-sm-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-sm-offset-3 {
- margin-left: 25%;
- }
- .col-sm-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-sm-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-sm-offset-0 {
- margin-left: 0%;
- }
-}
-@media (min-width: 992px) {
- .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
- float: left;
- }
- .col-md-12 {
- width: 100%;
- }
- .col-md-11 {
- width: 91.66666667%;
- }
- .col-md-10 {
- width: 83.33333333%;
- }
- .col-md-9 {
- width: 75%;
- }
- .col-md-8 {
- width: 66.66666667%;
- }
- .col-md-7 {
- width: 58.33333333%;
- }
- .col-md-6 {
- width: 50%;
- }
- .col-md-5 {
- width: 41.66666667%;
- }
- .col-md-4 {
- width: 33.33333333%;
- }
- .col-md-3 {
- width: 25%;
- }
- .col-md-2 {
- width: 16.66666667%;
- }
- .col-md-1 {
- width: 8.33333333%;
- }
- .col-md-pull-12 {
- right: 100%;
- }
- .col-md-pull-11 {
- right: 91.66666667%;
- }
- .col-md-pull-10 {
- right: 83.33333333%;
- }
- .col-md-pull-9 {
- right: 75%;
- }
- .col-md-pull-8 {
- right: 66.66666667%;
- }
- .col-md-pull-7 {
- right: 58.33333333%;
- }
- .col-md-pull-6 {
- right: 50%;
- }
- .col-md-pull-5 {
- right: 41.66666667%;
- }
- .col-md-pull-4 {
- right: 33.33333333%;
- }
- .col-md-pull-3 {
- right: 25%;
- }
- .col-md-pull-2 {
- right: 16.66666667%;
- }
- .col-md-pull-1 {
- right: 8.33333333%;
- }
- .col-md-pull-0 {
- right: auto;
- }
- .col-md-push-12 {
- left: 100%;
- }
- .col-md-push-11 {
- left: 91.66666667%;
- }
- .col-md-push-10 {
- left: 83.33333333%;
- }
- .col-md-push-9 {
- left: 75%;
- }
- .col-md-push-8 {
- left: 66.66666667%;
- }
- .col-md-push-7 {
- left: 58.33333333%;
- }
- .col-md-push-6 {
- left: 50%;
- }
- .col-md-push-5 {
- left: 41.66666667%;
- }
- .col-md-push-4 {
- left: 33.33333333%;
- }
- .col-md-push-3 {
- left: 25%;
- }
- .col-md-push-2 {
- left: 16.66666667%;
- }
- .col-md-push-1 {
- left: 8.33333333%;
- }
- .col-md-push-0 {
- left: auto;
- }
- .col-md-offset-12 {
- margin-left: 100%;
- }
- .col-md-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-md-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-md-offset-9 {
- margin-left: 75%;
- }
- .col-md-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-md-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-md-offset-6 {
- margin-left: 50%;
- }
- .col-md-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-md-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-md-offset-3 {
- margin-left: 25%;
- }
- .col-md-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-md-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-md-offset-0 {
- margin-left: 0%;
- }
-}
-@media (min-width: 1200px) {
- .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
- float: left;
- }
- .col-lg-12 {
- width: 100%;
- }
- .col-lg-11 {
- width: 91.66666667%;
- }
- .col-lg-10 {
- width: 83.33333333%;
- }
- .col-lg-9 {
- width: 75%;
- }
- .col-lg-8 {
- width: 66.66666667%;
- }
- .col-lg-7 {
- width: 58.33333333%;
- }
- .col-lg-6 {
- width: 50%;
- }
- .col-lg-5 {
- width: 41.66666667%;
- }
- .col-lg-4 {
- width: 33.33333333%;
- }
- .col-lg-3 {
- width: 25%;
- }
- .col-lg-2 {
- width: 16.66666667%;
- }
- .col-lg-1 {
- width: 8.33333333%;
- }
- .col-lg-pull-12 {
- right: 100%;
- }
- .col-lg-pull-11 {
- right: 91.66666667%;
- }
- .col-lg-pull-10 {
- right: 83.33333333%;
- }
- .col-lg-pull-9 {
- right: 75%;
- }
- .col-lg-pull-8 {
- right: 66.66666667%;
- }
- .col-lg-pull-7 {
- right: 58.33333333%;
- }
- .col-lg-pull-6 {
- right: 50%;
- }
- .col-lg-pull-5 {
- right: 41.66666667%;
- }
- .col-lg-pull-4 {
- right: 33.33333333%;
- }
- .col-lg-pull-3 {
- right: 25%;
- }
- .col-lg-pull-2 {
- right: 16.66666667%;
- }
- .col-lg-pull-1 {
- right: 8.33333333%;
- }
- .col-lg-pull-0 {
- right: auto;
- }
- .col-lg-push-12 {
- left: 100%;
- }
- .col-lg-push-11 {
- left: 91.66666667%;
- }
- .col-lg-push-10 {
- left: 83.33333333%;
- }
- .col-lg-push-9 {
- left: 75%;
- }
- .col-lg-push-8 {
- left: 66.66666667%;
- }
- .col-lg-push-7 {
- left: 58.33333333%;
- }
- .col-lg-push-6 {
- left: 50%;
- }
- .col-lg-push-5 {
- left: 41.66666667%;
- }
- .col-lg-push-4 {
- left: 33.33333333%;
- }
- .col-lg-push-3 {
- left: 25%;
- }
- .col-lg-push-2 {
- left: 16.66666667%;
- }
- .col-lg-push-1 {
- left: 8.33333333%;
- }
- .col-lg-push-0 {
- left: auto;
- }
- .col-lg-offset-12 {
- margin-left: 100%;
- }
- .col-lg-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-lg-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-lg-offset-9 {
- margin-left: 75%;
- }
- .col-lg-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-lg-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-lg-offset-6 {
- margin-left: 50%;
- }
- .col-lg-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-lg-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-lg-offset-3 {
- margin-left: 25%;
- }
- .col-lg-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-lg-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-lg-offset-0 {
- margin-left: 0%;
- }
-}
-table {
- background-color: transparent;
-}
-caption {
- padding-top: 8px;
- padding-bottom: 8px;
- color: #777777;
- text-align: left;
-}
-th {
- text-align: left;
-}
-.table {
- width: 100%;
- max-width: 100%;
- margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
- padding: 8px;
- line-height: 1.42857143;
- vertical-align: top;
- border-top: 1px solid #dddddd;
-}
-.table > thead > tr > th {
- vertical-align: bottom;
- border-bottom: 2px solid #dddddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
- border-top: 0;
-}
-.table > tbody + tbody {
- border-top: 2px solid #dddddd;
-}
-.table .table {
- background-color: #ffffff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
- padding: 5px;
-}
-.table-bordered {
- border: 1px solid #dddddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
- border: 1px solid #dddddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
- border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-child(odd) {
- background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover {
- background-color: #f5f5f5;
-}
-table col[class*="col-"] {
- position: static;
- float: none;
- display: table-column;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
- position: static;
- float: none;
- display: table-cell;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
- background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
- background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
- background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
- background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
- background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
- background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
- background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
- background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
- background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
- background-color: #ebcccc;
-}
-.table-responsive {
- overflow-x: auto;
- min-height: 0.01%;
-}
-@media screen and (max-width: 767px) {
- .table-responsive {
- width: 100%;
- margin-bottom: 15px;
- overflow-y: hidden;
- -ms-overflow-style: -ms-autohiding-scrollbar;
- border: 1px solid #dddddd;
- }
- .table-responsive > .table {
- margin-bottom: 0;
- }
- .table-responsive > .table > thead > tr > th,
- .table-responsive > .table > tbody > tr > th,
- .table-responsive > .table > tfoot > tr > th,
- .table-responsive > .table > thead > tr > td,
- .table-responsive > .table > tbody > tr > td,
- .table-responsive > .table > tfoot > tr > td {
- white-space: nowrap;
- }
- .table-responsive > .table-bordered {
- border: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:first-child,
- .table-responsive > .table-bordered > tbody > tr > th:first-child,
- .table-responsive > .table-bordered > tfoot > tr > th:first-child,
- .table-responsive > .table-bordered > thead > tr > td:first-child,
- .table-responsive > .table-bordered > tbody > tr > td:first-child,
- .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:last-child,
- .table-responsive > .table-bordered > tbody > tr > th:last-child,
- .table-responsive > .table-bordered > tfoot > tr > th:last-child,
- .table-responsive > .table-bordered > thead > tr > td:last-child,
- .table-responsive > .table-bordered > tbody > tr > td:last-child,
- .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
- }
- .table-responsive > .table-bordered > tbody > tr:last-child > th,
- .table-responsive > .table-bordered > tfoot > tr:last-child > th,
- .table-responsive > .table-bordered > tbody > tr:last-child > td,
- .table-responsive > .table-bordered > tfoot > tr:last-child > td {
- border-bottom: 0;
- }
-}
-fieldset {
- padding: 0;
- margin: 0;
- border: 0;
- min-width: 0;
-}
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: inherit;
- color: #333333;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
-}
-label {
- display: inline-block;
- max-width: 100%;
- margin-bottom: 5px;
- font-weight: bold;
-}
-input[type="search"] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9;
- line-height: normal;
-}
-input[type="file"] {
- display: block;
-}
-input[type="range"] {
- display: block;
- width: 100%;
-}
-select[multiple],
-select[size] {
- height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-output {
- display: block;
- padding-top: 7px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555555;
-}
-.form-control {
- display: block;
- width: 100%;
- height: 34px;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555555;
- background-color: #ffffff;
- background-image: none;
- border: 1px solid #cccccc;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
- -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-.form-control:focus {
- border-color: #66afe9;
- outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-.form-control::-moz-placeholder {
- color: #999999;
- opacity: 1;
-}
-.form-control:-ms-input-placeholder {
- color: #999999;
-}
-.form-control::-webkit-input-placeholder {
- color: #999999;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
- cursor: not-allowed;
- background-color: #eeeeee;
- opacity: 1;
-}
-textarea.form-control {
- height: auto;
-}
-input[type="search"] {
- -webkit-appearance: none;
-}
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
- input[type="date"],
- input[type="time"],
- input[type="datetime-local"],
- input[type="month"] {
- line-height: 34px;
- }
- input[type="date"].input-sm,
- input[type="time"].input-sm,
- input[type="datetime-local"].input-sm,
- input[type="month"].input-sm {
- line-height: 30px;
- }
- input[type="date"].input-lg,
- input[type="time"].input-lg,
- input[type="datetime-local"].input-lg,
- input[type="month"].input-lg {
- line-height: 46px;
- }
-}
-.form-group {
- margin-bottom: 15px;
-}
-.radio,
-.checkbox {
- position: relative;
- display: block;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
- min-height: 20px;
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: normal;
- cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
- position: absolute;
- margin-left: -20px;
- margin-top: 4px \9;
-}
-.radio + .radio,
-.checkbox + .checkbox {
- margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
- display: inline-block;
- padding-left: 20px;
- margin-bottom: 0;
- vertical-align: middle;
- font-weight: normal;
- cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
- margin-top: 0;
- margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
- cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
- cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
- cursor: not-allowed;
-}
-.form-control-static {
- padding-top: 7px;
- padding-bottom: 7px;
- margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
- padding-left: 0;
- padding-right: 0;
-}
-.input-sm,
-.form-group-sm .form-control {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-select.input-sm,
-select.form-group-sm .form-control {
- height: 30px;
- line-height: 30px;
-}
-textarea.input-sm,
-textarea.form-group-sm .form-control,
-select[multiple].input-sm,
-select[multiple].form-group-sm .form-control {
- height: auto;
-}
-.input-lg,
-.form-group-lg .form-control {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
-}
-select.input-lg,
-select.form-group-lg .form-control {
- height: 46px;
- line-height: 46px;
-}
-textarea.input-lg,
-textarea.form-group-lg .form-control,
-select[multiple].input-lg,
-select[multiple].form-group-lg .form-control {
- height: auto;
-}
-.has-feedback {
- position: relative;
-}
-.has-feedback .form-control {
- padding-right: 42.5px;
-}
-.form-control-feedback {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 2;
- display: block;
- width: 34px;
- height: 34px;
- line-height: 34px;
- text-align: center;
- pointer-events: none;
-}
-.input-lg + .form-control-feedback {
- width: 46px;
- height: 46px;
- line-height: 46px;
-}
-.input-sm + .form-control-feedback {
- width: 30px;
- height: 30px;
- line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline,
-.has-success.radio label,
-.has-success.checkbox label,
-.has-success.radio-inline label,
-.has-success.checkbox-inline label {
- color: #3c763d;
-}
-.has-success .form-control {
- border-color: #3c763d;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-success .form-control:focus {
- border-color: #2b542c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
- color: #3c763d;
- border-color: #3c763d;
- background-color: #dff0d8;
-}
-.has-success .form-control-feedback {
- color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline,
-.has-warning.radio label,
-.has-warning.checkbox label,
-.has-warning.radio-inline label,
-.has-warning.checkbox-inline label {
- color: #8a6d3b;
-}
-.has-warning .form-control {
- border-color: #8a6d3b;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-warning .form-control:focus {
- border-color: #66512c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
- color: #8a6d3b;
- border-color: #8a6d3b;
- background-color: #fcf8e3;
-}
-.has-warning .form-control-feedback {
- color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline,
-.has-error.radio label,
-.has-error.checkbox label,
-.has-error.radio-inline label,
-.has-error.checkbox-inline label {
- color: #a94442;
-}
-.has-error .form-control {
- border-color: #a94442;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-error .form-control:focus {
- border-color: #843534;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
- color: #a94442;
- border-color: #a94442;
- background-color: #f2dede;
-}
-.has-error .form-control-feedback {
- color: #a94442;
-}
-.has-feedback label ~ .form-control-feedback {
- top: 25px;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
- top: 0;
-}
-.help-block {
- display: block;
- margin-top: 5px;
- margin-bottom: 10px;
- color: #737373;
-}
-@media (min-width: 768px) {
- .form-inline .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle;
- }
- .form-inline .form-control-static {
- display: inline-block;
- }
- .form-inline .input-group {
- display: inline-table;
- vertical-align: middle;
- }
- .form-inline .input-group .input-group-addon,
- .form-inline .input-group .input-group-btn,
- .form-inline .input-group .form-control {
- width: auto;
- }
- .form-inline .input-group > .form-control {
- width: 100%;
- }
- .form-inline .control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .radio,
- .form-inline .checkbox {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .radio label,
- .form-inline .checkbox label {
- padding-left: 0;
- }
- .form-inline .radio input[type="radio"],
- .form-inline .checkbox input[type="checkbox"] {
- position: relative;
- margin-left: 0;
- }
- .form-inline .has-feedback .form-control-feedback {
- top: 0;
- }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
- margin-top: 0;
- margin-bottom: 0;
- padding-top: 7px;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
- min-height: 27px;
-}
-.form-horizontal .form-group {
- margin-left: -15px;
- margin-right: -15px;
-}
-@media (min-width: 768px) {
- .form-horizontal .control-label {
- text-align: right;
- margin-bottom: 0;
- padding-top: 7px;
- }
-}
-.form-horizontal .has-feedback .form-control-feedback {
- right: 15px;
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-lg .control-label {
- padding-top: 14.3px;
- }
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-sm .control-label {
- padding-top: 6px;
- }
-}
-.btn {
- display: inline-block;
- margin-bottom: 0;
- font-weight: normal;
- text-align: center;
- vertical-align: middle;
- touch-action: manipulation;
- cursor: pointer;
- background-image: none;
- border: 1px solid transparent;
- white-space: nowrap;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.42857143;
- border-radius: 4px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn.active.focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus,
-.btn.focus {
- color: #333333;
- text-decoration: none;
-}
-.btn:active,
-.btn.active {
- outline: 0;
- background-image: none;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
- cursor: not-allowed;
- pointer-events: none;
- opacity: 0.65;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-.btn-default {
- color: #333333;
- background-color: #ffffff;
- border-color: #cccccc;
-}
-.btn-default:hover,
-.btn-default:focus,
-.btn-default.focus,
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
- color: #333333;
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
- background-image: none;
-}
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
- background-color: #ffffff;
- border-color: #cccccc;
-}
-.btn-default .badge {
- color: #ffffff;
- background-color: #333333;
-}
-.btn-primary {
- color: #ffffff;
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary.focus,
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
- color: #ffffff;
- background-color: #286090;
- border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
- background-image: none;
-}
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary .badge {
- color: #337ab7;
- background-color: #ffffff;
-}
-.btn-success {
- color: #ffffff;
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success.focus,
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
- color: #ffffff;
- background-color: #449d44;
- border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
- background-image: none;
-}
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success .badge {
- color: #5cb85c;
- background-color: #ffffff;
-}
-.btn-info {
- color: #ffffff;
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info.focus,
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
- color: #ffffff;
- background-color: #31b0d5;
- border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
- background-image: none;
-}
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info .badge {
- color: #5bc0de;
- background-color: #ffffff;
-}
-.btn-warning {
- color: #ffffff;
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning.focus,
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
- color: #ffffff;
- background-color: #ec971f;
- border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
- background-image: none;
-}
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning .badge {
- color: #f0ad4e;
- background-color: #ffffff;
-}
-.btn-danger {
- color: #ffffff;
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger.focus,
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
- color: #ffffff;
- background-color: #c9302c;
- border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
- background-image: none;
-}
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger .badge {
- color: #d9534f;
- background-color: #ffffff;
-}
-.btn-link {
- color: #337ab7;
- font-weight: normal;
- border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link.active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
- background-color: transparent;
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
- border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
- color: #23527c;
- text-decoration: underline;
- background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
- color: #777777;
- text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
- padding: 1px 5px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-block {
- display: block;
- width: 100%;
-}
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
- width: 100%;
-}
-.fade {
- opacity: 0;
- -webkit-transition: opacity 0.15s linear;
- -o-transition: opacity 0.15s linear;
- transition: opacity 0.15s linear;
-}
-.fade.in {
- opacity: 1;
-}
-.collapse {
- display: none;
- visibility: hidden;
-}
-.collapse.in {
- display: block;
- visibility: visible;
-}
-tr.collapse.in {
- display: table-row;
-}
-tbody.collapse.in {
- display: table-row-group;
-}
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- -webkit-transition-property: height, visibility;
- transition-property: height, visibility;
- -webkit-transition-duration: 0.35s;
- transition-duration: 0.35s;
- -webkit-transition-timing-function: ease;
- transition-timing-function: ease;
-}
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- margin-left: 2px;
- vertical-align: middle;
- border-top: 4px solid;
- border-right: 4px solid transparent;
- border-left: 4px solid transparent;
-}
-.dropdown {
- position: relative;
-}
-.dropdown-toggle:focus {
- outline: 0;
-}
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: 1000;
- display: none;
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0;
- list-style: none;
- font-size: 14px;
- text-align: left;
- background-color: #ffffff;
- border: 1px solid #cccccc;
- border: 1px solid rgba(0, 0, 0, 0.15);
- border-radius: 4px;
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
- background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
- right: 0;
- left: auto;
-}
-.dropdown-menu .divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: 1.42857143;
- color: #333333;
- white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
- text-decoration: none;
- color: #262626;
- background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
- color: #ffffff;
- text-decoration: none;
- outline: 0;
- background-color: #337ab7;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- color: #777777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- text-decoration: none;
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
- cursor: not-allowed;
-}
-.open > .dropdown-menu {
- display: block;
-}
-.open > a {
- outline: 0;
-}
-.dropdown-menu-right {
- left: auto;
- right: 0;
-}
-.dropdown-menu-left {
- left: 0;
- right: auto;
-}
-.dropdown-header {
- display: block;
- padding: 3px 20px;
- font-size: 12px;
- line-height: 1.42857143;
- color: #777777;
- white-space: nowrap;
-}
-.dropdown-backdrop {
- position: fixed;
- left: 0;
- right: 0;
- bottom: 0;
- top: 0;
- z-index: 990;
-}
-.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
- border-top: 0;
- border-bottom: 4px solid;
- content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 1px;
-}
-@media (min-width: 768px) {
- .navbar-right .dropdown-menu {
- left: auto;
- right: 0;
- }
- .navbar-right .dropdown-menu-left {
- left: 0;
- right: auto;
- }
-}
-.btn-group,
-.btn-group-vertical {
- position: relative;
- display: inline-block;
- vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
- position: relative;
- float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
- z-index: 2;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
- margin-left: -1px;
-}
-.btn-toolbar {
- margin-left: -5px;
-}
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
- float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
- margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0;
-}
-.btn-group > .btn:first-child {
- margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-bottom-right-radius: 0;
- border-top-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
-}
-.btn-group > .btn-group {
- float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
- border-bottom-right-radius: 0;
- border-top-right-radius: 0;
-}
-.btn-group > .btn-group:last-child > .btn:first-child {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
-}
-.btn-group.open .dropdown-toggle {
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-.btn .caret {
- margin-left: 0;
-}
-.btn-lg .caret {
- border-width: 5px 5px 0;
- border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
- border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
- float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
- margin-top: -1px;
- margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
- border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
- border-top-right-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
- border-bottom-left-radius: 4px;
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.btn-group-justified {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
- float: none;
- display: table-cell;
- width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
- width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
- left: auto;
-}
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
- position: absolute;
- clip: rect(0, 0, 0, 0);
- pointer-events: none;
-}
-.input-group {
- position: relative;
- display: table;
- border-collapse: separate;
-}
-.input-group[class*="col-"] {
- float: none;
- padding-left: 0;
- padding-right: 0;
-}
-.input-group .form-control {
- position: relative;
- z-index: 2;
- float: left;
- width: 100%;
- margin-bottom: 0;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
- height: 46px;
- line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
- height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
- height: 30px;
- line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
- height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
- display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
- border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
- width: 1%;
- white-space: nowrap;
- vertical-align: middle;
-}
-.input-group-addon {
- padding: 6px 12px;
- font-size: 14px;
- font-weight: normal;
- line-height: 1;
- color: #555555;
- text-align: center;
- background-color: #eeeeee;
- border: 1px solid #cccccc;
- border-radius: 4px;
-}
-.input-group-addon.input-sm {
- padding: 5px 10px;
- font-size: 12px;
- border-radius: 3px;
-}
-.input-group-addon.input-lg {
- padding: 10px 16px;
- font-size: 18px;
- border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
- margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
- border-bottom-right-radius: 0;
- border-top-right-radius: 0;
-}
-.input-group-addon:first-child {
- border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
- border-bottom-left-radius: 0;
- border-top-left-radius: 0;
-}
-.input-group-addon:last-child {
- border-left: 0;
-}
-.input-group-btn {
- position: relative;
- font-size: 0;
- white-space: nowrap;
-}
-.input-group-btn > .btn {
- position: relative;
-}
-.input-group-btn > .btn + .btn {
- margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
- z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
- margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
- margin-left: -1px;
-}
-.nav {
- margin-bottom: 0;
- padding-left: 0;
- list-style: none;
-}
-.nav > li {
- position: relative;
- display: block;
-}
-.nav > li > a {
- position: relative;
- display: block;
- padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
- text-decoration: none;
- background-color: #eeeeee;
-}
-.nav > li.disabled > a {
- color: #777777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
- color: #777777;
- text-decoration: none;
- background-color: transparent;
- cursor: not-allowed;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
- background-color: #eeeeee;
- border-color: #337ab7;
-}
-.nav .nav-divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5;
-}
-.nav > li > a > img {
- max-width: none;
-}
-.nav-tabs {
- border-bottom: 1px solid #dddddd;
-}
-.nav-tabs > li {
- float: left;
- margin-bottom: -1px;
-}
-.nav-tabs > li > a {
- margin-right: 2px;
- line-height: 1.42857143;
- border: 1px solid transparent;
- border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
- border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
- color: #555555;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-bottom-color: transparent;
- cursor: default;
-}
-.nav-tabs.nav-justified {
- width: 100%;
- border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
- float: none;
-}
-.nav-tabs.nav-justified > li > a {
- text-align: center;
- margin-bottom: 5px;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
- top: auto;
- left: auto;
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified > li {
- display: table-cell;
- width: 1%;
- }
- .nav-tabs.nav-justified > li > a {
- margin-bottom: 0;
- }
-}
-.nav-tabs.nav-justified > li > a {
- margin-right: 0;
- border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
- border: 1px solid #dddddd;
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified > li > a {
- border-bottom: 1px solid #dddddd;
- border-radius: 4px 4px 0 0;
- }
- .nav-tabs.nav-justified > .active > a,
- .nav-tabs.nav-justified > .active > a:hover,
- .nav-tabs.nav-justified > .active > a:focus {
- border-bottom-color: #ffffff;
- }
-}
-.nav-pills > li {
- float: left;
-}
-.nav-pills > li > a {
- border-radius: 4px;
-}
-.nav-pills > li + li {
- margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
- color: #ffffff;
- background-color: #337ab7;
-}
-.nav-stacked > li {
- float: none;
-}
-.nav-stacked > li + li {
- margin-top: 2px;
- margin-left: 0;
-}
-.nav-justified {
- width: 100%;
-}
-.nav-justified > li {
- float: none;
-}
-.nav-justified > li > a {
- text-align: center;
- margin-bottom: 5px;
-}
-.nav-justified > .dropdown .dropdown-menu {
- top: auto;
- left: auto;
-}
-@media (min-width: 768px) {
- .nav-justified > li {
- display: table-cell;
- width: 1%;
- }
- .nav-justified > li > a {
- margin-bottom: 0;
- }
-}
-.nav-tabs-justified {
- border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
- margin-right: 0;
- border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
- border: 1px solid #dddddd;
-}
-@media (min-width: 768px) {
- .nav-tabs-justified > li > a {
- border-bottom: 1px solid #dddddd;
- border-radius: 4px 4px 0 0;
- }
- .nav-tabs-justified > .active > a,
- .nav-tabs-justified > .active > a:hover,
- .nav-tabs-justified > .active > a:focus {
- border-bottom-color: #ffffff;
- }
-}
-.tab-content > .tab-pane {
- display: none;
- visibility: hidden;
-}
-.tab-content > .active {
- display: block;
- visibility: visible;
-}
-.nav-tabs .dropdown-menu {
- margin-top: -1px;
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.navbar {
- position: relative;
- min-height: 70px;
- margin-bottom: 20px;
- border: 1px solid transparent;
-}
-@media (min-width: 768px) {
- .navbar {
- border-radius: 4px;
- }
-}
-@media (min-width: 768px) {
- .navbar-header {
- float: left;
- }
-}
-.navbar-collapse {
- overflow-x: visible;
- padding-right: 15px;
- padding-left: 15px;
- border-top: 1px solid transparent;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
- -webkit-overflow-scrolling: touch;
-}
-.navbar-collapse.in {
- overflow-y: auto;
-}
-@media (min-width: 768px) {
- .navbar-collapse {
- width: auto;
- border-top: 0;
- box-shadow: none;
- }
- .navbar-collapse.collapse {
- display: block !important;
- visibility: visible !important;
- height: auto !important;
- padding-bottom: 0;
- overflow: visible !important;
- }
- .navbar-collapse.in {
- overflow-y: visible;
- }
- .navbar-fixed-top .navbar-collapse,
- .navbar-static-top .navbar-collapse,
- .navbar-fixed-bottom .navbar-collapse {
- padding-left: 0;
- padding-right: 0;
- }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
- max-height: 340px;
-}
-@media (max-device-width: 480px) and (orientation: landscape) {
- .navbar-fixed-top .navbar-collapse,
- .navbar-fixed-bottom .navbar-collapse {
- max-height: 200px;
- }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
- margin-right: -15px;
- margin-left: -15px;
-}
-@media (min-width: 768px) {
- .container > .navbar-header,
- .container-fluid > .navbar-header,
- .container > .navbar-collapse,
- .container-fluid > .navbar-collapse {
- margin-right: 0;
- margin-left: 0;
- }
-}
-.navbar-static-top {
- z-index: 1000;
- border-width: 0 0 1px;
-}
-@media (min-width: 768px) {
- .navbar-static-top {
- border-radius: 0;
- }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- z-index: 1030;
-}
-@media (min-width: 768px) {
- .navbar-fixed-top,
- .navbar-fixed-bottom {
- border-radius: 0;
- }
-}
-.navbar-fixed-top {
- top: 0;
- border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
- bottom: 0;
- margin-bottom: 0;
- border-width: 1px 0 0;
-}
-.navbar-brand {
- float: left;
- padding: 25px 15px;
- font-size: 18px;
- line-height: 20px;
- height: 70px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
- text-decoration: none;
-}
-.navbar-brand > img {
- display: block;
-}
-@media (min-width: 768px) {
- .navbar > .container .navbar-brand,
- .navbar > .container-fluid .navbar-brand {
- margin-left: -15px;
- }
-}
-.navbar-toggle {
- position: relative;
- float: right;
- margin-right: 15px;
- padding: 9px 10px;
- margin-top: 18px;
- margin-bottom: 18px;
- background-color: transparent;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.navbar-toggle:focus {
- outline: 0;
-}
-.navbar-toggle .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
- margin-top: 4px;
-}
-@media (min-width: 768px) {
- .navbar-toggle {
- display: none;
- }
-}
-.navbar-nav {
- margin: 12.5px -15px;
-}
-.navbar-nav > li > a {
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: 20px;
-}
-@media (max-width: 767px) {
- .navbar-nav .open .dropdown-menu {
- position: static;
- float: none;
- width: auto;
- margin-top: 0;
- background-color: transparent;
- border: 0;
- box-shadow: none;
- }
- .navbar-nav .open .dropdown-menu > li > a,
- .navbar-nav .open .dropdown-menu .dropdown-header {
- padding: 5px 15px 5px 25px;
- }
- .navbar-nav .open .dropdown-menu > li > a {
- line-height: 20px;
- }
- .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-nav .open .dropdown-menu > li > a:focus {
- background-image: none;
- }
-}
-@media (min-width: 768px) {
- .navbar-nav {
- float: left;
- margin: 0;
- }
- .navbar-nav > li {
- float: left;
- }
- .navbar-nav > li > a {
- padding-top: 25px;
- padding-bottom: 25px;
- }
-}
-.navbar-form {
- margin-left: -15px;
- margin-right: -15px;
- padding: 10px 15px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- margin-top: 18px;
- margin-bottom: 18px;
-}
-@media (min-width: 768px) {
- .navbar-form .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle;
- }
- .navbar-form .form-control-static {
- display: inline-block;
- }
- .navbar-form .input-group {
- display: inline-table;
- vertical-align: middle;
- }
- .navbar-form .input-group .input-group-addon,
- .navbar-form .input-group .input-group-btn,
- .navbar-form .input-group .form-control {
- width: auto;
- }
- .navbar-form .input-group > .form-control {
- width: 100%;
- }
- .navbar-form .control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .radio,
- .navbar-form .checkbox {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .radio label,
- .navbar-form .checkbox label {
- padding-left: 0;
- }
- .navbar-form .radio input[type="radio"],
- .navbar-form .checkbox input[type="checkbox"] {
- position: relative;
- margin-left: 0;
- }
- .navbar-form .has-feedback .form-control-feedback {
- top: 0;
- }
-}
-@media (max-width: 767px) {
- .navbar-form .form-group {
- margin-bottom: 5px;
- }
- .navbar-form .form-group:last-child {
- margin-bottom: 0;
- }
-}
-@media (min-width: 768px) {
- .navbar-form {
- width: auto;
- border: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 0;
- padding-bottom: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
-}
-.navbar-nav > li > .dropdown-menu {
- margin-top: 0;
- border-top-right-radius: 0;
- border-top-left-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.navbar-btn {
- margin-top: 18px;
- margin-bottom: 18px;
-}
-.navbar-btn.btn-sm {
- margin-top: 20px;
- margin-bottom: 20px;
-}
-.navbar-btn.btn-xs {
- margin-top: 24px;
- margin-bottom: 24px;
-}
-.navbar-text {
- margin-top: 25px;
- margin-bottom: 25px;
-}
-@media (min-width: 768px) {
- .navbar-text {
- float: left;
- margin-left: 15px;
- margin-right: 15px;
- }
-}
-@media (min-width: 768px) {
- .navbar-left {
- float: left !important;
- }
- .navbar-right {
- float: right !important;
- margin-right: -15px;
- }
- .navbar-right ~ .navbar-right {
- margin-right: 0;
- }
-}
-.navbar-default {
- background-color: #f8f8f8;
- border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
- color: #777777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
- color: #5e5e5e;
- background-color: transparent;
-}
-.navbar-default .navbar-text {
- color: #777777;
-}
-.navbar-default .navbar-nav > li > a {
- color: #777777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
- color: #333333;
- background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
- color: #555555;
- background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
- color: #cccccc;
- background-color: transparent;
-}
-.navbar-default .navbar-toggle {
- border-color: #dddddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
- background-color: #dddddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
- background-color: #888888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
- border-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
- background-color: #e7e7e7;
- color: #555555;
-}
-@media (max-width: 767px) {
- .navbar-default .navbar-nav .open .dropdown-menu > li > a {
- color: #777777;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #333333;
- background-color: transparent;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #555555;
- background-color: #e7e7e7;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #cccccc;
- background-color: transparent;
- }
-}
-.navbar-default .navbar-link {
- color: #777777;
-}
-.navbar-default .navbar-link:hover {
- color: #333333;
-}
-.navbar-default .btn-link {
- color: #777777;
-}
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
- color: #333333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
- color: #cccccc;
-}
-.navbar-inverse {
- background-color: #222222;
- border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
- color: #ffffff;
- background-color: transparent;
-}
-.navbar-inverse .navbar-text {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
- color: #ffffff;
- background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
- color: #ffffff;
- background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
- color: #444444;
- background-color: transparent;
-}
-.navbar-inverse .navbar-toggle {
- border-color: #333333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
- background-color: #333333;
-}
-.navbar-inverse .navbar-toggle .icon-bar {
- background-color: #ffffff;
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
- border-color: #101010;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
- background-color: #080808;
- color: #ffffff;
-}
-@media (max-width: 767px) {
- .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
- border-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
- background-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
- color: #9d9d9d;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #ffffff;
- background-color: transparent;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #ffffff;
- background-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #444444;
- background-color: transparent;
- }
-}
-.navbar-inverse .navbar-link {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-link:hover {
- color: #ffffff;
-}
-.navbar-inverse .btn-link {
- color: #9d9d9d;
-}
-.navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link:focus {
- color: #ffffff;
-}
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-inverse .btn-link:focus {
- color: #444444;
-}
-.breadcrumb {
- padding: 8px 15px;
- margin-bottom: 20px;
- list-style: none;
- background-color: #f5f5f5;
- border-radius: 4px;
-}
-.breadcrumb > li {
- display: inline-block;
-}
-.breadcrumb > li + li:before {
- content: "/\00a0";
- padding: 0 5px;
- color: #cccccc;
-}
-.breadcrumb > .active {
- color: #777777;
-}
-.pagination {
- display: inline-block;
- padding-left: 0;
- margin: 20px 0;
- border-radius: 4px;
-}
-.pagination > li {
- display: inline;
-}
-.pagination > li > a,
-.pagination > li > span {
- position: relative;
- float: left;
- padding: 6px 12px;
- line-height: 1.42857143;
- text-decoration: none;
- color: #337ab7;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- margin-left: -1px;
-}
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
- margin-left: 0;
- border-bottom-left-radius: 4px;
- border-top-left-radius: 4px;
-}
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
- border-bottom-right-radius: 4px;
- border-top-right-radius: 4px;
-}
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
- color: #23527c;
- background-color: #eeeeee;
- border-color: #dddddd;
-}
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
- z-index: 2;
- color: #ffffff;
- background-color: #337ab7;
- border-color: #337ab7;
- cursor: default;
-}
-.pagination > .disabled > span,
-.pagination > .disabled > span:hover,
-.pagination > .disabled > span:focus,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
- color: #777777;
- background-color: #ffffff;
- border-color: #dddddd;
- cursor: not-allowed;
-}
-.pagination-lg > li > a,
-.pagination-lg > li > span {
- padding: 10px 16px;
- font-size: 18px;
-}
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
- border-bottom-left-radius: 6px;
- border-top-left-radius: 6px;
-}
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
- border-bottom-right-radius: 6px;
- border-top-right-radius: 6px;
-}
-.pagination-sm > li > a,
-.pagination-sm > li > span {
- padding: 5px 10px;
- font-size: 12px;
-}
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
- border-bottom-left-radius: 3px;
- border-top-left-radius: 3px;
-}
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
- border-bottom-right-radius: 3px;
- border-top-right-radius: 3px;
-}
-.pager {
- padding-left: 0;
- margin: 20px 0;
- list-style: none;
- text-align: center;
-}
-.pager li {
- display: inline;
-}
-.pager li > a,
-.pager li > span {
- display: inline-block;
- padding: 5px 14px;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-radius: 15px;
-}
-.pager li > a:hover,
-.pager li > a:focus {
- text-decoration: none;
- background-color: #eeeeee;
-}
-.pager .next > a,
-.pager .next > span {
- float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
- float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
- color: #777777;
- background-color: #ffffff;
- cursor: not-allowed;
-}
-.label {
- display: inline;
- padding: .2em .6em .3em;
- font-size: 75%;
- font-weight: bold;
- line-height: 1;
- color: #ffffff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- border-radius: .25em;
-}
-a.label:hover,
-a.label:focus {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
-}
-.label:empty {
- display: none;
-}
-.btn .label {
- position: relative;
- top: -1px;
-}
-.label-default {
- background-color: #777777;
-}
-.label-default[href]:hover,
-.label-default[href]:focus {
- background-color: #5e5e5e;
-}
-.label-primary {
- background-color: #337ab7;
-}
-.label-primary[href]:hover,
-.label-primary[href]:focus {
- background-color: #286090;
-}
-.label-success {
- background-color: #5cb85c;
-}
-.label-success[href]:hover,
-.label-success[href]:focus {
- background-color: #449d44;
-}
-.label-info {
- background-color: #5bc0de;
-}
-.label-info[href]:hover,
-.label-info[href]:focus {
- background-color: #31b0d5;
-}
-.label-warning {
- background-color: #f0ad4e;
-}
-.label-warning[href]:hover,
-.label-warning[href]:focus {
- background-color: #ec971f;
-}
-.label-danger {
- background-color: #d9534f;
-}
-.label-danger[href]:hover,
-.label-danger[href]:focus {
- background-color: #c9302c;
-}
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
- color: #ffffff;
- line-height: 1;
- vertical-align: baseline;
- white-space: nowrap;
- text-align: center;
- background-color: #777777;
- border-radius: 10px;
-}
-.badge:empty {
- display: none;
-}
-.btn .badge {
- position: relative;
- top: -1px;
-}
-.btn-xs .badge {
- top: 0;
- padding: 1px 5px;
-}
-a.badge:hover,
-a.badge:focus {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
-}
-.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
- color: #337ab7;
- background-color: #ffffff;
-}
-.list-group-item > .badge {
- float: right;
-}
-.list-group-item > .badge + .badge {
- margin-right: 5px;
-}
-.nav-pills > li > a > .badge {
- margin-left: 3px;
-}
-.jumbotron {
- padding: 30px 15px;
- margin-bottom: 30px;
- color: inherit;
- background-color: #eeeeee;
-}
-.jumbotron h1,
-.jumbotron .h1 {
- color: inherit;
-}
-.jumbotron p {
- margin-bottom: 15px;
- font-size: 21px;
- font-weight: 200;
-}
-.jumbotron > hr {
- border-top-color: #d5d5d5;
-}
-.container .jumbotron,
-.container-fluid .jumbotron {
- border-radius: 6px;
-}
-.jumbotron .container {
- max-width: 100%;
-}
-@media screen and (min-width: 768px) {
- .jumbotron {
- padding: 48px 0;
- }
- .container .jumbotron,
- .container-fluid .jumbotron {
- padding-left: 60px;
- padding-right: 60px;
- }
- .jumbotron h1,
- .jumbotron .h1 {
- font-size: 63px;
- }
-}
-.thumbnail {
- display: block;
- padding: 4px;
- margin-bottom: 20px;
- line-height: 1.42857143;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-radius: 4px;
- -webkit-transition: border 0.2s ease-in-out;
- -o-transition: border 0.2s ease-in-out;
- transition: border 0.2s ease-in-out;
-}
-.thumbnail > img,
-.thumbnail a > img {
- margin-left: auto;
- margin-right: auto;
-}
-a.thumbnail:hover,
-a.thumbnail:focus,
-a.thumbnail.active {
- border-color: #337ab7;
-}
-.thumbnail .caption {
- padding: 9px;
- color: #333333;
-}
-.alert {
- padding: 15px;
- margin-bottom: 20px;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.alert h4 {
- margin-top: 0;
- color: inherit;
-}
-.alert .alert-link {
- font-weight: bold;
-}
-.alert > p,
-.alert > ul {
- margin-bottom: 0;
-}
-.alert > p + p {
- margin-top: 5px;
-}
-.alert-dismissable,
-.alert-dismissible {
- padding-right: 35px;
-}
-.alert-dismissable .close,
-.alert-dismissible .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit;
-}
-.alert-success {
- background-color: #dff0d8;
- border-color: #d6e9c6;
- color: #3c763d;
-}
-.alert-success hr {
- border-top-color: #c9e2b3;
-}
-.alert-success .alert-link {
- color: #2b542c;
-}
-.alert-info {
- background-color: #d9edf7;
- border-color: #bce8f1;
- color: #31708f;
-}
-.alert-info hr {
- border-top-color: #a6e1ec;
-}
-.alert-info .alert-link {
- color: #245269;
-}
-.alert-warning {
- background-color: #fcf8e3;
- border-color: #faebcc;
- color: #8a6d3b;
-}
-.alert-warning hr {
- border-top-color: #f7e1b5;
-}
-.alert-warning .alert-link {
- color: #66512c;
-}
-.alert-danger {
- background-color: #f2dede;
- border-color: #ebccd1;
- color: #a94442;
-}
-.alert-danger hr {
- border-top-color: #e4b9c0;
-}
-.alert-danger .alert-link {
- color: #843534;
-}
-@-webkit-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
-}
-@keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
-}
-.progress {
- overflow: hidden;
- height: 20px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-.progress-bar {
- float: left;
- width: 0%;
- height: 100%;
- font-size: 12px;
- line-height: 20px;
- color: #ffffff;
- text-align: center;
- background-color: #337ab7;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- -webkit-transition: width 0.6s ease;
- -o-transition: width 0.6s ease;
- transition: width 0.6s ease;
-}
-.progress-striped .progress-bar,
-.progress-bar-striped {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-size: 40px 40px;
-}
-.progress.active .progress-bar,
-.progress-bar.active {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-bar-success {
- background-color: #5cb85c;
-}
-.progress-striped .progress-bar-success {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-info {
- background-color: #5bc0de;
-}
-.progress-striped .progress-bar-info {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-warning {
- background-color: #f0ad4e;
-}
-.progress-striped .progress-bar-warning {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-danger {
- background-color: #d9534f;
-}
-.progress-striped .progress-bar-danger {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.media {
- margin-top: 15px;
-}
-.media:first-child {
- margin-top: 0;
-}
-.media-right,
-.media > .pull-right {
- padding-left: 10px;
-}
-.media-left,
-.media > .pull-left {
- padding-right: 10px;
-}
-.media-left,
-.media-right,
-.media-body {
- display: table-cell;
- vertical-align: top;
-}
-.media-middle {
- vertical-align: middle;
-}
-.media-bottom {
- vertical-align: bottom;
-}
-.media-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-.media-list {
- padding-left: 0;
- list-style: none;
-}
-.list-group {
- margin-bottom: 20px;
- padding-left: 0;
-}
-.list-group-item {
- position: relative;
- display: block;
- padding: 10px 15px;
- margin-bottom: -1px;
- background-color: #ffffff;
- border: 1px solid #dddddd;
-}
-.list-group-item:first-child {
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
-}
-.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 4px;
- border-bottom-left-radius: 4px;
-}
-a.list-group-item {
- color: #555555;
-}
-a.list-group-item .list-group-item-heading {
- color: #333333;
-}
-a.list-group-item:hover,
-a.list-group-item:focus {
- text-decoration: none;
- color: #555555;
- background-color: #f5f5f5;
-}
-.list-group-item.disabled,
-.list-group-item.disabled:hover,
-.list-group-item.disabled:focus {
- background-color: #eeeeee;
- color: #777777;
- cursor: not-allowed;
-}
-.list-group-item.disabled .list-group-item-heading,
-.list-group-item.disabled:hover .list-group-item-heading,
-.list-group-item.disabled:focus .list-group-item-heading {
- color: inherit;
-}
-.list-group-item.disabled .list-group-item-text,
-.list-group-item.disabled:hover .list-group-item-text,
-.list-group-item.disabled:focus .list-group-item-text {
- color: #777777;
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
- z-index: 2;
- color: #ffffff;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading,
-.list-group-item.active .list-group-item-heading > small,
-.list-group-item.active:hover .list-group-item-heading > small,
-.list-group-item.active:focus .list-group-item-heading > small,
-.list-group-item.active .list-group-item-heading > .small,
-.list-group-item.active:hover .list-group-item-heading > .small,
-.list-group-item.active:focus .list-group-item-heading > .small {
- color: inherit;
-}
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
- color: #c7ddef;
-}
-.list-group-item-success {
- color: #3c763d;
- background-color: #dff0d8;
-}
-a.list-group-item-success {
- color: #3c763d;
-}
-a.list-group-item-success .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-success:hover,
-a.list-group-item-success:focus {
- color: #3c763d;
- background-color: #d0e9c6;
-}
-a.list-group-item-success.active,
-a.list-group-item-success.active:hover,
-a.list-group-item-success.active:focus {
- color: #fff;
- background-color: #3c763d;
- border-color: #3c763d;
-}
-.list-group-item-info {
- color: #31708f;
- background-color: #d9edf7;
-}
-a.list-group-item-info {
- color: #31708f;
-}
-a.list-group-item-info .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-info:hover,
-a.list-group-item-info:focus {
- color: #31708f;
- background-color: #c4e3f3;
-}
-a.list-group-item-info.active,
-a.list-group-item-info.active:hover,
-a.list-group-item-info.active:focus {
- color: #fff;
- background-color: #31708f;
- border-color: #31708f;
-}
-.list-group-item-warning {
- color: #8a6d3b;
- background-color: #fcf8e3;
-}
-a.list-group-item-warning {
- color: #8a6d3b;
-}
-a.list-group-item-warning .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-warning:hover,
-a.list-group-item-warning:focus {
- color: #8a6d3b;
- background-color: #faf2cc;
-}
-a.list-group-item-warning.active,
-a.list-group-item-warning.active:hover,
-a.list-group-item-warning.active:focus {
- color: #fff;
- background-color: #8a6d3b;
- border-color: #8a6d3b;
-}
-.list-group-item-danger {
- color: #a94442;
- background-color: #f2dede;
-}
-a.list-group-item-danger {
- color: #a94442;
-}
-a.list-group-item-danger .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-danger:hover,
-a.list-group-item-danger:focus {
- color: #a94442;
- background-color: #ebcccc;
-}
-a.list-group-item-danger.active,
-a.list-group-item-danger.active:hover,
-a.list-group-item-danger.active:focus {
- color: #fff;
- background-color: #a94442;
- border-color: #a94442;
-}
-.list-group-item-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-.list-group-item-text {
- margin-bottom: 0;
- line-height: 1.3;
-}
-.panel {
- margin-bottom: 20px;
- background-color: #ffffff;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.panel-body {
- padding: 15px;
-}
-.panel-heading {
- padding: 10px 15px;
- border-bottom: 1px solid transparent;
- border-top-right-radius: 3px;
- border-top-left-radius: 3px;
-}
-.panel-heading > .dropdown .dropdown-toggle {
- color: inherit;
-}
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 16px;
- color: inherit;
-}
-.panel-title > a {
- color: inherit;
-}
-.panel-footer {
- padding: 10px 15px;
- background-color: #f5f5f5;
- border-top: 1px solid #dddddd;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .list-group,
-.panel > .panel-collapse > .list-group {
- margin-bottom: 0;
-}
-.panel > .list-group .list-group-item,
-.panel > .panel-collapse > .list-group .list-group-item {
- border-width: 1px 0;
- border-radius: 0;
-}
-.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
- border-top: 0;
- border-top-right-radius: 3px;
- border-top-left-radius: 3px;
-}
-.panel > .list-group:last-child .list-group-item:last-child,
-.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
- border-bottom: 0;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel-heading + .list-group .list-group-item:first-child {
- border-top-width: 0;
-}
-.list-group + .panel-footer {
- border-top-width: 0;
-}
-.panel > .table,
-.panel > .table-responsive > .table,
-.panel > .panel-collapse > .table {
- margin-bottom: 0;
-}
-.panel > .table caption,
-.panel > .table-responsive > .table caption,
-.panel > .panel-collapse > .table caption {
- padding-left: 15px;
- padding-right: 15px;
-}
-.panel > .table:first-child,
-.panel > .table-responsive:first-child > .table:first-child {
- border-top-right-radius: 3px;
- border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
- border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
- border-top-right-radius: 3px;
-}
-.panel > .table:last-child,
-.panel > .table-responsive:last-child > .table:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
- border-bottom-left-radius: 3px;
- border-bottom-right-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
- border-bottom-right-radius: 3px;
-}
-.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive,
-.panel > .table + .panel-body,
-.panel > .table-responsive + .panel-body {
- border-top: 1px solid #dddddd;
-}
-.panel > .table > tbody:first-child > tr:first-child th,
-.panel > .table > tbody:first-child > tr:first-child td {
- border-top: 0;
-}
-.panel > .table-bordered,
-.panel > .table-responsive > .table-bordered {
- border: 0;
-}
-.panel > .table-bordered > thead > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-.panel > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-bordered > thead > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-.panel > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-bordered > tfoot > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
-}
-.panel > .table-bordered > thead > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-.panel > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-bordered > thead > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-.panel > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-bordered > tfoot > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
-}
-.panel > .table-bordered > thead > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-.panel > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-bordered > thead > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-.panel > .table-bordered > tbody > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
- border-bottom: 0;
-}
-.panel > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-bordered > tfoot > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
- border-bottom: 0;
-}
-.panel > .table-responsive {
- border: 0;
- margin-bottom: 0;
-}
-.panel-group {
- margin-bottom: 20px;
-}
-.panel-group .panel {
- margin-bottom: 0;
- border-radius: 4px;
-}
-.panel-group .panel + .panel {
- margin-top: 5px;
-}
-.panel-group .panel-heading {
- border-bottom: 0;
-}
-.panel-group .panel-heading + .panel-collapse > .panel-body,
-.panel-group .panel-heading + .panel-collapse > .list-group {
- border-top: 1px solid #dddddd;
-}
-.panel-group .panel-footer {
- border-top: 0;
-}
-.panel-group .panel-footer + .panel-collapse .panel-body {
- border-bottom: 1px solid #dddddd;
-}
-.panel-default {
- border-color: #dddddd;
-}
-.panel-default > .panel-heading {
- color: #333333;
- background-color: #f5f5f5;
- border-color: #dddddd;
-}
-.panel-default > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #dddddd;
-}
-.panel-default > .panel-heading .badge {
- color: #f5f5f5;
- background-color: #333333;
-}
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #dddddd;
-}
-.panel-primary {
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading {
- color: #ffffff;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #337ab7;
-}
-.panel-primary > .panel-heading .badge {
- color: #337ab7;
- background-color: #ffffff;
-}
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #337ab7;
-}
-.panel-success {
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #d6e9c6;
-}
-.panel-success > .panel-heading .badge {
- color: #dff0d8;
- background-color: #3c763d;
-}
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #d6e9c6;
-}
-.panel-info {
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #bce8f1;
-}
-.panel-info > .panel-heading .badge {
- color: #d9edf7;
- background-color: #31708f;
-}
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #bce8f1;
-}
-.panel-warning {
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #faebcc;
-}
-.panel-warning > .panel-heading .badge {
- color: #fcf8e3;
- background-color: #8a6d3b;
-}
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #faebcc;
-}
-.panel-danger {
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #ebccd1;
-}
-.panel-danger > .panel-heading .badge {
- color: #f2dede;
- background-color: #a94442;
-}
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #ebccd1;
-}
-.embed-responsive {
- position: relative;
- display: block;
- height: 0;
- padding: 0;
- overflow: hidden;
-}
-.embed-responsive .embed-responsive-item,
-.embed-responsive iframe,
-.embed-responsive embed,
-.embed-responsive object,
-.embed-responsive video {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- height: 100%;
- width: 100%;
- border: 0;
-}
-.embed-responsive.embed-responsive-16by9 {
- padding-bottom: 56.25%;
-}
-.embed-responsive.embed-responsive-4by3 {
- padding-bottom: 75%;
-}
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #e3e3e3;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
- border-color: #ddd;
- border-color: rgba(0, 0, 0, 0.15);
-}
-.well-lg {
- padding: 24px;
- border-radius: 6px;
-}
-.well-sm {
- padding: 9px;
- border-radius: 3px;
-}
-.close {
- float: right;
- font-size: 21px;
- font-weight: bold;
- line-height: 1;
- color: #000000;
- text-shadow: 0 1px 0 #ffffff;
- opacity: 0.2;
- filter: alpha(opacity=20);
-}
-.close:hover,
-.close:focus {
- color: #000000;
- text-decoration: none;
- cursor: pointer;
- opacity: 0.5;
- filter: alpha(opacity=50);
-}
-button.close {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
-}
-.modal-open {
- overflow: hidden;
-}
-.modal {
- display: none;
- overflow: hidden;
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- -webkit-overflow-scrolling: touch;
- outline: 0;
-}
-.modal.fade .modal-dialog {
- -webkit-transform: translate(0, -25%);
- -ms-transform: translate(0, -25%);
- -o-transform: translate(0, -25%);
- transform: translate(0, -25%);
- -webkit-transition: -webkit-transform 0.3s ease-out;
- -moz-transition: -moz-transform 0.3s ease-out;
- -o-transition: -o-transform 0.3s ease-out;
- transition: transform 0.3s ease-out;
-}
-.modal.in .modal-dialog {
- -webkit-transform: translate(0, 0);
- -ms-transform: translate(0, 0);
- -o-transform: translate(0, 0);
- transform: translate(0, 0);
-}
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: auto;
-}
-.modal-dialog {
- position: relative;
- width: auto;
- margin: 10px;
-}
-.modal-content {
- position: relative;
- background-color: #ffffff;
- border: 1px solid #999999;
- border: 1px solid rgba(0, 0, 0, 0.2);
- border-radius: 6px;
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
- box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
- background-clip: padding-box;
- outline: 0;
-}
-.modal-backdrop {
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- background-color: #000000;
-}
-.modal-backdrop.fade {
- opacity: 0;
- filter: alpha(opacity=0);
-}
-.modal-backdrop.in {
- opacity: 0.5;
- filter: alpha(opacity=50);
-}
-.modal-header {
- padding: 15px;
- border-bottom: 1px solid #e5e5e5;
- min-height: 16.42857143px;
-}
-.modal-header .close {
- margin-top: -2px;
-}
-.modal-title {
- margin: 0;
- line-height: 1.42857143;
-}
-.modal-body {
- position: relative;
- padding: 15px;
-}
-.modal-footer {
- padding: 15px;
- text-align: right;
- border-top: 1px solid #e5e5e5;
-}
-.modal-footer .btn + .btn {
- margin-left: 5px;
- margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
- margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
- margin-left: 0;
-}
-.modal-scrollbar-measure {
- position: absolute;
- top: -9999px;
- width: 50px;
- height: 50px;
- overflow: scroll;
-}
-@media (min-width: 768px) {
- .modal-dialog {
- width: 600px;
- margin: 30px auto;
- }
- .modal-content {
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
- }
- .modal-sm {
- width: 300px;
- }
-}
-@media (min-width: 992px) {
- .modal-lg {
- width: 900px;
- }
-}
-.tooltip {
- position: absolute;
- z-index: 1070;
- display: block;
- visibility: visible;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 12px;
- font-weight: normal;
- line-height: 1.4;
- opacity: 0;
- filter: alpha(opacity=0);
-}
-.tooltip.in {
- opacity: 0.9;
- filter: alpha(opacity=90);
-}
-.tooltip.top {
- margin-top: -3px;
- padding: 5px 0;
-}
-.tooltip.right {
- margin-left: 3px;
- padding: 0 5px;
-}
-.tooltip.bottom {
- margin-top: 3px;
- padding: 5px 0;
-}
-.tooltip.left {
- margin-left: -3px;
- padding: 0 5px;
-}
-.tooltip-inner {
- max-width: 200px;
- padding: 3px 8px;
- color: #ffffff;
- text-align: center;
- text-decoration: none;
- background-color: #000000;
- border-radius: 4px;
-}
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.tooltip.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000000;
-}
-.tooltip.top-left .tooltip-arrow {
- bottom: 0;
- right: 5px;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000000;
-}
-.tooltip.top-right .tooltip-arrow {
- bottom: 0;
- left: 5px;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000000;
-}
-.tooltip.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -5px;
- border-width: 5px 5px 5px 0;
- border-right-color: #000000;
-}
-.tooltip.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -5px;
- border-width: 5px 0 5px 5px;
- border-left-color: #000000;
-}
-.tooltip.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000000;
-}
-.tooltip.bottom-left .tooltip-arrow {
- top: 0;
- right: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000000;
-}
-.tooltip.bottom-right .tooltip-arrow {
- top: 0;
- left: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000000;
-}
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 1060;
- display: none;
- max-width: 276px;
- padding: 1px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- font-weight: normal;
- line-height: 1.42857143;
- text-align: left;
- background-color: #ffffff;
- background-clip: padding-box;
- border: 1px solid #cccccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- white-space: normal;
-}
-.popover.top {
- margin-top: -10px;
-}
-.popover.right {
- margin-left: 10px;
-}
-.popover.bottom {
- margin-top: 10px;
-}
-.popover.left {
- margin-left: -10px;
-}
-.popover-title {
- margin: 0;
- padding: 8px 14px;
- font-size: 14px;
- background-color: #f7f7f7;
- border-bottom: 1px solid #ebebeb;
- border-radius: 5px 5px 0 0;
-}
-.popover-content {
- padding: 9px 14px;
-}
-.popover > .arrow,
-.popover > .arrow:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.popover > .arrow {
- border-width: 11px;
-}
-.popover > .arrow:after {
- border-width: 10px;
- content: "";
-}
-.popover.top > .arrow {
- left: 50%;
- margin-left: -11px;
- border-bottom-width: 0;
- border-top-color: #999999;
- border-top-color: rgba(0, 0, 0, 0.25);
- bottom: -11px;
-}
-.popover.top > .arrow:after {
- content: " ";
- bottom: 1px;
- margin-left: -10px;
- border-bottom-width: 0;
- border-top-color: #ffffff;
-}
-.popover.right > .arrow {
- top: 50%;
- left: -11px;
- margin-top: -11px;
- border-left-width: 0;
- border-right-color: #999999;
- border-right-color: rgba(0, 0, 0, 0.25);
-}
-.popover.right > .arrow:after {
- content: " ";
- left: 1px;
- bottom: -10px;
- border-left-width: 0;
- border-right-color: #ffffff;
-}
-.popover.bottom > .arrow {
- left: 50%;
- margin-left: -11px;
- border-top-width: 0;
- border-bottom-color: #999999;
- border-bottom-color: rgba(0, 0, 0, 0.25);
- top: -11px;
-}
-.popover.bottom > .arrow:after {
- content: " ";
- top: 1px;
- margin-left: -10px;
- border-top-width: 0;
- border-bottom-color: #ffffff;
-}
-.popover.left > .arrow {
- top: 50%;
- right: -11px;
- margin-top: -11px;
- border-right-width: 0;
- border-left-color: #999999;
- border-left-color: rgba(0, 0, 0, 0.25);
-}
-.popover.left > .arrow:after {
- content: " ";
- right: 1px;
- border-right-width: 0;
- border-left-color: #ffffff;
- bottom: -10px;
-}
-.carousel {
- position: relative;
-}
-.carousel-inner {
- position: relative;
- overflow: hidden;
- width: 100%;
-}
-.carousel-inner > .item {
- display: none;
- position: relative;
- -webkit-transition: 0.6s ease-in-out left;
- -o-transition: 0.6s ease-in-out left;
- transition: 0.6s ease-in-out left;
-}
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
- line-height: 1;
-}
-@media all and (transform-3d), (-webkit-transform-3d) {
- .carousel-inner > .item {
- transition: transform 0.6s ease-in-out;
- backface-visibility: hidden;
- perspective: 1000;
- }
- .carousel-inner > .item.next,
- .carousel-inner > .item.active.right {
- transform: translate3d(100%, 0, 0);
- left: 0;
- }
- .carousel-inner > .item.prev,
- .carousel-inner > .item.active.left {
- transform: translate3d(-100%, 0, 0);
- left: 0;
- }
- .carousel-inner > .item.next.left,
- .carousel-inner > .item.prev.right,
- .carousel-inner > .item.active {
- transform: translate3d(0, 0, 0);
- left: 0;
- }
-}
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
- display: block;
-}
-.carousel-inner > .active {
- left: 0;
-}
-.carousel-inner > .next,
-.carousel-inner > .prev {
- position: absolute;
- top: 0;
- width: 100%;
-}
-.carousel-inner > .next {
- left: 100%;
-}
-.carousel-inner > .prev {
- left: -100%;
-}
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
- left: 0;
-}
-.carousel-inner > .active.left {
- left: -100%;
-}
-.carousel-inner > .active.right {
- left: 100%;
-}
-.carousel-control {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- width: 15%;
- opacity: 0.5;
- filter: alpha(opacity=50);
- font-size: 20px;
- color: #ffffff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
-}
-.carousel-control.left {
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
-}
-.carousel-control.right {
- left: auto;
- right: 0;
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
-}
-.carousel-control:hover,
-.carousel-control:focus {
- outline: 0;
- color: #ffffff;
- text-decoration: none;
- opacity: 0.9;
- filter: alpha(opacity=90);
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right {
- position: absolute;
- top: 50%;
- z-index: 5;
- display: inline-block;
-}
-.carousel-control .icon-prev,
-.carousel-control .glyphicon-chevron-left {
- left: 50%;
- margin-left: -10px;
-}
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-right {
- right: 50%;
- margin-right: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
- width: 20px;
- height: 20px;
- margin-top: -10px;
- font-family: serif;
-}
-.carousel-control .icon-prev:before {
- content: '\2039';
-}
-.carousel-control .icon-next:before {
- content: '\203a';
-}
-.carousel-indicators {
- position: absolute;
- bottom: 10px;
- left: 50%;
- z-index: 15;
- width: 60%;
- margin-left: -30%;
- padding-left: 0;
- list-style: none;
- text-align: center;
-}
-.carousel-indicators li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- border: 1px solid #ffffff;
- border-radius: 10px;
- cursor: pointer;
- background-color: #000 \9;
- background-color: rgba(0, 0, 0, 0);
-}
-.carousel-indicators .active {
- margin: 0;
- width: 12px;
- height: 12px;
- background-color: #ffffff;
-}
-.carousel-caption {
- position: absolute;
- left: 15%;
- right: 15%;
- bottom: 20px;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: #ffffff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
-}
-.carousel-caption .btn {
- text-shadow: none;
-}
-@media screen and (min-width: 768px) {
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-prev,
- .carousel-control .icon-next {
- width: 30px;
- height: 30px;
- margin-top: -15px;
- font-size: 30px;
- }
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .icon-prev {
- margin-left: -15px;
- }
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-next {
- margin-right: -15px;
- }
- .carousel-caption {
- left: 20%;
- right: 20%;
- padding-bottom: 30px;
- }
- .carousel-indicators {
- bottom: 20px;
- }
-}
-.clearfix:before,
-.clearfix:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.row:before,
-.row:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.btn-toolbar:before,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.pager:before,
-.pager:after,
-.panel-body:before,
-.panel-body:after,
-.modal-footer:before,
-.modal-footer:after {
- content: " ";
- display: table;
-}
-.clearfix:after,
-.dl-horizontal dd:after,
-.container:after,
-.container-fluid:after,
-.row:after,
-.form-horizontal .form-group:after,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.pager:after,
-.panel-body:after,
-.modal-footer:after {
- clear: both;
-}
-.center-block {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-.pull-right {
- float: right !important;
-}
-.pull-left {
- float: left !important;
-}
-.hide {
- display: none !important;
-}
-.show {
- display: block !important;
-}
-.invisible {
- visibility: hidden;
-}
-.text-hide {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-}
-.hidden {
- display: none !important;
- visibility: hidden !important;
-}
-.affix {
- position: fixed;
-}
-@-ms-viewport {
- width: device-width;
-}
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
- display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
- display: none !important;
-}
-@media (max-width: 767px) {
- .visible-xs {
- display: block !important;
- }
- table.visible-xs {
- display: table;
- }
- tr.visible-xs {
- display: table-row !important;
- }
- th.visible-xs,
- td.visible-xs {
- display: table-cell !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-block {
- display: block !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline {
- display: inline !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm {
- display: block !important;
- }
- table.visible-sm {
- display: table;
- }
- tr.visible-sm {
- display: table-row !important;
- }
- th.visible-sm,
- td.visible-sm {
- display: table-cell !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-block {
- display: block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline {
- display: inline !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md {
- display: block !important;
- }
- table.visible-md {
- display: table;
- }
- tr.visible-md {
- display: table-row !important;
- }
- th.visible-md,
- td.visible-md {
- display: table-cell !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-block {
- display: block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline {
- display: inline !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg {
- display: block !important;
- }
- table.visible-lg {
- display: table;
- }
- tr.visible-lg {
- display: table-row !important;
- }
- th.visible-lg,
- td.visible-lg {
- display: table-cell !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-block {
- display: block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline {
- display: inline !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline-block {
- display: inline-block !important;
- }
-}
-@media (max-width: 767px) {
- .hidden-xs {
- display: none !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-sm {
- display: none !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-md {
- display: none !important;
- }
-}
-@media (min-width: 1200px) {
- .hidden-lg {
- display: none !important;
- }
-}
-.visible-print {
- display: none !important;
-}
-@media print {
- .visible-print {
- display: block !important;
- }
- table.visible-print {
- display: table;
- }
- tr.visible-print {
- display: table-row !important;
- }
- th.visible-print,
- td.visible-print {
- display: table-cell !important;
- }
-}
-.visible-print-block {
- display: none !important;
-}
-@media print {
- .visible-print-block {
- display: block !important;
- }
-}
-.visible-print-inline {
- display: none !important;
-}
-@media print {
- .visible-print-inline {
- display: inline !important;
- }
-}
-.visible-print-inline-block {
- display: none !important;
-}
-@media print {
- .visible-print-inline-block {
- display: inline-block !important;
- }
-}
-@media print {
- .hidden-print {
- display: none !important;
- }
-}
-#wrap {
- padding-top: 70px;
-}
-.navbar-nav.navbar-right:last-child {
- margin-right: 0;
-}
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.hbs b/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.hbs
deleted file mode 100644
index b4575ac8..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.hbs
+++ /dev/null
@@ -1,141 +0,0 @@
-{{#zone "main"}}
-
-
-
-
-
-
Register
-
-
-
-
-
-
-
-
-
-
-
-
- Confirm Password
-
-
-
-
-
-
-
- I Agree by Clicking register, you agree to the Terms and Conditions set out by this site
-
-
-
-
-
-
-
-
-
-
-
-
-{{/zone}}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.js b/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.js
deleted file mode 100644
index be564964..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.js
+++ /dev/null
@@ -1,19 +0,0 @@
-function onRequest(context){
- var dcProps = require('/config/dc-props.js').config();
- if (dcProps.ssoConfiguration.enabled) {
- response.sendRedirect(dcProps.appContext + "sso/login");
- exit();
- }else{
- context.loginPath = "api/user/login";
- }
-
- var constants = require("/modules/constants.js");
- var localLogoutURL = dcProps.appContext + "api/user/logout";
- var ssoLogoutURL = dcProps.appContext + "sso/logout";
- context.logoutURL = dcProps.ssoConfiguration.enabled? ssoLogoutURL : localLogoutURL;
- context.user = session.get(constants.USER_SESSION_KEY);
-
- context.viewonly = !context.user;
-
- return context;
-}
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.json b/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.json
deleted file mode 100644
index 6240cff5..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/appbar.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "predicate": "false"
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/public/images/logo.png b/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/public/images/logo.png
deleted file mode 100644
index 91cc5d3f..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/appbar/public/images/logo.png and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/bootstrap.min.css b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/bootstrap.min.css
deleted file mode 100644
index d29dc3b4..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/bootstrap.min.css
+++ /dev/null
@@ -1,6671 +0,0 @@
-/*!
- * Bootstrap v3.3.4 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-
-html {
- font-family: sans-serif;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%
-}
-body {
- margin: 0
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block
-}
-audio,
-canvas,
-progress,
-video {
- display: inline-block;
- vertical-align: baseline
-}
-audio:not([controls]) {
- display: none;
- height: 0
-}
-[hidden],
-template {
- display: none
-}
-a {
- background-color: transparent
-}
-a:active,
-a:hover {
- outline: 0
-}
-abbr[title] {
- border-bottom: 1px dotted
-}
-b,
-strong {
- font-weight: 700
-}
-dfn {
- font-style: italic
-}
-h1 {
- margin: .67em 0;
- font-size: 2em
-}
-mark {
- color: #000;
- background: #ff0
-}
-small {
- font-size: 80%
-}
-sub,
-sup {
- position: relative;
- font-size: 75%;
- line-height: 0;
- vertical-align: baseline
-}
-sup {
- top: -.5em
-}
-sub {
- bottom: -.25em
-}
-img {
- border: 0
-}
-svg:not(:root) {
- overflow: hidden
-}
-figure {
- margin: 1em 40px
-}
-hr {
- height: 0;
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box
-}
-pre {
- overflow: auto
-}
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em
-}
-button,
-input,
-optgroup,
-select,
-textarea {
- margin: 0;
- font: inherit;
- color: inherit
-}
-button {
- overflow: visible
-}
-button,
-select {
- text-transform: none
-}
-button,
-html input[type=button],
-input[type=reset],
-input[type=submit] {
- -webkit-appearance: button;
- cursor: pointer
-}
-button[disabled],
-html input[disabled] {
- cursor: default
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- padding: 0;
- border: 0
-}
-input {
- line-height: normal
-}
-input[type=checkbox],
-input[type=radio] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- padding: 0
-}
-input[type=number]::-webkit-inner-spin-button,
-input[type=number]::-webkit-outer-spin-button {
- height: auto
-}
-input[type=search] {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- -webkit-appearance: textfield
-}
-input[type=search]::-webkit-search-cancel-button,
-input[type=search]::-webkit-search-decoration {
- -webkit-appearance: none
-}
-fieldset {
- padding: .35em .625em .75em;
- margin: 0 2px;
- border: 1px solid silver
-}
-legend {
- padding: 0;
- border: 0
-}
-textarea {
- overflow: auto
-}
-optgroup {
- font-weight: 700
-}
-table {
- border-spacing: 0;
- border-collapse: collapse
-}
-td,
-th {
- padding: 0
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-
-@media print {
- *,
- :after,
- :before {
- color: #000!important;
- text-shadow: none!important;
- background: 0 0!important;
- -webkit-box-shadow: none!important;
- box-shadow: none!important
- }
- a,
- a:visited {
- text-decoration: underline
- }
- a[href]:after {
- content: " (" attr(href) ")"
- }
- abbr[title]:after {
- content: " (" attr(title) ")"
- }
- a[href^="javascript:"]:after,
- a[href^="#"]:after {
- content: ""
- }
- blockquote,
- pre {
- border: 1px solid #999;
- page-break-inside: avoid
- }
- thead {
- display: table-header-group
- }
- img,
- tr {
- page-break-inside: avoid
- }
- img {
- max-width: 100%!important
- }
- h2,
- h3,
- p {
- orphans: 3;
- widows: 3
- }
- h2,
- h3 {
- page-break-after: avoid
- }
- select {
- background: #fff!important
- }
- .navbar {
- display: none
- }
- .btn>.caret,
- .dropup>.btn>.caret {
- border-top-color: #000!important
- }
- .label {
- border: 1px solid #000
- }
- .table {
- border-collapse: collapse!important
- }
- .table td,
- .table th {
- background-color: #fff!important
- }
- .table-bordered td,
- .table-bordered th {
- border: 1px solid #ddd!important
- }
-}
-@font-face {
- font-family: 'Glyphicons Halflings';
- src: url(../fonts/glyphicons-halflings-regular.eot);
- src: url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'), url(../fonts/glyphicons-halflings-regular.woff) format('woff'), url(../fonts/glyphicons-halflings-regular.woff) format('woff'), url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'), url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
-}
-.glyphicon {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: 400;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale
-}
-.glyphicon-asterisk:before {
- content: "\2a"
-}
-.glyphicon-plus:before {
- content: "\2b"
-}
-.glyphicon-eur:before,
-.glyphicon-euro:before {
- content: "\20ac"
-}
-.glyphicon-minus:before {
- content: "\2212"
-}
-.glyphicon-cloud:before {
- content: "\2601"
-}
-.glyphicon-envelope:before {
- content: "\2709"
-}
-.glyphicon-pencil:before {
- content: "\270f"
-}
-.glyphicon-glass:before {
- content: "\e001"
-}
-.glyphicon-music:before {
- content: "\e002"
-}
-.glyphicon-search:before {
- content: "\e003"
-}
-.glyphicon-heart:before {
- content: "\e005"
-}
-.glyphicon-star:before {
- content: "\e006"
-}
-.glyphicon-star-empty:before {
- content: "\e007"
-}
-.glyphicon-user:before {
- content: "\e008"
-}
-.glyphicon-film:before {
- content: "\e009"
-}
-.glyphicon-th-large:before {
- content: "\e010"
-}
-.glyphicon-th:before {
- content: "\e011"
-}
-.glyphicon-th-list:before {
- content: "\e012"
-}
-.glyphicon-ok:before {
- content: "\e013"
-}
-.glyphicon-remove:before {
- content: "\e014"
-}
-.glyphicon-zoom-in:before {
- content: "\e015"
-}
-.glyphicon-zoom-out:before {
- content: "\e016"
-}
-.glyphicon-off:before {
- content: "\e017"
-}
-.glyphicon-signal:before {
- content: "\e018"
-}
-.glyphicon-cog:before {
- content: "\e019"
-}
-.glyphicon-trash:before {
- content: "\e020"
-}
-.glyphicon-home:before {
- content: "\e021"
-}
-.glyphicon-file:before {
- content: "\e022"
-}
-.glyphicon-time:before {
- content: "\e023"
-}
-.glyphicon-road:before {
- content: "\e024"
-}
-.glyphicon-download-alt:before {
- content: "\e025"
-}
-.glyphicon-download:before {
- content: "\e026"
-}
-.glyphicon-upload:before {
- content: "\e027"
-}
-.glyphicon-inbox:before {
- content: "\e028"
-}
-.glyphicon-play-circle:before {
- content: "\e029"
-}
-.glyphicon-repeat:before {
- content: "\e030"
-}
-.glyphicon-refresh:before {
- content: "\e031"
-}
-.glyphicon-list-alt:before {
- content: "\e032"
-}
-.glyphicon-lock:before {
- content: "\e033"
-}
-.glyphicon-flag:before {
- content: "\e034"
-}
-.glyphicon-headphones:before {
- content: "\e035"
-}
-.glyphicon-volume-off:before {
- content: "\e036"
-}
-.glyphicon-volume-down:before {
- content: "\e037"
-}
-.glyphicon-volume-up:before {
- content: "\e038"
-}
-.glyphicon-qrcode:before {
- content: "\e039"
-}
-.glyphicon-barcode:before {
- content: "\e040"
-}
-.glyphicon-tag:before {
- content: "\e041"
-}
-.glyphicon-tags:before {
- content: "\e042"
-}
-.glyphicon-book:before {
- content: "\e043"
-}
-.glyphicon-bookmark:before {
- content: "\e044"
-}
-.glyphicon-print:before {
- content: "\e045"
-}
-.glyphicon-camera:before {
- content: "\e046"
-}
-.glyphicon-font:before {
- content: "\e047"
-}
-.glyphicon-bold:before {
- content: "\e048"
-}
-.glyphicon-italic:before {
- content: "\e049"
-}
-.glyphicon-text-height:before {
- content: "\e050"
-}
-.glyphicon-text-width:before {
- content: "\e051"
-}
-.glyphicon-align-left:before {
- content: "\e052"
-}
-.glyphicon-align-center:before {
- content: "\e053"
-}
-.glyphicon-align-right:before {
- content: "\e054"
-}
-.glyphicon-align-justify:before {
- content: "\e055"
-}
-.glyphicon-list:before {
- content: "\e056"
-}
-.glyphicon-indent-left:before {
- content: "\e057"
-}
-.glyphicon-indent-right:before {
- content: "\e058"
-}
-.glyphicon-facetime-video:before {
- content: "\e059"
-}
-.glyphicon-picture:before {
- content: "\e060"
-}
-.glyphicon-map-marker:before {
- content: "\e062"
-}
-.glyphicon-adjust:before {
- content: "\e063"
-}
-.glyphicon-tint:before {
- content: "\e064"
-}
-.glyphicon-edit:before {
- content: "\e065"
-}
-.glyphicon-share:before {
- content: "\e066"
-}
-.glyphicon-check:before {
- content: "\e067"
-}
-.glyphicon-move:before {
- content: "\e068"
-}
-.glyphicon-step-backward:before {
- content: "\e069"
-}
-.glyphicon-fast-backward:before {
- content: "\e070"
-}
-.glyphicon-backward:before {
- content: "\e071"
-}
-.glyphicon-play:before {
- content: "\e072"
-}
-.glyphicon-pause:before {
- content: "\e073"
-}
-.glyphicon-stop:before {
- content: "\e074"
-}
-.glyphicon-forward:before {
- content: "\e075"
-}
-.glyphicon-fast-forward:before {
- content: "\e076"
-}
-.glyphicon-step-forward:before {
- content: "\e077"
-}
-.glyphicon-eject:before {
- content: "\e078"
-}
-.glyphicon-chevron-left:before {
- content: "\e079"
-}
-.glyphicon-chevron-right:before {
- content: "\e080"
-}
-.glyphicon-plus-sign:before {
- content: "\e081"
-}
-.glyphicon-minus-sign:before {
- content: "\e082"
-}
-.glyphicon-remove-sign:before {
- content: "\e083"
-}
-.glyphicon-ok-sign:before {
- content: "\e084"
-}
-.glyphicon-question-sign:before {
- content: "\e085"
-}
-.glyphicon-info-sign:before {
- content: "\e086"
-}
-.glyphicon-screenshot:before {
- content: "\e087"
-}
-.glyphicon-remove-circle:before {
- content: "\e088"
-}
-.glyphicon-ok-circle:before {
- content: "\e089"
-}
-.glyphicon-ban-circle:before {
- content: "\e090"
-}
-.glyphicon-arrow-left:before {
- content: "\e091"
-}
-.glyphicon-arrow-right:before {
- content: "\e092"
-}
-.glyphicon-arrow-up:before {
- content: "\e093"
-}
-.glyphicon-arrow-down:before {
- content: "\e094"
-}
-.glyphicon-share-alt:before {
- content: "\e095"
-}
-.glyphicon-resize-full:before {
- content: "\e096"
-}
-.glyphicon-resize-small:before {
- content: "\e097"
-}
-.glyphicon-exclamation-sign:before {
- content: "\e101"
-}
-.glyphicon-gift:before {
- content: "\e102"
-}
-.glyphicon-leaf:before {
- content: "\e103"
-}
-.glyphicon-fire:before {
- content: "\e104"
-}
-.glyphicon-eye-open:before {
- content: "\e105"
-}
-.glyphicon-eye-close:before {
- content: "\e106"
-}
-.glyphicon-warning-sign:before {
- content: "\e107"
-}
-.glyphicon-plane:before {
- content: "\e108"
-}
-.glyphicon-calendar:before {
- content: "\e109"
-}
-.glyphicon-random:before {
- content: "\e110"
-}
-.glyphicon-comment:before {
- content: "\e111"
-}
-.glyphicon-magnet:before {
- content: "\e112"
-}
-.glyphicon-chevron-up:before {
- content: "\e113"
-}
-.glyphicon-chevron-down:before {
- content: "\e114"
-}
-.glyphicon-retweet:before {
- content: "\e115"
-}
-.glyphicon-shopping-cart:before {
- content: "\e116"
-}
-.glyphicon-folder-close:before {
- content: "\e117"
-}
-.glyphicon-folder-open:before {
- content: "\e118"
-}
-.glyphicon-resize-vertical:before {
- content: "\e119"
-}
-.glyphicon-resize-horizontal:before {
- content: "\e120"
-}
-.glyphicon-hdd:before {
- content: "\e121"
-}
-.glyphicon-bullhorn:before {
- content: "\e122"
-}
-.glyphicon-bell:before {
- content: "\e123"
-}
-.glyphicon-certificate:before {
- content: "\e124"
-}
-.glyphicon-thumbs-up:before {
- content: "\e125"
-}
-.glyphicon-thumbs-down:before {
- content: "\e126"
-}
-.glyphicon-hand-right:before {
- content: "\e127"
-}
-.glyphicon-hand-left:before {
- content: "\e128"
-}
-.glyphicon-hand-up:before {
- content: "\e129"
-}
-.glyphicon-hand-down:before {
- content: "\e130"
-}
-.glyphicon-circle-arrow-right:before {
- content: "\e131"
-}
-.glyphicon-circle-arrow-left:before {
- content: "\e132"
-}
-.glyphicon-circle-arrow-up:before {
- content: "\e133"
-}
-.glyphicon-circle-arrow-down:before {
- content: "\e134"
-}
-.glyphicon-globe:before {
- content: "\e135"
-}
-.glyphicon-wrench:before {
- content: "\e136"
-}
-.glyphicon-tasks:before {
- content: "\e137"
-}
-.glyphicon-filter:before {
- content: "\e138"
-}
-.glyphicon-briefcase:before {
- content: "\e139"
-}
-.glyphicon-fullscreen:before {
- content: "\e140"
-}
-.glyphicon-dashboard:before {
- content: "\e141"
-}
-.glyphicon-paperclip:before {
- content: "\e142"
-}
-.glyphicon-heart-empty:before {
- content: "\e143"
-}
-.glyphicon-link:before {
- content: "\e144"
-}
-.glyphicon-phone:before {
- content: "\e145"
-}
-.glyphicon-pushpin:before {
- content: "\e146"
-}
-.glyphicon-usd:before {
- content: "\e148"
-}
-.glyphicon-gbp:before {
- content: "\e149"
-}
-.glyphicon-sort:before {
- content: "\e150"
-}
-.glyphicon-sort-by-alphabet:before {
- content: "\e151"
-}
-.glyphicon-sort-by-alphabet-alt:before {
- content: "\e152"
-}
-.glyphicon-sort-by-order:before {
- content: "\e153"
-}
-.glyphicon-sort-by-order-alt:before {
- content: "\e154"
-}
-.glyphicon-sort-by-attributes:before {
- content: "\e155"
-}
-.glyphicon-sort-by-attributes-alt:before {
- content: "\e156"
-}
-.glyphicon-unchecked:before {
- content: "\e157"
-}
-.glyphicon-expand:before {
- content: "\e158"
-}
-.glyphicon-collapse-down:before {
- content: "\e159"
-}
-.glyphicon-collapse-up:before {
- content: "\e160"
-}
-.glyphicon-log-in:before {
- content: "\e161"
-}
-.glyphicon-flash:before {
- content: "\e162"
-}
-.glyphicon-log-out:before {
- content: "\e163"
-}
-.glyphicon-new-window:before {
- content: "\e164"
-}
-.glyphicon-record:before {
- content: "\e165"
-}
-.glyphicon-save:before {
- content: "\e166"
-}
-.glyphicon-open:before {
- content: "\e167"
-}
-.glyphicon-saved:before {
- content: "\e168"
-}
-.glyphicon-import:before {
- content: "\e169"
-}
-.glyphicon-export:before {
- content: "\e170"
-}
-.glyphicon-send:before {
- content: "\e171"
-}
-.glyphicon-floppy-disk:before {
- content: "\e172"
-}
-.glyphicon-floppy-saved:before {
- content: "\e173"
-}
-.glyphicon-floppy-remove:before {
- content: "\e174"
-}
-.glyphicon-floppy-save:before {
- content: "\e175"
-}
-.glyphicon-floppy-open:before {
- content: "\e176"
-}
-.glyphicon-credit-card:before {
- content: "\e177"
-}
-.glyphicon-transfer:before {
- content: "\e178"
-}
-.glyphicon-cutlery:before {
- content: "\e179"
-}
-.glyphicon-header:before {
- content: "\e180"
-}
-.glyphicon-compressed:before {
- content: "\e181"
-}
-.glyphicon-earphone:before {
- content: "\e182"
-}
-.glyphicon-phone-alt:before {
- content: "\e183"
-}
-.glyphicon-tower:before {
- content: "\e184"
-}
-.glyphicon-stats:before {
- content: "\e185"
-}
-.glyphicon-sd-video:before {
- content: "\e186"
-}
-.glyphicon-hd-video:before {
- content: "\e187"
-}
-.glyphicon-subtitles:before {
- content: "\e188"
-}
-.glyphicon-sound-stereo:before {
- content: "\e189"
-}
-.glyphicon-sound-dolby:before {
- content: "\e190"
-}
-.glyphicon-sound-5-1:before {
- content: "\e191"
-}
-.glyphicon-sound-6-1:before {
- content: "\e192"
-}
-.glyphicon-sound-7-1:before {
- content: "\e193"
-}
-.glyphicon-copyright-mark:before {
- content: "\e194"
-}
-.glyphicon-registration-mark:before {
- content: "\e195"
-}
-.glyphicon-cloud-download:before {
- content: "\e197"
-}
-.glyphicon-cloud-upload:before {
- content: "\e198"
-}
-.glyphicon-tree-conifer:before {
- content: "\e199"
-}
-.glyphicon-tree-deciduous:before {
- content: "\e200"
-}
-.glyphicon-cd:before {
- content: "\e201"
-}
-.glyphicon-save-file:before {
- content: "\e202"
-}
-.glyphicon-open-file:before {
- content: "\e203"
-}
-.glyphicon-level-up:before {
- content: "\e204"
-}
-.glyphicon-copy:before {
- content: "\e205"
-}
-.glyphicon-paste:before {
- content: "\e206"
-}
-.glyphicon-alert:before {
- content: "\e209"
-}
-.glyphicon-equalizer:before {
- content: "\e210"
-}
-.glyphicon-king:before {
- content: "\e211"
-}
-.glyphicon-queen:before {
- content: "\e212"
-}
-.glyphicon-pawn:before {
- content: "\e213"
-}
-.glyphicon-bishop:before {
- content: "\e214"
-}
-.glyphicon-knight:before {
- content: "\e215"
-}
-.glyphicon-baby-formula:before {
- content: "\e216"
-}
-.glyphicon-tent:before {
- content: "\26fa"
-}
-.glyphicon-blackboard:before {
- content: "\e218"
-}
-.glyphicon-bed:before {
- content: "\e219"
-}
-.glyphicon-apple:before {
- content: "\f8ff"
-}
-.glyphicon-erase:before {
- content: "\e221"
-}
-.glyphicon-hourglass:before {
- content: "\231b"
-}
-.glyphicon-lamp:before {
- content: "\e223"
-}
-.glyphicon-duplicate:before {
- content: "\e224"
-}
-.glyphicon-piggy-bank:before {
- content: "\e225"
-}
-.glyphicon-scissors:before {
- content: "\e226"
-}
-.glyphicon-bitcoin:before {
- content: "\e227"
-}
-.glyphicon-btc:before {
- content: "\e227"
-}
-.glyphicon-xbt:before {
- content: "\e227"
-}
-.glyphicon-yen:before {
- content: "\00a5"
-}
-.glyphicon-jpy:before {
- content: "\00a5"
-}
-.glyphicon-ruble:before {
- content: "\20bd"
-}
-.glyphicon-rub:before {
- content: "\20bd"
-}
-.glyphicon-scale:before {
- content: "\e230"
-}
-.glyphicon-ice-lolly:before {
- content: "\e231"
-}
-.glyphicon-ice-lolly-tasted:before {
- content: "\e232"
-}
-.glyphicon-education:before {
- content: "\e233"
-}
-.glyphicon-option-horizontal:before {
- content: "\e234"
-}
-.glyphicon-option-vertical:before {
- content: "\e235"
-}
-.glyphicon-menu-hamburger:before {
- content: "\e236"
-}
-.glyphicon-modal-window:before {
- content: "\e237"
-}
-.glyphicon-oil:before {
- content: "\e238"
-}
-.glyphicon-grain:before {
- content: "\e239"
-}
-.glyphicon-sunglasses:before {
- content: "\e240"
-}
-.glyphicon-text-size:before {
- content: "\e241"
-}
-.glyphicon-text-color:before {
- content: "\e242"
-}
-.glyphicon-text-background:before {
- content: "\e243"
-}
-.glyphicon-object-align-top:before {
- content: "\e244"
-}
-.glyphicon-object-align-bottom:before {
- content: "\e245"
-}
-.glyphicon-object-align-horizontal:before {
- content: "\e246"
-}
-.glyphicon-object-align-left:before {
- content: "\e247"
-}
-.glyphicon-object-align-vertical:before {
- content: "\e248"
-}
-.glyphicon-object-align-right:before {
- content: "\e249"
-}
-.glyphicon-triangle-right:before {
- content: "\e250"
-}
-.glyphicon-triangle-left:before {
- content: "\e251"
-}
-.glyphicon-triangle-bottom:before {
- content: "\e252"
-}
-.glyphicon-triangle-top:before {
- content: "\e253"
-}
-.glyphicon-console:before {
- content: "\e254"
-}
-.glyphicon-superscript:before {
- content: "\e255"
-}
-.glyphicon-subscript:before {
- content: "\e256"
-}
-.glyphicon-menu-left:before {
- content: "\e257"
-}
-.glyphicon-menu-right:before {
- content: "\e258"
-}
-.glyphicon-menu-down:before {
- content: "\e259"
-}
-.glyphicon-menu-up:before {
- content: "\e260"
-}
-* {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box
-}
-:after,
-:before {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box
-}
-html {
- font-size: 10px;
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
-}
-body {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 1.42857143;
- color: #333;
- background-color: #fff
-}
-button,
-input,
-select,
-textarea {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit
-}
-a {
- color: #337ab7;
- text-decoration: none
-}
-a:focus,
-a:hover {
- color: #23527c;
- text-decoration: underline
-}
-a:focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px
-}
-figure {
- margin: 0
-}
-img {
- vertical-align: middle
-}
-.carousel-inner>.item>a>img,
-.carousel-inner>.item>img,
-.img-responsive,
-.thumbnail a>img,
-.thumbnail>img {
- display: block;
- max-width: 100%;
- height: auto
-}
-.img-rounded {
- border-radius: 6px
-}
-.img-thumbnail {
- display: inline-block;
- max-width: 100%;
- height: auto;
- padding: 4px;
- line-height: 1.42857143;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
- -webkit-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out
-}
-.img-circle {
- border-radius: 50%
-}
-hr {
- margin-top: 20px;
- margin-bottom: 20px;
- border: 0;
- border-top: 1px solid #eee
-}
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto
-}
-[role=button] {
- cursor: pointer
-}
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-family: inherit;
- font-weight: 500;
- line-height: 1.1;
- color: inherit
-}
-.h1 .small,
-.h1 small,
-.h2 .small,
-.h2 small,
-.h3 .small,
-.h3 small,
-.h4 .small,
-.h4 small,
-.h5 .small,
-.h5 small,
-.h6 .small,
-.h6 small,
-h1 .small,
-h1 small,
-h2 .small,
-h2 small,
-h3 .small,
-h3 small,
-h4 .small,
-h4 small,
-h5 .small,
-h5 small,
-h6 .small,
-h6 small {
- font-weight: 400;
- line-height: 1;
- color: #777
-}
-.h1,
-.h2,
-.h3,
-h1,
-h2,
-h3 {
- margin-top: 20px;
- margin-bottom: 10px
-}
-.h1 .small,
-.h1 small,
-.h2 .small,
-.h2 small,
-.h3 .small,
-.h3 small,
-h1 .small,
-h1 small,
-h2 .small,
-h2 small,
-h3 .small,
-h3 small {
- font-size: 65%
-}
-.h4,
-.h5,
-.h6,
-h4,
-h5,
-h6 {
- margin-top: 10px;
- margin-bottom: 10px
-}
-.h4 .small,
-.h4 small,
-.h5 .small,
-.h5 small,
-.h6 .small,
-.h6 small,
-h4 .small,
-h4 small,
-h5 .small,
-h5 small,
-h6 .small,
-h6 small {
- font-size: 75%
-}
-.h1,
-h1 {
- font-size: 36px
-}
-.h2,
-h2 {
- font-size: 30px
-}
-.h3,
-h3 {
- font-size: 24px
-}
-.h4,
-h4 {
- font-size: 18px
-}
-.h5,
-h5 {
- font-size: 14px
-}
-.h6,
-h6 {
- font-size: 12px
-}
-p {
- margin: 0 0 10px
-}
-.lead {
- margin-bottom: 20px;
- font-size: 16px;
- font-weight: 300;
- line-height: 1.4
-}
-@media (min-width: 768px) {
- .lead {
- font-size: 21px
- }
-}
-.small,
-small {
- font-size: 85%
-}
-.mark,
-mark {
- padding: .2em;
- background-color: #fcf8e3
-}
-.text-left {
- text-align: left
-}
-.text-right {
- text-align: right
-}
-.text-center {
- text-align: center
-}
-.text-justify {
- text-align: justify
-}
-.text-nowrap {
- white-space: nowrap
-}
-.text-lowercase {
- text-transform: lowercase
-}
-.text-uppercase {
- text-transform: uppercase
-}
-.text-capitalize {
- text-transform: capitalize
-}
-.text-muted {
- color: #777
-}
-.text-primary {
- color: #337ab7
-}
-a.text-primary:hover {
- color: #286090
-}
-.text-success {
- color: #3c763d
-}
-a.text-success:hover {
- color: #2b542c
-}
-.text-info {
- color: #31708f
-}
-a.text-info:hover {
- color: #245269
-}
-.text-warning {
- color: #8a6d3b
-}
-a.text-warning:hover {
- color: #66512c
-}
-.text-danger {
- color: #a94442
-}
-a.text-danger:hover {
- color: #843534
-}
-.bg-primary {
- color: #fff;
- background-color: #337ab7
-}
-a.bg-primary:hover {
- background-color: #286090
-}
-.bg-success {
- background-color: #dff0d8
-}
-a.bg-success:hover {
- background-color: #c1e2b3
-}
-.bg-info {
- background-color: #d9edf7
-}
-a.bg-info:hover {
- background-color: #afd9ee
-}
-.bg-warning {
- background-color: #fcf8e3
-}
-a.bg-warning:hover {
- background-color: #f7ecb5
-}
-.bg-danger {
- background-color: #f2dede
-}
-a.bg-danger:hover {
- background-color: #e4b9b9
-}
-.page-header {
- padding-bottom: 9px;
- margin: 40px 0 20px;
- border-bottom: 1px solid #eee
-}
-ol,
-ul {
- margin-top: 0;
- margin-bottom: 10px
-}
-ol ol,
-ol ul,
-ul ol,
-ul ul {
- margin-bottom: 0
-}
-.list-unstyled {
- padding-left: 0;
- list-style: none
-}
-.list-inline {
- padding-left: 0;
- margin-left: -5px;
- list-style: none
-}
-.list-inline>li {
- display: inline-block;
- padding-right: 5px;
- padding-left: 5px
-}
-dl {
- margin-top: 0;
- margin-bottom: 20px
-}
-dd,
-dt {
- line-height: 1.42857143
-}
-dt {
- font-weight: 700
-}
-dd {
- margin-left: 0
-}
-@media (min-width: 768px) {
- .dl-horizontal dt {
- float: left;
- width: 160px;
- overflow: hidden;
- clear: left;
- text-align: right;
- text-overflow: ellipsis;
- white-space: nowrap
- }
- .dl-horizontal dd {
- margin-left: 180px
- }
-}
-abbr[data-original-title],
-abbr[title] {
- cursor: help;
- border-bottom: 1px dotted #777
-}
-.initialism {
- font-size: 90%;
- text-transform: uppercase
-}
-blockquote {
- padding: 10px 20px;
- margin: 0 0 20px;
- font-size: 17.5px;
- border-left: 5px solid #eee
-}
-blockquote ol:last-child,
-blockquote p:last-child,
-blockquote ul:last-child {
- margin-bottom: 0
-}
-blockquote .small,
-blockquote footer,
-blockquote small {
- display: block;
- font-size: 80%;
- line-height: 1.42857143;
- color: #777
-}
-blockquote .small:before,
-blockquote footer:before,
-blockquote small:before {
- content: '\2014 \00A0'
-}
-.blockquote-reverse,
-blockquote.pull-right {
- padding-right: 15px;
- padding-left: 0;
- text-align: right;
- border-right: 5px solid #eee;
- border-left: 0
-}
-.blockquote-reverse .small:before,
-.blockquote-reverse footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right .small:before,
-blockquote.pull-right footer:before,
-blockquote.pull-right small:before {
- content: ''
-}
-.blockquote-reverse .small:after,
-.blockquote-reverse footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right .small:after,
-blockquote.pull-right footer:after,
-blockquote.pull-right small:after {
- content: '\00A0 \2014'
-}
-address {
- margin-bottom: 20px;
- font-style: normal;
- line-height: 1.42857143
-}
-code,
-kbd,
-pre,
-samp {
- font-family: Menlo, Monaco, Consolas, "Courier New", monospace
-}
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: #c7254e;
- background-color: #f9f2f4;
- border-radius: 4px
-}
-kbd {
- padding: 2px 4px;
- font-size: 90%;
- color: #fff;
- background-color: #333;
- border-radius: 3px;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25)
-}
-kbd kbd {
- padding: 0;
- font-size: 100%;
- font-weight: 700;
- -webkit-box-shadow: none;
- box-shadow: none
-}
-pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 1.42857143;
- color: #333;
- word-break: break-all;
- word-wrap: break-word;
- background-color: #f5f5f5;
- border: 1px solid #ccc;
- border-radius: 4px
-}
-pre code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border-radius: 0
-}
-.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll
-}
-.container {
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto
-}
-@media (min-width: 768px) {
- .container {
- width: 750px
- }
-}
-@media (min-width: 992px) {
- .container {
- width: 970px
- }
-}
-@media (min-width: 1200px) {
- .container {
- width: 1230px
- }
-}
-.container-fluid {
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto
-}
-.row {
- margin-right: -15px;
- margin-left: -15px
-}
-.col-lg-1,
-.col-lg-10,
-.col-lg-11,
-.col-lg-12,
-.col-lg-2,
-.col-lg-3,
-.col-lg-4,
-.col-lg-5,
-.col-lg-6,
-.col-lg-7,
-.col-lg-8,
-.col-lg-9,
-.col-md-1,
-.col-md-10,
-.col-md-11,
-.col-md-12,
-.col-md-2,
-.col-md-3,
-.col-md-4,
-.col-md-5,
-.col-md-6,
-.col-md-7,
-.col-md-8,
-.col-md-9,
-.col-sm-1,
-.col-sm-10,
-.col-sm-11,
-.col-sm-12,
-.col-sm-2,
-.col-sm-3,
-.col-sm-4,
-.col-sm-5,
-.col-sm-6,
-.col-sm-7,
-.col-sm-8,
-.col-sm-9,
-.col-xs-1,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9 {
- position: relative;
- min-height: 1px;
- padding-right: 15px;
- padding-left: 15px
-}
-.col-xs-1,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9 {
- float: left
-}
-.col-xs-12 {
- width: 100%
-}
-.col-xs-11 {
- width: 91.66666667%
-}
-.col-xs-10 {
- width: 83.33333333%
-}
-.col-xs-9 {
- width: 75%
-}
-.col-xs-8 {
- width: 66.66666667%
-}
-.col-xs-7 {
- width: 58.33333333%
-}
-.col-xs-6 {
- width: 50%
-}
-.col-xs-5 {
- width: 41.66666667%
-}
-.col-xs-4 {
- width: 33.33333333%
-}
-.col-xs-3 {
- width: 25%
-}
-.col-xs-2 {
- width: 16.66666667%
-}
-.col-xs-1 {
- width: 8.33333333%
-}
-.col-xs-pull-12 {
- right: 100%
-}
-.col-xs-pull-11 {
- right: 91.66666667%
-}
-.col-xs-pull-10 {
- right: 83.33333333%
-}
-.col-xs-pull-9 {
- right: 75%
-}
-.col-xs-pull-8 {
- right: 66.66666667%
-}
-.col-xs-pull-7 {
- right: 58.33333333%
-}
-.col-xs-pull-6 {
- right: 50%
-}
-.col-xs-pull-5 {
- right: 41.66666667%
-}
-.col-xs-pull-4 {
- right: 33.33333333%
-}
-.col-xs-pull-3 {
- right: 25%
-}
-.col-xs-pull-2 {
- right: 16.66666667%
-}
-.col-xs-pull-1 {
- right: 8.33333333%
-}
-.col-xs-pull-0 {
- right: auto
-}
-.col-xs-push-12 {
- left: 100%
-}
-.col-xs-push-11 {
- left: 91.66666667%
-}
-.col-xs-push-10 {
- left: 83.33333333%
-}
-.col-xs-push-9 {
- left: 75%
-}
-.col-xs-push-8 {
- left: 66.66666667%
-}
-.col-xs-push-7 {
- left: 58.33333333%
-}
-.col-xs-push-6 {
- left: 50%
-}
-.col-xs-push-5 {
- left: 41.66666667%
-}
-.col-xs-push-4 {
- left: 33.33333333%
-}
-.col-xs-push-3 {
- left: 25%
-}
-.col-xs-push-2 {
- left: 16.66666667%
-}
-.col-xs-push-1 {
- left: 8.33333333%
-}
-.col-xs-push-0 {
- left: auto
-}
-.col-xs-offset-12 {
- margin-left: 100%
-}
-.col-xs-offset-11 {
- margin-left: 91.66666667%
-}
-.col-xs-offset-10 {
- margin-left: 83.33333333%
-}
-.col-xs-offset-9 {
- margin-left: 75%
-}
-.col-xs-offset-8 {
- margin-left: 66.66666667%
-}
-.col-xs-offset-7 {
- margin-left: 58.33333333%
-}
-.col-xs-offset-6 {
- margin-left: 50%
-}
-.col-xs-offset-5 {
- margin-left: 41.66666667%
-}
-.col-xs-offset-4 {
- margin-left: 33.33333333%
-}
-.col-xs-offset-3 {
- margin-left: 25%
-}
-.col-xs-offset-2 {
- margin-left: 16.66666667%
-}
-.col-xs-offset-1 {
- margin-left: 8.33333333%
-}
-.col-xs-offset-0 {
- margin-left: 0
-}
-@media (min-width: 768px) {
- .col-sm-1,
- .col-sm-10,
- .col-sm-11,
- .col-sm-12,
- .col-sm-2,
- .col-sm-3,
- .col-sm-4,
- .col-sm-5,
- .col-sm-6,
- .col-sm-7,
- .col-sm-8,
- .col-sm-9 {
- float: left
- }
- .col-sm-12 {
- width: 100%
- }
- .col-sm-11 {
- width: 91.66666667%
- }
- .col-sm-10 {
- width: 83.33333333%
- }
- .col-sm-9 {
- width: 75%
- }
- .col-sm-8 {
- width: 66.66666667%
- }
- .col-sm-7 {
- width: 58.33333333%
- }
- .col-sm-6 {
- width: 50%
- }
- .col-sm-5 {
- width: 41.66666667%
- }
- .col-sm-4 {
- width: 33.33333333%
- }
- .col-sm-3 {
- width: 25%
- }
- .col-sm-2 {
- width: 16.66666667%
- }
- .col-sm-1 {
- width: 8.33333333%
- }
- .col-sm-pull-12 {
- right: 100%
- }
- .col-sm-pull-11 {
- right: 91.66666667%
- }
- .col-sm-pull-10 {
- right: 83.33333333%
- }
- .col-sm-pull-9 {
- right: 75%
- }
- .col-sm-pull-8 {
- right: 66.66666667%
- }
- .col-sm-pull-7 {
- right: 58.33333333%
- }
- .col-sm-pull-6 {
- right: 50%
- }
- .col-sm-pull-5 {
- right: 41.66666667%
- }
- .col-sm-pull-4 {
- right: 33.33333333%
- }
- .col-sm-pull-3 {
- right: 25%
- }
- .col-sm-pull-2 {
- right: 16.66666667%
- }
- .col-sm-pull-1 {
- right: 8.33333333%
- }
- .col-sm-pull-0 {
- right: auto
- }
- .col-sm-push-12 {
- left: 100%
- }
- .col-sm-push-11 {
- left: 91.66666667%
- }
- .col-sm-push-10 {
- left: 83.33333333%
- }
- .col-sm-push-9 {
- left: 75%
- }
- .col-sm-push-8 {
- left: 66.66666667%
- }
- .col-sm-push-7 {
- left: 58.33333333%
- }
- .col-sm-push-6 {
- left: 50%
- }
- .col-sm-push-5 {
- left: 41.66666667%
- }
- .col-sm-push-4 {
- left: 33.33333333%
- }
- .col-sm-push-3 {
- left: 25%
- }
- .col-sm-push-2 {
- left: 16.66666667%
- }
- .col-sm-push-1 {
- left: 8.33333333%
- }
- .col-sm-push-0 {
- left: auto
- }
- .col-sm-offset-12 {
- margin-left: 100%
- }
- .col-sm-offset-11 {
- margin-left: 91.66666667%
- }
- .col-sm-offset-10 {
- margin-left: 83.33333333%
- }
- .col-sm-offset-9 {
- margin-left: 75%
- }
- .col-sm-offset-8 {
- margin-left: 66.66666667%
- }
- .col-sm-offset-7 {
- margin-left: 58.33333333%
- }
- .col-sm-offset-6 {
- margin-left: 50%
- }
- .col-sm-offset-5 {
- margin-left: 41.66666667%
- }
- .col-sm-offset-4 {
- margin-left: 33.33333333%
- }
- .col-sm-offset-3 {
- margin-left: 25%
- }
- .col-sm-offset-2 {
- margin-left: 16.66666667%
- }
- .col-sm-offset-1 {
- margin-left: 8.33333333%
- }
- .col-sm-offset-0 {
- margin-left: 0
- }
-}
-@media (min-width: 992px) {
- .col-md-1,
- .col-md-10,
- .col-md-11,
- .col-md-12,
- .col-md-2,
- .col-md-3,
- .col-md-4,
- .col-md-5,
- .col-md-6,
- .col-md-7,
- .col-md-8,
- .col-md-9 {
- float: left
- }
- .col-md-12 {
- width: 100%
- }
- .col-md-11 {
- width: 91.66666667%
- }
- .col-md-10 {
- width: 83.33333333%
- }
- .col-md-9 {
- width: 75%
- }
- .col-md-8 {
- width: 66.66666667%
- }
- .col-md-7 {
- width: 58.33333333%
- }
- .col-md-6 {
- width: 50%
- }
- .col-md-5 {
- width: 41.66666667%
- }
- .col-md-4 {
- width: 33.33333333%
- }
- .col-md-3 {
- width: 25%
- }
- .col-md-2 {
- width: 16.66666667%
- }
- .col-md-1 {
- width: 8.33333333%
- }
- .col-md-pull-12 {
- right: 100%
- }
- .col-md-pull-11 {
- right: 91.66666667%
- }
- .col-md-pull-10 {
- right: 83.33333333%
- }
- .col-md-pull-9 {
- right: 75%
- }
- .col-md-pull-8 {
- right: 66.66666667%
- }
- .col-md-pull-7 {
- right: 58.33333333%
- }
- .col-md-pull-6 {
- right: 50%
- }
- .col-md-pull-5 {
- right: 41.66666667%
- }
- .col-md-pull-4 {
- right: 33.33333333%
- }
- .col-md-pull-3 {
- right: 25%
- }
- .col-md-pull-2 {
- right: 16.66666667%
- }
- .col-md-pull-1 {
- right: 8.33333333%
- }
- .col-md-pull-0 {
- right: auto
- }
- .col-md-push-12 {
- left: 100%
- }
- .col-md-push-11 {
- left: 91.66666667%
- }
- .col-md-push-10 {
- left: 83.33333333%
- }
- .col-md-push-9 {
- left: 75%
- }
- .col-md-push-8 {
- left: 66.66666667%
- }
- .col-md-push-7 {
- left: 58.33333333%
- }
- .col-md-push-6 {
- left: 50%
- }
- .col-md-push-5 {
- left: 41.66666667%
- }
- .col-md-push-4 {
- left: 33.33333333%
- }
- .col-md-push-3 {
- left: 25%
- }
- .col-md-push-2 {
- left: 16.66666667%
- }
- .col-md-push-1 {
- left: 8.33333333%
- }
- .col-md-push-0 {
- left: auto
- }
- .col-md-offset-12 {
- margin-left: 100%
- }
- .col-md-offset-11 {
- margin-left: 91.66666667%
- }
- .col-md-offset-10 {
- margin-left: 83.33333333%
- }
- .col-md-offset-9 {
- margin-left: 75%
- }
- .col-md-offset-8 {
- margin-left: 66.66666667%
- }
- .col-md-offset-7 {
- margin-left: 58.33333333%
- }
- .col-md-offset-6 {
- margin-left: 50%
- }
- .col-md-offset-5 {
- margin-left: 41.66666667%
- }
- .col-md-offset-4 {
- margin-left: 33.33333333%
- }
- .col-md-offset-3 {
- margin-left: 25%
- }
- .col-md-offset-2 {
- margin-left: 16.66666667%
- }
- .col-md-offset-1 {
- margin-left: 8.33333333%
- }
- .col-md-offset-0 {
- margin-left: 0
- }
-}
-@media (min-width: 1200px) {
- .col-lg-1,
- .col-lg-10,
- .col-lg-11,
- .col-lg-12,
- .col-lg-2,
- .col-lg-3,
- .col-lg-4,
- .col-lg-5,
- .col-lg-6,
- .col-lg-7,
- .col-lg-8,
- .col-lg-9 {
- float: left
- }
- .col-lg-12 {
- width: 100%
- }
- .col-lg-11 {
- width: 91.66666667%
- }
- .col-lg-10 {
- width: 83.33333333%
- }
- .col-lg-9 {
- width: 75%
- }
- .col-lg-8 {
- width: 66.66666667%
- }
- .col-lg-7 {
- width: 58.33333333%
- }
- .col-lg-6 {
- width: 50%
- }
- .col-lg-5 {
- width: 41.66666667%
- }
- .col-lg-4 {
- width: 33.33333333%
- }
- .col-lg-3 {
- width: 25%
- }
- .col-lg-2 {
- width: 16.66666667%
- }
- .col-lg-1 {
- width: 8.33333333%
- }
- .col-lg-pull-12 {
- right: 100%
- }
- .col-lg-pull-11 {
- right: 91.66666667%
- }
- .col-lg-pull-10 {
- right: 83.33333333%
- }
- .col-lg-pull-9 {
- right: 75%
- }
- .col-lg-pull-8 {
- right: 66.66666667%
- }
- .col-lg-pull-7 {
- right: 58.33333333%
- }
- .col-lg-pull-6 {
- right: 50%
- }
- .col-lg-pull-5 {
- right: 41.66666667%
- }
- .col-lg-pull-4 {
- right: 33.33333333%
- }
- .col-lg-pull-3 {
- right: 25%
- }
- .col-lg-pull-2 {
- right: 16.66666667%
- }
- .col-lg-pull-1 {
- right: 8.33333333%
- }
- .col-lg-pull-0 {
- right: auto
- }
- .col-lg-push-12 {
- left: 100%
- }
- .col-lg-push-11 {
- left: 91.66666667%
- }
- .col-lg-push-10 {
- left: 83.33333333%
- }
- .col-lg-push-9 {
- left: 75%
- }
- .col-lg-push-8 {
- left: 66.66666667%
- }
- .col-lg-push-7 {
- left: 58.33333333%
- }
- .col-lg-push-6 {
- left: 50%
- }
- .col-lg-push-5 {
- left: 41.66666667%
- }
- .col-lg-push-4 {
- left: 33.33333333%
- }
- .col-lg-push-3 {
- left: 25%
- }
- .col-lg-push-2 {
- left: 16.66666667%
- }
- .col-lg-push-1 {
- left: 8.33333333%
- }
- .col-lg-push-0 {
- left: auto
- }
- .col-lg-offset-12 {
- margin-left: 100%
- }
- .col-lg-offset-11 {
- margin-left: 91.66666667%
- }
- .col-lg-offset-10 {
- margin-left: 83.33333333%
- }
- .col-lg-offset-9 {
- margin-left: 75%
- }
- .col-lg-offset-8 {
- margin-left: 66.66666667%
- }
- .col-lg-offset-7 {
- margin-left: 58.33333333%
- }
- .col-lg-offset-6 {
- margin-left: 50%
- }
- .col-lg-offset-5 {
- margin-left: 41.66666667%
- }
- .col-lg-offset-4 {
- margin-left: 33.33333333%
- }
- .col-lg-offset-3 {
- margin-left: 25%
- }
- .col-lg-offset-2 {
- margin-left: 16.66666667%
- }
- .col-lg-offset-1 {
- margin-left: 8.33333333%
- }
- .col-lg-offset-0 {
- margin-left: 0
- }
-}
-table {
- background-color: transparent
-}
-caption {
- padding-top: 8px;
- padding-bottom: 8px;
- color: #777;
- text-align: left
-}
-th {
- text-align: left
-}
-.table {
- width: 100%;
- max-width: 100%;
- margin-bottom: 20px
-}
-.table>tbody>tr>td,
-.table>tbody>tr>th,
-.table>tfoot>tr>td,
-.table>tfoot>tr>th,
-.table>thead>tr>td,
-.table>thead>tr>th {
- padding: 8px;
- line-height: 1.42857143;
- vertical-align: top;
- border-top: 1px solid #ddd
-}
-.table>thead>tr>th {
- vertical-align: bottom;
- border-bottom: 2px solid #ddd
-}
-.table>caption+thead>tr:first-child>td,
-.table>caption+thead>tr:first-child>th,
-.table>colgroup+thead>tr:first-child>td,
-.table>colgroup+thead>tr:first-child>th,
-.table>thead:first-child>tr:first-child>td,
-.table>thead:first-child>tr:first-child>th {
- border-top: 0
-}
-.table>tbody+tbody {
- border-top: 2px solid #ddd
-}
-.table .table {
- background-color: #fff
-}
-.table-condensed>tbody>tr>td,
-.table-condensed>tbody>tr>th,
-.table-condensed>tfoot>tr>td,
-.table-condensed>tfoot>tr>th,
-.table-condensed>thead>tr>td,
-.table-condensed>thead>tr>th {
- padding: 5px
-}
-.table-bordered {
- border: 1px solid #ddd
-}
-.table-bordered>tbody>tr>td,
-.table-bordered>tbody>tr>th,
-.table-bordered>tfoot>tr>td,
-.table-bordered>tfoot>tr>th,
-.table-bordered>thead>tr>td,
-.table-bordered>thead>tr>th {
- border: 1px solid #ddd
-}
-.table-bordered>thead>tr>td,
-.table-bordered>thead>tr>th {
- border-bottom-width: 2px
-}
-.table-striped>tbody>tr:nth-of-type(odd) {
- background-color: #f9f9f9
-}
-.table-hover>tbody>tr:hover {
- background-color: #f5f5f5
-}
-table col[class*=col-] {
- position: static;
- display: table-column;
- float: none
-}
-table td[class*=col-],
-table th[class*=col-] {
- position: static;
- display: table-cell;
- float: none
-}
-.table>tbody>tr.active>td,
-.table>tbody>tr.active>th,
-.table>tbody>tr>td.active,
-.table>tbody>tr>th.active,
-.table>tfoot>tr.active>td,
-.table>tfoot>tr.active>th,
-.table>tfoot>tr>td.active,
-.table>tfoot>tr>th.active,
-.table>thead>tr.active>td,
-.table>thead>tr.active>th,
-.table>thead>tr>td.active,
-.table>thead>tr>th.active {
- background-color: #f5f5f5
-}
-.table-hover>tbody>tr.active:hover>td,
-.table-hover>tbody>tr.active:hover>th,
-.table-hover>tbody>tr:hover>.active,
-.table-hover>tbody>tr>td.active:hover,
-.table-hover>tbody>tr>th.active:hover {
- background-color: #e8e8e8
-}
-.table>tbody>tr.success>td,
-.table>tbody>tr.success>th,
-.table>tbody>tr>td.success,
-.table>tbody>tr>th.success,
-.table>tfoot>tr.success>td,
-.table>tfoot>tr.success>th,
-.table>tfoot>tr>td.success,
-.table>tfoot>tr>th.success,
-.table>thead>tr.success>td,
-.table>thead>tr.success>th,
-.table>thead>tr>td.success,
-.table>thead>tr>th.success {
- background-color: #dff0d8
-}
-.table-hover>tbody>tr.success:hover>td,
-.table-hover>tbody>tr.success:hover>th,
-.table-hover>tbody>tr:hover>.success,
-.table-hover>tbody>tr>td.success:hover,
-.table-hover>tbody>tr>th.success:hover {
- background-color: #d0e9c6
-}
-.table>tbody>tr.info>td,
-.table>tbody>tr.info>th,
-.table>tbody>tr>td.info,
-.table>tbody>tr>th.info,
-.table>tfoot>tr.info>td,
-.table>tfoot>tr.info>th,
-.table>tfoot>tr>td.info,
-.table>tfoot>tr>th.info,
-.table>thead>tr.info>td,
-.table>thead>tr.info>th,
-.table>thead>tr>td.info,
-.table>thead>tr>th.info {
- background-color: #d9edf7
-}
-.table-hover>tbody>tr.info:hover>td,
-.table-hover>tbody>tr.info:hover>th,
-.table-hover>tbody>tr:hover>.info,
-.table-hover>tbody>tr>td.info:hover,
-.table-hover>tbody>tr>th.info:hover {
- background-color: #c4e3f3
-}
-.table>tbody>tr.warning>td,
-.table>tbody>tr.warning>th,
-.table>tbody>tr>td.warning,
-.table>tbody>tr>th.warning,
-.table>tfoot>tr.warning>td,
-.table>tfoot>tr.warning>th,
-.table>tfoot>tr>td.warning,
-.table>tfoot>tr>th.warning,
-.table>thead>tr.warning>td,
-.table>thead>tr.warning>th,
-.table>thead>tr>td.warning,
-.table>thead>tr>th.warning {
- background-color: #fcf8e3
-}
-.table-hover>tbody>tr.warning:hover>td,
-.table-hover>tbody>tr.warning:hover>th,
-.table-hover>tbody>tr:hover>.warning,
-.table-hover>tbody>tr>td.warning:hover,
-.table-hover>tbody>tr>th.warning:hover {
- background-color: #faf2cc
-}
-.table>tbody>tr.danger>td,
-.table>tbody>tr.danger>th,
-.table>tbody>tr>td.danger,
-.table>tbody>tr>th.danger,
-.table>tfoot>tr.danger>td,
-.table>tfoot>tr.danger>th,
-.table>tfoot>tr>td.danger,
-.table>tfoot>tr>th.danger,
-.table>thead>tr.danger>td,
-.table>thead>tr.danger>th,
-.table>thead>tr>td.danger,
-.table>thead>tr>th.danger {
- background-color: #f2dede
-}
-.table-hover>tbody>tr.danger:hover>td,
-.table-hover>tbody>tr.danger:hover>th,
-.table-hover>tbody>tr:hover>.danger,
-.table-hover>tbody>tr>td.danger:hover,
-.table-hover>tbody>tr>th.danger:hover {
- background-color: #ebcccc
-}
-.table-responsive {
- min-height: .01%;
- overflow-x: auto
-}
-@media screen and (max-width: 767px) {
- .table-responsive {
- width: 100%;
- margin-bottom: 15px;
- overflow-y: hidden;
- -ms-overflow-style: -ms-autohiding-scrollbar;
- border: 1px solid #ddd
- }
- .table-responsive>.table {
- margin-bottom: 0
- }
- .table-responsive>.table>tbody>tr>td,
- .table-responsive>.table>tbody>tr>th,
- .table-responsive>.table>tfoot>tr>td,
- .table-responsive>.table>tfoot>tr>th,
- .table-responsive>.table>thead>tr>td,
- .table-responsive>.table>thead>tr>th {
- white-space: nowrap
- }
- .table-responsive>.table-bordered {
- border: 0
- }
- .table-responsive>.table-bordered>tbody>tr>td:first-child,
- .table-responsive>.table-bordered>tbody>tr>th:first-child,
- .table-responsive>.table-bordered>tfoot>tr>td:first-child,
- .table-responsive>.table-bordered>tfoot>tr>th:first-child,
- .table-responsive>.table-bordered>thead>tr>td:first-child,
- .table-responsive>.table-bordered>thead>tr>th:first-child {
- border-left: 0
- }
- .table-responsive>.table-bordered>tbody>tr>td:last-child,
- .table-responsive>.table-bordered>tbody>tr>th:last-child,
- .table-responsive>.table-bordered>tfoot>tr>td:last-child,
- .table-responsive>.table-bordered>tfoot>tr>th:last-child,
- .table-responsive>.table-bordered>thead>tr>td:last-child,
- .table-responsive>.table-bordered>thead>tr>th:last-child {
- border-right: 0
- }
- .table-responsive>.table-bordered>tbody>tr:last-child>td,
- .table-responsive>.table-bordered>tbody>tr:last-child>th,
- .table-responsive>.table-bordered>tfoot>tr:last-child>td,
- .table-responsive>.table-bordered>tfoot>tr:last-child>th {
- border-bottom: 0
- }
-}
-fieldset {
- min-width: 0;
- padding: 0;
- margin: 0;
- border: 0
-}
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: inherit;
- color: #333;
- border: 0;
- border-bottom: 1px solid #e5e5e5
-}
-label {
- display: inline-block;
- max-width: 100%;
- margin-bottom: 5px;
- font-weight: 700
-}
-input[type=search] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box
-}
-input[type=checkbox],
-input[type=radio] {
- margin: 4px 0 0;
- margin-top: 1px \9;
- line-height: normal
-}
-input[type=file] {
- display: block
-}
-input[type=range] {
- display: block;
- width: 100%
-}
-select[multiple],
-select[size] {
- height: auto
-}
-input[type=file]:focus,
-input[type=checkbox]:focus,
-input[type=radio]:focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px
-}
-output {
- display: block;
- padding-top: 7px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555
-}
-.form-control {
- display: block;
- width: 100%;
- height: 34px;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555;
- background-color: #fff;
- background-image: none;
- border: 1px solid #ccc;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
- -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s
-}
-.form-control:focus {
- border-color: #66afe9;
- outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6)
-}
-.form-control::-moz-placeholder {
- color: #999;
- opacity: 1
-}
-.form-control:-ms-input-placeholder {
- color: #999
-}
-.form-control::-webkit-input-placeholder {
- color: #999
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
- background-color: #eee;
- opacity: 1
-}
-.form-control[disabled],
-fieldset[disabled] .form-control {
- cursor: not-allowed
-}
-textarea.form-control {
- height: auto
-}
-input[type=search] {
- -webkit-appearance: none
-}
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
- input[type=date],
- input[type=time],
- input[type=datetime-local],
- input[type=month] {
- line-height: 34px
- }
- .input-group-sm input[type=date],
- .input-group-sm input[type=time],
- .input-group-sm input[type=datetime-local],
- .input-group-sm input[type=month],
- input[type=date].input-sm,
- input[type=time].input-sm,
- input[type=datetime-local].input-sm,
- input[type=month].input-sm {
- line-height: 30px
- }
- .input-group-lg input[type=date],
- .input-group-lg input[type=time],
- .input-group-lg input[type=datetime-local],
- .input-group-lg input[type=month],
- input[type=date].input-lg,
- input[type=time].input-lg,
- input[type=datetime-local].input-lg,
- input[type=month].input-lg {
- line-height: 46px
- }
-}
-.form-group {
- margin-bottom: 15px
-}
-.checkbox,
-.radio {
- position: relative;
- display: block;
- margin-top: 10px;
- margin-bottom: 10px
-}
-.checkbox label,
-.radio label {
- min-height: 20px;
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: 400;
- cursor: pointer
-}
-.checkbox input[type=checkbox],
-.checkbox-inline input[type=checkbox],
-.radio input[type=radio],
-.radio-inline input[type=radio] {
- position: absolute;
- margin-top: 4px \9;
- margin-left: -20px
-}
-.checkbox+.checkbox,
-.radio+.radio {
- margin-top: -5px
-}
-.checkbox-inline,
-.radio-inline {
- position: relative;
- display: inline-block;
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: 400;
- vertical-align: middle;
- cursor: pointer
-}
-.checkbox-inline+.checkbox-inline,
-.radio-inline+.radio-inline {
- margin-top: 0;
- margin-left: 10px
-}
-fieldset[disabled] input[type=checkbox],
-fieldset[disabled] input[type=radio],
-input[type=checkbox].disabled,
-input[type=checkbox][disabled],
-input[type=radio].disabled,
-input[type=radio][disabled] {
- cursor: not-allowed
-}
-.checkbox-inline.disabled,
-.radio-inline.disabled,
-fieldset[disabled] .checkbox-inline,
-fieldset[disabled] .radio-inline {
- cursor: not-allowed
-}
-.checkbox.disabled label,
-.radio.disabled label,
-fieldset[disabled] .checkbox label,
-fieldset[disabled] .radio label {
- cursor: not-allowed
-}
-.form-control-static {
- min-height: 34px;
- padding-top: 7px;
- padding-bottom: 7px;
- margin-bottom: 0
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
- padding-right: 0;
- padding-left: 0
-}
-.input-sm {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px
-}
-select.input-sm {
- height: 30px;
- line-height: 30px
-}
-select[multiple].input-sm,
-textarea.input-sm {
- height: auto
-}
-.form-group-sm .form-control {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px
-}
-select.form-group-sm .form-control {
- height: 30px;
- line-height: 30px
-}
-select[multiple].form-group-sm .form-control,
-textarea.form-group-sm .form-control {
- height: auto
-}
-.form-group-sm .form-control-static {
- height: 30px;
- min-height: 32px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5
-}
-.input-lg {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px
-}
-select.input-lg {
- height: 46px;
- line-height: 46px
-}
-select[multiple].input-lg,
-textarea.input-lg {
- height: auto
-}
-.form-group-lg .form-control {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px
-}
-select.form-group-lg .form-control {
- height: 46px;
- line-height: 46px
-}
-select[multiple].form-group-lg .form-control,
-textarea.form-group-lg .form-control {
- height: auto
-}
-.form-group-lg .form-control-static {
- height: 46px;
- min-height: 38px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333
-}
-.has-feedback {
- position: relative
-}
-.has-feedback .form-control {
- padding-right: 42.5px
-}
-.form-control-feedback {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 2;
- display: block;
- width: 34px;
- height: 34px;
- line-height: 34px;
- text-align: center;
- pointer-events: none
-}
-.input-lg+.form-control-feedback {
- width: 46px;
- height: 46px;
- line-height: 46px
-}
-.input-sm+.form-control-feedback {
- width: 30px;
- height: 30px;
- line-height: 30px
-}
-.has-success .checkbox,
-.has-success .checkbox-inline,
-.has-success .control-label,
-.has-success .help-block,
-.has-success .radio,
-.has-success .radio-inline,
-.has-success.checkbox label,
-.has-success.checkbox-inline label,
-.has-success.radio label,
-.has-success.radio-inline label {
- color: #3c763d
-}
-.has-success .form-control {
- border-color: #3c763d;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)
-}
-.has-success .form-control:focus {
- border-color: #2b542c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168
-}
-.has-success .input-group-addon {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #3c763d
-}
-.has-success .form-control-feedback {
- color: #3c763d
-}
-.has-warning .checkbox,
-.has-warning .checkbox-inline,
-.has-warning .control-label,
-.has-warning .help-block,
-.has-warning .radio,
-.has-warning .radio-inline,
-.has-warning.checkbox label,
-.has-warning.checkbox-inline label,
-.has-warning.radio label,
-.has-warning.radio-inline label {
- color: #8a6d3b
-}
-.has-warning .form-control {
- border-color: #8a6d3b;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)
-}
-.has-warning .form-control:focus {
- border-color: #66512c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b
-}
-.has-warning .input-group-addon {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #8a6d3b
-}
-.has-warning .form-control-feedback {
- color: #8a6d3b
-}
-.has-error .checkbox,
-.has-error .checkbox-inline,
-.has-error .control-label,
-.has-error .help-block,
-.has-error .radio,
-.has-error .radio-inline,
-.has-error.checkbox label,
-.has-error.checkbox-inline label,
-.has-error.radio label,
-.has-error.radio-inline label {
- color: #a94442
-}
-.has-error .form-control {
- border-color: #a94442;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075)
-}
-.has-error .form-control:focus {
- border-color: #843534;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483
-}
-.has-error .input-group-addon {
- color: #a94442;
- background-color: #f2dede;
- border-color: #a94442
-}
-.has-error .form-control-feedback {
- color: #a94442
-}
-.has-feedback label~.form-control-feedback {
- top: 25px
-}
-.has-feedback label.sr-only~.form-control-feedback {
- top: 0
-}
-.help-block {
- display: block;
- margin-top: 5px;
- margin-bottom: 10px;
- color: #737373
-}
-@media (min-width: 768px) {
- .form-inline .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle
- }
- .form-inline .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle
- }
- .form-inline .form-control-static {
- display: inline-block
- }
- .form-inline .input-group {
- display: inline-table;
- vertical-align: middle
- }
- .form-inline .input-group .form-control,
- .form-inline .input-group .input-group-addon,
- .form-inline .input-group .input-group-btn {
- width: auto
- }
- .form-inline .input-group>.form-control {
- width: 100%
- }
- .form-inline .control-label {
- margin-bottom: 0;
- vertical-align: middle
- }
- .form-inline .checkbox,
- .form-inline .radio {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle
- }
- .form-inline .checkbox label,
- .form-inline .radio label {
- padding-left: 0
- }
- .form-inline .checkbox input[type=checkbox],
- .form-inline .radio input[type=radio] {
- position: relative;
- margin-left: 0
- }
- .form-inline .has-feedback .form-control-feedback {
- top: 0
- }
-}
-.form-horizontal .checkbox,
-.form-horizontal .checkbox-inline,
-.form-horizontal .radio,
-.form-horizontal .radio-inline {
- padding-top: 7px;
- margin-top: 0;
- margin-bottom: 0
-}
-.form-horizontal .checkbox,
-.form-horizontal .radio {
- min-height: 27px
-}
-.form-horizontal .form-group {
- margin-right: -15px;
- margin-left: -15px
-}
-@media (min-width: 768px) {
- .form-horizontal .control-label {
- padding-top: 7px;
- margin-bottom: 0;
- text-align: right
- }
-}
-.form-horizontal .has-feedback .form-control-feedback {
- right: 15px
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-lg .control-label {
- padding-top: 14.33px
- }
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-sm .control-label {
- padding-top: 6px
- }
-}
-.btn {
- display: inline-block;
- padding: 6px 12px;
- margin-bottom: 0;
- font-size: 14px;
- font-weight: 400;
- line-height: 1.42857143;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
- -ms-touch-action: manipulation;
- touch-action: manipulation;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px
-}
-.btn.active.focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn:active:focus,
-.btn:focus {
- outline: thin dotted;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px
-}
-.btn.focus,
-.btn:focus,
-.btn:hover {
- color: #333;
- text-decoration: none
-}
-.btn.active,
-.btn:active {
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125)
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
- pointer-events: none;
- cursor: not-allowed;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- box-shadow: none;
- opacity: .65
-}
-.btn-default {
- color: #333;
- background-color: #fff;
- border-color: #ccc
-}
-.btn-default.active,
-.btn-default.focus,
-.btn-default:active,
-.btn-default:focus,
-.btn-default:hover,
-.open>.dropdown-toggle.btn-default {
- color: #333;
- background-color: #e6e6e6;
- border-color: #adadad
-}
-.btn-default.active,
-.btn-default:active,
-.open>.dropdown-toggle.btn-default {
- background-image: none
-}
-.btn-default.disabled,
-.btn-default.disabled.active,
-.btn-default.disabled.focus,
-.btn-default.disabled:active,
-.btn-default.disabled:focus,
-.btn-default.disabled:hover,
-.btn-default[disabled],
-.btn-default[disabled].active,
-.btn-default[disabled].focus,
-.btn-default[disabled]:active,
-.btn-default[disabled]:focus,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default,
-fieldset[disabled] .btn-default.active,
-fieldset[disabled] .btn-default.focus,
-fieldset[disabled] .btn-default:active,
-fieldset[disabled] .btn-default:focus,
-fieldset[disabled] .btn-default:hover {
- background-color: #fff;
- border-color: #ccc
-}
-.btn-default .badge {
- color: #fff;
- background-color: #333
-}
-.btn-primary {
- color: #fff;
- background-color: #337ab7;
- border-color: #2e6da4
-}
-.btn-primary.active,
-.btn-primary.focus,
-.btn-primary:active,
-.btn-primary:focus,
-.btn-primary:hover,
-.open>.dropdown-toggle.btn-primary {
- color: #fff;
- background-color: #286090;
- border-color: #204d74
-}
-.btn-primary.active,
-.btn-primary:active,
-.open>.dropdown-toggle.btn-primary {
- background-image: none
-}
-.btn-primary.disabled,
-.btn-primary.disabled.active,
-.btn-primary.disabled.focus,
-.btn-primary.disabled:active,
-.btn-primary.disabled:focus,
-.btn-primary.disabled:hover,
-.btn-primary[disabled],
-.btn-primary[disabled].active,
-.btn-primary[disabled].focus,
-.btn-primary[disabled]:active,
-.btn-primary[disabled]:focus,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary,
-fieldset[disabled] .btn-primary.active,
-fieldset[disabled] .btn-primary.focus,
-fieldset[disabled] .btn-primary:active,
-fieldset[disabled] .btn-primary:focus,
-fieldset[disabled] .btn-primary:hover {
- background-color: #337ab7;
- border-color: #2e6da4
-}
-.btn-primary .badge {
- color: #337ab7;
- background-color: #fff
-}
-.btn-success {
- color: #fff;
- background-color: #5cb85c;
- border-color: #4cae4c
-}
-.btn-success.active,
-.btn-success.focus,
-.btn-success:active,
-.btn-success:focus,
-.btn-success:hover,
-.open>.dropdown-toggle.btn-success {
- color: #fff;
- background-color: #449d44;
- border-color: #398439
-}
-.btn-success.active,
-.btn-success:active,
-.open>.dropdown-toggle.btn-success {
- background-image: none
-}
-.btn-success.disabled,
-.btn-success.disabled.active,
-.btn-success.disabled.focus,
-.btn-success.disabled:active,
-.btn-success.disabled:focus,
-.btn-success.disabled:hover,
-.btn-success[disabled],
-.btn-success[disabled].active,
-.btn-success[disabled].focus,
-.btn-success[disabled]:active,
-.btn-success[disabled]:focus,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success,
-fieldset[disabled] .btn-success.active,
-fieldset[disabled] .btn-success.focus,
-fieldset[disabled] .btn-success:active,
-fieldset[disabled] .btn-success:focus,
-fieldset[disabled] .btn-success:hover {
- background-color: #5cb85c;
- border-color: #4cae4c
-}
-.btn-success .badge {
- color: #5cb85c;
- background-color: #fff
-}
-.btn-info {
- color: #fff;
- background-color: #5bc0de;
- border-color: #46b8da
-}
-.btn-info.active,
-.btn-info.focus,
-.btn-info:active,
-.btn-info:focus,
-.btn-info:hover,
-.open>.dropdown-toggle.btn-info {
- color: #fff;
- background-color: #31b0d5;
- border-color: #269abc
-}
-.btn-info.active,
-.btn-info:active,
-.open>.dropdown-toggle.btn-info {
- background-image: none
-}
-.btn-info.disabled,
-.btn-info.disabled.active,
-.btn-info.disabled.focus,
-.btn-info.disabled:active,
-.btn-info.disabled:focus,
-.btn-info.disabled:hover,
-.btn-info[disabled],
-.btn-info[disabled].active,
-.btn-info[disabled].focus,
-.btn-info[disabled]:active,
-.btn-info[disabled]:focus,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info,
-fieldset[disabled] .btn-info.active,
-fieldset[disabled] .btn-info.focus,
-fieldset[disabled] .btn-info:active,
-fieldset[disabled] .btn-info:focus,
-fieldset[disabled] .btn-info:hover {
- background-color: #5bc0de;
- border-color: #46b8da
-}
-.btn-info .badge {
- color: #5bc0de;
- background-color: #fff
-}
-.btn-warning {
- color: #fff;
- background-color: #f0ad4e;
- border-color: #eea236
-}
-.btn-warning.active,
-.btn-warning.focus,
-.btn-warning:active,
-.btn-warning:focus,
-.btn-warning:hover,
-.open>.dropdown-toggle.btn-warning {
- color: #fff;
- background-color: #ec971f;
- border-color: #d58512
-}
-.btn-warning.active,
-.btn-warning:active,
-.open>.dropdown-toggle.btn-warning {
- background-image: none
-}
-.btn-warning.disabled,
-.btn-warning.disabled.active,
-.btn-warning.disabled.focus,
-.btn-warning.disabled:active,
-.btn-warning.disabled:focus,
-.btn-warning.disabled:hover,
-.btn-warning[disabled],
-.btn-warning[disabled].active,
-.btn-warning[disabled].focus,
-.btn-warning[disabled]:active,
-.btn-warning[disabled]:focus,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning,
-fieldset[disabled] .btn-warning.active,
-fieldset[disabled] .btn-warning.focus,
-fieldset[disabled] .btn-warning:active,
-fieldset[disabled] .btn-warning:focus,
-fieldset[disabled] .btn-warning:hover {
- background-color: #f0ad4e;
- border-color: #eea236
-}
-.btn-warning .badge {
- color: #f0ad4e;
- background-color: #fff
-}
-.btn-danger {
- color: #fff;
- background-color: #d9534f;
- border-color: #d43f3a
-}
-.btn-danger.active,
-.btn-danger.focus,
-.btn-danger:active,
-.btn-danger:focus,
-.btn-danger:hover,
-.open>.dropdown-toggle.btn-danger {
- color: #fff;
- background-color: #c9302c;
- border-color: #ac2925
-}
-.btn-danger.active,
-.btn-danger:active,
-.open>.dropdown-toggle.btn-danger {
- background-image: none
-}
-.btn-danger.disabled,
-.btn-danger.disabled.active,
-.btn-danger.disabled.focus,
-.btn-danger.disabled:active,
-.btn-danger.disabled:focus,
-.btn-danger.disabled:hover,
-.btn-danger[disabled],
-.btn-danger[disabled].active,
-.btn-danger[disabled].focus,
-.btn-danger[disabled]:active,
-.btn-danger[disabled]:focus,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger,
-fieldset[disabled] .btn-danger.active,
-fieldset[disabled] .btn-danger.focus,
-fieldset[disabled] .btn-danger:active,
-fieldset[disabled] .btn-danger:focus,
-fieldset[disabled] .btn-danger:hover {
- background-color: #d9534f;
- border-color: #d43f3a
-}
-.btn-danger .badge {
- color: #d9534f;
- background-color: #fff
-}
-.btn-link {
- font-weight: 400;
- color: #337ab7;
- border-radius: 0
-}
-.btn-link,
-.btn-link.active,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
- background-color: transparent;
- -webkit-box-shadow: none;
- box-shadow: none
-}
-.btn-link,
-.btn-link:active,
-.btn-link:focus,
-.btn-link:hover {
- border-color: transparent
-}
-.btn-link:focus,
-.btn-link:hover {
- color: #23527c;
- text-decoration: underline;
- background-color: transparent
-}
-.btn-link[disabled]:focus,
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:focus,
-fieldset[disabled] .btn-link:hover {
- color: #777;
- text-decoration: none
-}
-.btn-group-lg>.btn,
-.btn-lg {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px
-}
-.btn-group-sm>.btn,
-.btn-sm {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px
-}
-.btn-group-xs>.btn,
-.btn-xs {
- padding: 1px 5px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px
-}
-.btn-block {
- display: block;
- width: 100%
-}
-.btn-block+.btn-block {
- margin-top: 5px
-}
-input[type=button].btn-block,
-input[type=reset].btn-block,
-input[type=submit].btn-block {
- width: 100%
-}
-.fade {
- opacity: 0;
- -webkit-transition: opacity .15s linear;
- -o-transition: opacity .15s linear;
- transition: opacity .15s linear
-}
-.fade.in {
- opacity: 1
-}
-.collapse {
- display: none
-}
-.collapse.in {
- display: block
-}
-tr.collapse.in {
- display: table-row
-}
-tbody.collapse.in {
- display: table-row-group
-}
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- -webkit-transition-timing-function: ease;
- -o-transition-timing-function: ease;
- transition-timing-function: ease;
- -webkit-transition-duration: .35s;
- -o-transition-duration: .35s;
- transition-duration: .35s;
- -webkit-transition-property: height, visibility;
- -o-transition-property: height, visibility;
- transition-property: height, visibility
-}
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- margin-left: 2px;
- vertical-align: middle;
- border-top: 4px dashed;
- border-right: 4px solid transparent;
- border-left: 4px solid transparent
-}
-.dropdown,
-.dropup {
- position: relative
-}
-.dropdown-toggle:focus {
- outline: 0
-}
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: 1000;
- display: none;
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0;
- font-size: 14px;
- text-align: left;
- list-style: none;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, .15);
- border-radius: 4px;
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
- box-shadow: 0 6px 12px rgba(0, 0, 0, .175)
-}
-.dropdown-menu.pull-right {
- right: 0;
- left: auto
-}
-.dropdown-menu .divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5
-}
-.dropdown-menu>li>a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: 400;
- line-height: 1.42857143;
- color: #333;
- white-space: nowrap
-}
-.dropdown-menu>li>a:focus,
-.dropdown-menu>li>a:hover {
- color: #262626;
- text-decoration: none;
- background-color: #f5f5f5
-}
-.dropdown-menu>.active>a,
-.dropdown-menu>.active>a:focus,
-.dropdown-menu>.active>a:hover {
- color: #fff;
- text-decoration: none;
- background-color: #337ab7;
- outline: 0
-}
-.dropdown-menu>.disabled>a,
-.dropdown-menu>.disabled>a:focus,
-.dropdown-menu>.disabled>a:hover {
- color: #777
-}
-.dropdown-menu>.disabled>a:focus,
-.dropdown-menu>.disabled>a:hover {
- text-decoration: none;
- cursor: not-allowed;
- background-color: transparent;
- background-image: none;
- filter: progid: DXImageTransform.Microsoft.gradient(enabled=false)
-}
-.open>.dropdown-menu {
- display: block
-}
-.open>a {
- outline: 0
-}
-.dropdown-menu-right {
- right: 0;
- left: auto
-}
-.dropdown-menu-left {
- right: auto;
- left: 0
-}
-.dropdown-header {
- display: block;
- padding: 3px 20px;
- font-size: 12px;
- line-height: 1.42857143;
- color: #777;
- white-space: nowrap
-}
-.dropdown-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 990
-}
-.pull-right>.dropdown-menu {
- right: 0;
- left: auto
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
- content: "";
- border-top: 0;
- border-bottom: 4px solid
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 2px
-}
-@media (min-width: 768px) {
- .navbar-right .dropdown-menu {
- right: 0;
- left: auto
- }
- .navbar-right .dropdown-menu-left {
- right: auto;
- left: 0
- }
-}
-.btn-group,
-.btn-group-vertical {
- position: relative;
- display: inline-block;
- vertical-align: middle
-}
-.btn-group-vertical>.btn,
-.btn-group>.btn {
- position: relative;
- float: left
-}
-.btn-group-vertical>.btn.active,
-.btn-group-vertical>.btn:active,
-.btn-group-vertical>.btn:focus,
-.btn-group-vertical>.btn:hover,
-.btn-group>.btn.active,
-.btn-group>.btn:active,
-.btn-group>.btn:focus,
-.btn-group>.btn:hover {
- z-index: 2
-}
-.btn-group .btn+.btn,
-.btn-group .btn+.btn-group,
-.btn-group .btn-group+.btn,
-.btn-group .btn-group+.btn-group {
- margin-left: -1px
-}
-.btn-toolbar {
- margin-left: -5px
-}
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
- float: left
-}
-.btn-toolbar>.btn,
-.btn-toolbar>.btn-group,
-.btn-toolbar>.input-group {
- margin-left: 5px
-}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0
-}
-.btn-group>.btn:first-child {
- margin-left: 0
-}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0
-}
-.btn-group>.btn:last-child:not(:first-child),
-.btn-group>.dropdown-toggle:not(:first-child) {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0
-}
-.btn-group>.btn-group {
- float: left
-}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn {
- border-radius: 0
-}
-.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,
-.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0
-}
-.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0
-}
-.btn-group>.btn+.dropdown-toggle {
- padding-right: 8px;
- padding-left: 8px
-}
-.btn-group>.btn-lg+.dropdown-toggle {
- padding-right: 12px;
- padding-left: 12px
-}
-.btn-group.open .dropdown-toggle {
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125)
-}
-.btn-group.open .dropdown-toggle.btn-link {
- -webkit-box-shadow: none;
- box-shadow: none
-}
-.btn .caret {
- margin-left: 0
-}
-.btn-lg .caret {
- border-width: 5px 5px 0;
- border-bottom-width: 0
-}
-.dropup .btn-lg .caret {
- border-width: 0 5px 5px
-}
-.btn-group-vertical>.btn,
-.btn-group-vertical>.btn-group,
-.btn-group-vertical>.btn-group>.btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%
-}
-.btn-group-vertical>.btn-group>.btn {
- float: none
-}
-.btn-group-vertical>.btn+.btn,
-.btn-group-vertical>.btn+.btn-group,
-.btn-group-vertical>.btn-group+.btn,
-.btn-group-vertical>.btn-group+.btn-group {
- margin-top: -1px;
- margin-left: 0
-}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child) {
- border-radius: 0
-}
-.btn-group-vertical>.btn:first-child:not(:last-child) {
- border-top-right-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0
-}
-.btn-group-vertical>.btn:last-child:not(:first-child) {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- border-bottom-left-radius: 4px
-}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn {
- border-radius: 0
-}
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0
-}
-.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child {
- border-top-left-radius: 0;
- border-top-right-radius: 0
-}
-.btn-group-justified {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: separate
-}
-.btn-group-justified>.btn,
-.btn-group-justified>.btn-group {
- display: table-cell;
- float: none;
- width: 1%
-}
-.btn-group-justified>.btn-group .btn {
- width: 100%
-}
-.btn-group-justified>.btn-group .dropdown-menu {
- left: auto
-}
-[data-toggle=buttons]>.btn input[type=checkbox],
-[data-toggle=buttons]>.btn input[type=radio],
-[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],
-[data-toggle=buttons]>.btn-group>.btn input[type=radio] {
- position: absolute;
- clip: rect(0, 0, 0, 0);
- pointer-events: none
-}
-.input-group {
- position: relative;
- display: table;
- border-collapse: separate
-}
-.input-group[class*=col-] {
- float: none;
- padding-right: 0;
- padding-left: 0
-}
-.input-group .form-control {
- position: relative;
- z-index: 2;
- float: left;
- width: 100%;
- margin-bottom: 0
-}
-.input-group-lg>.form-control,
-.input-group-lg>.input-group-addon,
-.input-group-lg>.input-group-btn>.btn {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px
-}
-select.input-group-lg>.form-control,
-select.input-group-lg>.input-group-addon,
-select.input-group-lg>.input-group-btn>.btn {
- height: 46px;
- line-height: 46px
-}
-select[multiple].input-group-lg>.form-control,
-select[multiple].input-group-lg>.input-group-addon,
-select[multiple].input-group-lg>.input-group-btn>.btn,
-textarea.input-group-lg>.form-control,
-textarea.input-group-lg>.input-group-addon,
-textarea.input-group-lg>.input-group-btn>.btn {
- height: auto
-}
-.input-group-sm>.form-control,
-.input-group-sm>.input-group-addon,
-.input-group-sm>.input-group-btn>.btn {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px
-}
-select.input-group-sm>.form-control,
-select.input-group-sm>.input-group-addon,
-select.input-group-sm>.input-group-btn>.btn {
- height: 30px;
- line-height: 30px
-}
-select[multiple].input-group-sm>.form-control,
-select[multiple].input-group-sm>.input-group-addon,
-select[multiple].input-group-sm>.input-group-btn>.btn,
-textarea.input-group-sm>.form-control,
-textarea.input-group-sm>.input-group-addon,
-textarea.input-group-sm>.input-group-btn>.btn {
- height: auto
-}
-.input-group .form-control,
-.input-group-addon,
-.input-group-btn {
- display: table-cell
-}
-.input-group .form-control:not(:first-child):not(:last-child),
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child) {
- border-radius: 0
-}
-.input-group-addon,
-.input-group-btn {
- width: 1%;
- white-space: nowrap;
- vertical-align: middle
-}
-.input-group-addon {
- padding: 6px 12px;
- font-size: 14px;
- font-weight: 400;
- line-height: 1;
- color: #555;
- text-align: center;
- background-color: #eee;
- border: 1px solid #ccc;
- border-radius: 4px
-}
-.input-group-addon.input-sm {
- padding: 5px 10px;
- font-size: 12px;
- border-radius: 3px
-}
-.input-group-addon.input-lg {
- padding: 10px 16px;
- font-size: 18px;
- border-radius: 6px
-}
-.input-group-addon input[type=checkbox],
-.input-group-addon input[type=radio] {
- margin-top: 0
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child>.btn,
-.input-group-btn:first-child>.btn-group>.btn,
-.input-group-btn:first-child>.dropdown-toggle,
-.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,
-.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0
-}
-.input-group-addon:first-child {
- border-right: 0
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,
-.input-group-btn:first-child>.btn:not(:first-child),
-.input-group-btn:last-child>.btn,
-.input-group-btn:last-child>.btn-group>.btn,
-.input-group-btn:last-child>.dropdown-toggle {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0
-}
-.input-group-addon:last-child {
- border-left: 0
-}
-.input-group-btn {
- position: relative;
- font-size: 0;
- white-space: nowrap
-}
-.input-group-btn>.btn {
- position: relative
-}
-.input-group-btn>.btn+.btn {
- margin-left: -1px
-}
-.input-group-btn>.btn:active,
-.input-group-btn>.btn:focus,
-.input-group-btn>.btn:hover {
- z-index: 2
-}
-.input-group-btn:first-child>.btn,
-.input-group-btn:first-child>.btn-group {
- margin-right: -1px
-}
-.input-group-btn:last-child>.btn,
-.input-group-btn:last-child>.btn-group {
- margin-left: -1px
-}
-.nav {
- padding-left: 0;
- margin-bottom: 0;
- list-style: none
-}
-.nav>li {
- position: relative;
- display: block
-}
-.nav>li>a {
- position: relative;
- display: block;
- padding: 10px 15px
-}
-.nav>li>a:focus,
-.nav>li>a:hover {
- text-decoration: none;
- background-color: #eee
-}
-.nav>li.disabled>a {
- color: #777
-}
-.nav>li.disabled>a:focus,
-.nav>li.disabled>a:hover {
- color: #777;
- text-decoration: none;
- cursor: not-allowed;
- background-color: transparent
-}
-.nav .open>a,
-.nav .open>a:focus,
-.nav .open>a:hover {
- background-color: #eee;
- border-color: #337ab7
-}
-.nav .nav-divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5
-}
-.nav>li>a>img {
- max-width: none
-}
-.nav-tabs {
- border-bottom: 1px solid #ddd
-}
-.nav-tabs>li {
- float: left;
- margin-bottom: -1px
-}
-.nav-tabs>li>a {
- margin-right: 2px;
- line-height: 1.42857143;
- border: 1px solid transparent;
- border-radius: 4px 4px 0 0
-}
-.nav-tabs>li>a:hover {
- border-color: #eee #eee #ddd
-}
-.nav-tabs>li.active>a,
-.nav-tabs>li.active>a:focus,
-.nav-tabs>li.active>a:hover {
- color: #555;
- cursor: default;
- background-color: #fff;
- border: 1px solid #ddd;
- border-bottom-color: transparent
-}
-.nav-tabs.nav-justified {
- width: 100%;
- border-bottom: 0
-}
-.nav-tabs.nav-justified>li {
- float: none
-}
-.nav-tabs.nav-justified>li>a {
- margin-bottom: 5px;
- text-align: center
-}
-.nav-tabs.nav-justified>.dropdown .dropdown-menu {
- top: auto;
- left: auto
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified>li {
- display: table-cell;
- width: 1%
- }
- .nav-tabs.nav-justified>li>a {
- margin-bottom: 0
- }
-}
-.nav-tabs.nav-justified>li>a {
- margin-right: 0;
- border-radius: 4px
-}
-.nav-tabs.nav-justified>.active>a,
-.nav-tabs.nav-justified>.active>a:focus,
-.nav-tabs.nav-justified>.active>a:hover {
- border: 1px solid #ddd
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified>li>a {
- border-bottom: 1px solid #ddd;
- border-radius: 4px 4px 0 0
- }
- .nav-tabs.nav-justified>.active>a,
- .nav-tabs.nav-justified>.active>a:focus,
- .nav-tabs.nav-justified>.active>a:hover {
- border-bottom-color: #fff
- }
-}
-.nav-pills>li {
- float: left
-}
-.nav-pills>li>a {
- border-radius: 4px
-}
-.nav-pills>li+li {
- margin-left: 2px
-}
-.nav-pills>li.active>a,
-.nav-pills>li.active>a:focus,
-.nav-pills>li.active>a:hover {
- color: #fff;
- background-color: #337ab7
-}
-.nav-stacked>li {
- float: none
-}
-.nav-stacked>li+li {
- margin-top: 2px;
- margin-left: 0
-}
-.nav-justified {
- width: 100%
-}
-.nav-justified>li {
- float: none
-}
-.nav-justified>li>a {
- margin-bottom: 5px;
- text-align: center
-}
-.nav-justified>.dropdown .dropdown-menu {
- top: auto;
- left: auto
-}
-@media (min-width: 768px) {
- .nav-justified>li {
- display: table-cell;
- width: 1%
- }
- .nav-justified>li>a {
- margin-bottom: 0
- }
-}
-.nav-tabs-justified {
- border-bottom: 0
-}
-.nav-tabs-justified>li>a {
- margin-right: 0;
- border-radius: 4px
-}
-.nav-tabs-justified>.active>a,
-.nav-tabs-justified>.active>a:focus,
-.nav-tabs-justified>.active>a:hover {
- border: 1px solid #ddd
-}
-@media (min-width: 768px) {
- .nav-tabs-justified>li>a {
- border-bottom: 1px solid #ddd;
- border-radius: 4px 4px 0 0
- }
- .nav-tabs-justified>.active>a,
- .nav-tabs-justified>.active>a:focus,
- .nav-tabs-justified>.active>a:hover {
- border-bottom-color: #fff
- }
-}
-.tab-content>.tab-pane {
- display: none
-}
-.tab-content>.active {
- display: block
-}
-.nav-tabs .dropdown-menu {
- margin-top: -1px;
- border-top-left-radius: 0;
- border-top-right-radius: 0
-}
-.navbar {
- position: relative;
- min-height: 50px;
- margin-bottom: 20px;
- border: 1px solid transparent
-}
-@media (min-width: 768px) {
- .navbar {
- border-radius: 4px
- }
-}
-@media (min-width: 768px) {
- .navbar-header {
- float: left
- }
-}
-.navbar-collapse {
- padding-right: 15px;
- padding-left: 15px;
- overflow-x: visible;
- -webkit-overflow-scrolling: touch;
- border-top: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1)
-}
-.navbar-collapse.in {
- overflow-y: auto
-}
-@media (min-width: 768px) {
- .navbar-collapse {
- width: auto;
- border-top: 0;
- -webkit-box-shadow: none;
- box-shadow: none
- }
- .navbar-collapse.collapse {
- display: block!important;
- height: auto!important;
- padding-bottom: 0;
- overflow: visible!important
- }
- .navbar-collapse.in {
- overflow-y: visible
- }
- .navbar-fixed-bottom .navbar-collapse,
- .navbar-fixed-top .navbar-collapse,
- .navbar-static-top .navbar-collapse {
- padding-right: 0;
- padding-left: 0
- }
-}
-.navbar-fixed-bottom .navbar-collapse,
-.navbar-fixed-top .navbar-collapse {
- max-height: 340px
-}
-@media (max-device-width: 480px)and (orientation: landscape) {
- .navbar-fixed-bottom .navbar-collapse,
- .navbar-fixed-top .navbar-collapse {
- max-height: 200px
- }
-}
-.container-fluid>.navbar-collapse,
-.container-fluid>.navbar-header,
-.container>.navbar-collapse,
-.container>.navbar-header {
- margin-right: -15px;
- margin-left: -15px
-}
-@media (min-width: 768px) {
- .container-fluid>.navbar-collapse,
- .container-fluid>.navbar-header,
- .container>.navbar-collapse,
- .container>.navbar-header {
- margin-right: 0;
- margin-left: 0
- }
-}
-.navbar-static-top {
- z-index: 1000;
- border-width: 0 0 1px
-}
-@media (min-width: 768px) {
- .navbar-static-top {
- border-radius: 0
- }
-}
-.navbar-fixed-bottom,
-.navbar-fixed-top {
- position: fixed;
- right: 0;
- left: 0;
- z-index: 1030
-}
-@media (min-width: 768px) {
- .navbar-fixed-bottom,
- .navbar-fixed-top {
- border-radius: 0
- }
-}
-.navbar-fixed-top {
- top: 0;
- border-width: 0 0 1px
-}
-.navbar-fixed-bottom {
- bottom: 0;
- margin-bottom: 0;
- border-width: 1px 0 0
-}
-.navbar-brand {
- float: left;
- height: 50px;
- padding: 15px 15px;
- font-size: 18px;
- line-height: 20px
-}
-.navbar-brand:focus,
-.navbar-brand:hover {
- text-decoration: none
-}
-.navbar-brand>img {
- display: block
-}
-@media (min-width: 768px) {
- .navbar>.container .navbar-brand,
- .navbar>.container-fluid .navbar-brand {
- margin-left: -15px
- }
-}
-.navbar-toggle {
- position: relative;
- float: right;
- padding: 9px 10px;
- margin-top: 8px;
- margin-right: 15px;
- margin-bottom: 8px;
- background-color: transparent;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px
-}
-.navbar-toggle:focus {
- outline: 0
-}
-.navbar-toggle .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px
-}
-.navbar-toggle .icon-bar+.icon-bar {
- margin-top: 4px
-}
-@media (min-width: 768px) {
- .navbar-toggle {
- display: none
- }
-}
-.navbar-nav {
- margin: 7.5px -15px
-}
-.navbar-nav>li>a {
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: 20px
-}
-@media (max-width: 767px) {
- .navbar-nav .open .dropdown-menu {
- position: static;
- float: none;
- width: auto;
- margin-top: 0;
- background-color: transparent;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none
- }
- .navbar-nav .open .dropdown-menu .dropdown-header,
- .navbar-nav .open .dropdown-menu>li>a {
- padding: 5px 15px 5px 25px
- }
- .navbar-nav .open .dropdown-menu>li>a {
- line-height: 20px
- }
- .navbar-nav .open .dropdown-menu>li>a:focus,
- .navbar-nav .open .dropdown-menu>li>a:hover {
- background-image: none
- }
-}
-@media (min-width: 768px) {
- .navbar-nav {
- float: left;
- margin: 0
- }
- .navbar-nav>li {
- float: left
- }
- .navbar-nav>li>a {
- padding-top: 15px;
- padding-bottom: 15px
- }
-}
-.navbar-form {
- padding: 10px 15px;
- margin-top: 8px;
- margin-right: -15px;
- margin-bottom: 8px;
- margin-left: -15px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1)
-}
-@media (min-width: 768px) {
- .navbar-form .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle
- }
- .navbar-form .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle
- }
- .navbar-form .form-control-static {
- display: inline-block
- }
- .navbar-form .input-group {
- display: inline-table;
- vertical-align: middle
- }
- .navbar-form .input-group .form-control,
- .navbar-form .input-group .input-group-addon,
- .navbar-form .input-group .input-group-btn {
- width: auto
- }
- .navbar-form .input-group>.form-control {
- width: 100%
- }
- .navbar-form .control-label {
- margin-bottom: 0;
- vertical-align: middle
- }
- .navbar-form .checkbox,
- .navbar-form .radio {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle
- }
- .navbar-form .checkbox label,
- .navbar-form .radio label {
- padding-left: 0
- }
- .navbar-form .checkbox input[type=checkbox],
- .navbar-form .radio input[type=radio] {
- position: relative;
- margin-left: 0
- }
- .navbar-form .has-feedback .form-control-feedback {
- top: 0
- }
-}
-@media (max-width: 767px) {
- .navbar-form .form-group {
- margin-bottom: 5px
- }
- .navbar-form .form-group:last-child {
- margin-bottom: 0
- }
-}
-@media (min-width: 768px) {
- .navbar-form {
- width: auto;
- padding-top: 0;
- padding-bottom: 0;
- margin-right: 0;
- margin-left: 0;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none
- }
-}
-.navbar-nav>li>.dropdown-menu {
- margin-top: 0;
- border-top-left-radius: 0;
- border-top-right-radius: 0
-}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu {
- margin-bottom: 0;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0
-}
-.navbar-btn {
- margin-top: 8px;
- margin-bottom: 8px
-}
-.navbar-btn.btn-sm {
- margin-top: 10px;
- margin-bottom: 10px
-}
-.navbar-btn.btn-xs {
- margin-top: 14px;
- margin-bottom: 14px
-}
-.navbar-text {
- margin-top: 15px;
- margin-bottom: 15px
-}
-@media (min-width: 768px) {
- .navbar-text {
- float: left;
- margin-right: 15px;
- margin-left: 15px
- }
-}
-@media (min-width: 768px) {
- .navbar-left {
- float: left!important
- }
- .navbar-right {
- float: right!important;
- margin-right: -15px
- }
- .navbar-right~.navbar-right {
- margin-right: 0
- }
-}
-.navbar-default {
- background-color: #f8f8f8;
- border-color: #e7e7e7
-}
-.navbar-default .navbar-brand {
- color: #777
-}
-.navbar-default .navbar-brand:focus,
-.navbar-default .navbar-brand:hover {
- color: #5e5e5e;
- background-color: transparent
-}
-.navbar-default .navbar-text {
- color: #777
-}
-.navbar-default .navbar-nav>li>a {
- color: #777
-}
-.navbar-default .navbar-nav>li>a:focus,
-.navbar-default .navbar-nav>li>a:hover {
- color: #333;
- background-color: transparent
-}
-.navbar-default .navbar-nav>.active>a,
-.navbar-default .navbar-nav>.active>a:focus,
-.navbar-default .navbar-nav>.active>a:hover {
- color: #555;
- background-color: #e7e7e7
-}
-.navbar-default .navbar-nav>.disabled>a,
-.navbar-default .navbar-nav>.disabled>a:focus,
-.navbar-default .navbar-nav>.disabled>a:hover {
- color: #ccc;
- background-color: transparent
-}
-.navbar-default .navbar-toggle {
- border-color: #ddd
-}
-.navbar-default .navbar-toggle:focus,
-.navbar-default .navbar-toggle:hover {
- background-color: #ddd
-}
-.navbar-default .navbar-toggle .icon-bar {
- background-color: #888
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
- border-color: #e7e7e7
-}
-.navbar-default .navbar-nav>.open>a,
-.navbar-default .navbar-nav>.open>a:focus,
-.navbar-default .navbar-nav>.open>a:hover {
- color: #555;
- background-color: #e7e7e7
-}
-@media (max-width: 767px) {
- .navbar-default .navbar-nav .open .dropdown-menu>li>a {
- color: #777
- }
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover {
- color: #333;
- background-color: transparent
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a,
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover {
- color: #555;
- background-color: #e7e7e7
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover {
- color: #ccc;
- background-color: transparent
- }
-}
-.navbar-default .navbar-link {
- color: #777
-}
-.navbar-default .navbar-link:hover {
- color: #333
-}
-.navbar-default .btn-link {
- color: #777
-}
-.navbar-default .btn-link:focus,
-.navbar-default .btn-link:hover {
- color: #333
-}
-.navbar-default .btn-link[disabled]:focus,
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:focus,
-fieldset[disabled] .navbar-default .btn-link:hover {
- color: #ccc
-}
-.navbar-inverse {
- background-color: #222;
- border-color: #080808
-}
-.navbar-inverse .navbar-brand {
- color: #9d9d9d
-}
-.navbar-inverse .navbar-brand:focus,
-.navbar-inverse .navbar-brand:hover {
- color: #fff;
- background-color: transparent
-}
-.navbar-inverse .navbar-text {
- color: #9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a {
- color: #9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a:focus,
-.navbar-inverse .navbar-nav>li>a:hover {
- color: #fff;
- background-color: transparent
-}
-.navbar-inverse .navbar-nav>.active>a,
-.navbar-inverse .navbar-nav>.active>a:focus,
-.navbar-inverse .navbar-nav>.active>a:hover {
- color: #fff;
- background-color: #080808
-}
-.navbar-inverse .navbar-nav>.disabled>a,
-.navbar-inverse .navbar-nav>.disabled>a:focus,
-.navbar-inverse .navbar-nav>.disabled>a:hover {
- color: #444;
- background-color: transparent
-}
-.navbar-inverse .navbar-toggle {
- border-color: #333
-}
-.navbar-inverse .navbar-toggle:focus,
-.navbar-inverse .navbar-toggle:hover {
- background-color: #333
-}
-.navbar-inverse .navbar-toggle .icon-bar {
- background-color: #fff
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
- border-color: #101010
-}
-.navbar-inverse .navbar-nav>.open>a,
-.navbar-inverse .navbar-nav>.open>a:focus,
-.navbar-inverse .navbar-nav>.open>a:hover {
- color: #fff;
- background-color: #080808
-}
-@media (max-width: 767px) {
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header {
- border-color: #080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
- background-color: #080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
- color: #9d9d9d
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover {
- color: #fff;
- background-color: transparent
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover {
- color: #fff;
- background-color: #080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover {
- color: #444;
- background-color: transparent
- }
-}
-.navbar-inverse .navbar-link {
- color: #9d9d9d
-}
-.navbar-inverse .navbar-link:hover {
- color: #fff
-}
-.navbar-inverse .btn-link {
- color: #9d9d9d
-}
-.navbar-inverse .btn-link:focus,
-.navbar-inverse .btn-link:hover {
- color: #fff
-}
-.navbar-inverse .btn-link[disabled]:focus,
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:focus,
-fieldset[disabled] .navbar-inverse .btn-link:hover {
- color: #444
-}
-.breadcrumb {
- padding: 8px 15px;
- margin-bottom: 20px;
- list-style: none;
- background-color: #f5f5f5;
- border-radius: 4px
-}
-.breadcrumb>li {
- display: inline-block
-}
-.breadcrumb>li+li:before {
- padding: 0 5px;
- color: #ccc;
- content: "/\00a0"
-}
-.breadcrumb>.active {
- color: #777
-}
-.pagination {
- display: inline-block;
- padding-left: 0;
- margin: 20px 0;
- border-radius: 4px
-}
-.pagination>li {
- display: inline
-}
-.pagination>li>a,
-.pagination>li>span {
- position: relative;
- float: left;
- padding: 6px 12px;
- margin-left: -1px;
- line-height: 1.42857143;
- color: #337ab7;
- text-decoration: none;
- background-color: #fff;
- border: 1px solid #ddd
-}
-.pagination>li:first-child>a,
-.pagination>li:first-child>span {
- margin-left: 0;
- border-top-left-radius: 4px;
- border-bottom-left-radius: 4px
-}
-.pagination>li:last-child>a,
-.pagination>li:last-child>span {
- border-top-right-radius: 4px;
- border-bottom-right-radius: 4px
-}
-.pagination>li>a:focus,
-.pagination>li>a:hover,
-.pagination>li>span:focus,
-.pagination>li>span:hover {
- color: #23527c;
- background-color: #eee;
- border-color: #ddd
-}
-.pagination>.active>a,
-.pagination>.active>a:focus,
-.pagination>.active>a:hover,
-.pagination>.active>span,
-.pagination>.active>span:focus,
-.pagination>.active>span:hover {
- z-index: 2;
- color: #fff;
- cursor: default;
- background-color: #337ab7;
- border-color: #337ab7
-}
-.pagination>.disabled>a,
-.pagination>.disabled>a:focus,
-.pagination>.disabled>a:hover,
-.pagination>.disabled>span,
-.pagination>.disabled>span:focus,
-.pagination>.disabled>span:hover {
- color: #777;
- cursor: not-allowed;
- background-color: #fff;
- border-color: #ddd
-}
-.pagination-lg>li>a,
-.pagination-lg>li>span {
- padding: 10px 16px;
- font-size: 18px
-}
-.pagination-lg>li:first-child>a,
-.pagination-lg>li:first-child>span {
- border-top-left-radius: 6px;
- border-bottom-left-radius: 6px
-}
-.pagination-lg>li:last-child>a,
-.pagination-lg>li:last-child>span {
- border-top-right-radius: 6px;
- border-bottom-right-radius: 6px
-}
-.pagination-sm>li>a,
-.pagination-sm>li>span {
- padding: 5px 10px;
- font-size: 12px
-}
-.pagination-sm>li:first-child>a,
-.pagination-sm>li:first-child>span {
- border-top-left-radius: 3px;
- border-bottom-left-radius: 3px
-}
-.pagination-sm>li:last-child>a,
-.pagination-sm>li:last-child>span {
- border-top-right-radius: 3px;
- border-bottom-right-radius: 3px
-}
-.pager {
- padding-left: 0;
- margin: 20px 0;
- text-align: center;
- list-style: none
-}
-.pager li {
- display: inline
-}
-.pager li>a,
-.pager li>span {
- display: inline-block;
- padding: 5px 14px;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 15px
-}
-.pager li>a:focus,
-.pager li>a:hover {
- text-decoration: none;
- background-color: #eee
-}
-.pager .next>a,
-.pager .next>span {
- float: right
-}
-.pager .previous>a,
-.pager .previous>span {
- float: left
-}
-.pager .disabled>a,
-.pager .disabled>a:focus,
-.pager .disabled>a:hover,
-.pager .disabled>span {
- color: #777;
- cursor: not-allowed;
- background-color: #fff
-}
-.label {
- display: inline;
- padding: .2em .6em .3em;
- font-size: 75%;
- font-weight: 700;
- line-height: 1;
- color: #fff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- border-radius: .25em
-}
-a.label:focus,
-a.label:hover {
- color: #fff;
- text-decoration: none;
- cursor: pointer
-}
-.label:empty {
- display: none
-}
-.btn .label {
- position: relative;
- top: -1px
-}
-.label-default {
- background-color: #777
-}
-.label-default[href]:focus,
-.label-default[href]:hover {
- background-color: #5e5e5e
-}
-.label-primary {
- background-color: #337ab7
-}
-.label-primary[href]:focus,
-.label-primary[href]:hover {
- background-color: #286090
-}
-.label-success {
- background-color: #5cb85c
-}
-.label-success[href]:focus,
-.label-success[href]:hover {
- background-color: #449d44
-}
-.label-info {
- background-color: #5bc0de
-}
-.label-info[href]:focus,
-.label-info[href]:hover {
- background-color: #31b0d5
-}
-.label-warning {
- background-color: #f0ad4e
-}
-.label-warning[href]:focus,
-.label-warning[href]:hover {
- background-color: #ec971f
-}
-.label-danger {
- background-color: #d9534f
-}
-.label-danger[href]:focus,
-.label-danger[href]:hover {
- background-color: #c9302c
-}
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: 700;
- line-height: 1;
- color: #fff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- background-color: #777;
- border-radius: 10px
-}
-.badge:empty {
- display: none
-}
-.btn .badge {
- position: relative;
- top: -1px
-}
-.btn-group-xs>.btn .badge,
-.btn-xs .badge {
- top: 0;
- padding: 1px 5px
-}
-a.badge:focus,
-a.badge:hover {
- color: #fff;
- text-decoration: none;
- cursor: pointer
-}
-.list-group-item.active>.badge,
-.nav-pills>.active>a>.badge {
- color: #337ab7;
- background-color: #fff
-}
-.list-group-item>.badge {
- float: right
-}
-.list-group-item>.badge+.badge {
- margin-right: 5px
-}
-.nav-pills>li>a>.badge {
- margin-left: 3px
-}
-.jumbotron {
- padding: 30px 15px;
- margin-bottom: 30px;
- color: inherit;
- background-color: #eee
-}
-.jumbotron .h1,
-.jumbotron h1 {
- color: inherit
-}
-.jumbotron p {
- margin-bottom: 15px;
- font-size: 21px;
- font-weight: 200
-}
-.jumbotron>hr {
- border-top-color: #d5d5d5
-}
-.container .jumbotron,
-.container-fluid .jumbotron {
- border-radius: 6px
-}
-.jumbotron .container {
- max-width: 100%
-}
-@media screen and (min-width: 768px) {
- .jumbotron {
- padding: 48px 0
- }
- .container .jumbotron,
- .container-fluid .jumbotron {
- padding-right: 60px;
- padding-left: 60px
- }
- .jumbotron .h1,
- .jumbotron h1 {
- font-size: 63px
- }
-}
-.thumbnail {
- display: block;
- padding: 4px;
- margin-bottom: 20px;
- line-height: 1.42857143;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
- -webkit-transition: border .2s ease-in-out;
- -o-transition: border .2s ease-in-out;
- transition: border .2s ease-in-out
-}
-.thumbnail a>img,
-.thumbnail>img {
- margin-right: auto;
- margin-left: auto
-}
-a.thumbnail.active,
-a.thumbnail:focus,
-a.thumbnail:hover {
- border-color: #337ab7
-}
-.thumbnail .caption {
- padding: 9px;
- color: #333
-}
-.alert {
- padding: 15px;
- margin-bottom: 20px;
- border: 1px solid transparent;
- border-radius: 4px
-}
-.alert h4 {
- margin-top: 0;
- color: inherit
-}
-.alert .alert-link {
- font-weight: 700
-}
-.alert>p,
-.alert>ul {
- margin-bottom: 0
-}
-.alert>p+p {
- margin-top: 5px
-}
-.alert-dismissable,
-.alert-dismissible {
- padding-right: 35px
-}
-.alert-dismissable .close,
-.alert-dismissible .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit
-}
-.alert-success {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6
-}
-.alert-success hr {
- border-top-color: #c9e2b3
-}
-.alert-success .alert-link {
- color: #2b542c
-}
-.alert-info {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1
-}
-.alert-info hr {
- border-top-color: #a6e1ec
-}
-.alert-info .alert-link {
- color: #245269
-}
-.alert-warning {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc
-}
-.alert-warning hr {
- border-top-color: #f7e1b5
-}
-.alert-warning .alert-link {
- color: #66512c
-}
-.alert-danger {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1
-}
-.alert-danger hr {
- border-top-color: #e4b9c0
-}
-.alert-danger .alert-link {
- color: #843534
-}
-@-webkit-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0
- }
- to {
- background-position: 0 0
- }
-}
-@-o-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0
- }
- to {
- background-position: 0 0
- }
-}
-@keyframes progress-bar-stripes {
- from {
- background-position: 40px 0
- }
- to {
- background-position: 0 0
- }
-}
-.progress {
- height: 20px;
- margin-bottom: 20px;
- overflow: hidden;
- background-color: #f5f5f5;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1)
-}
-.progress-bar {
- float: left;
- width: 0;
- height: 100%;
- font-size: 12px;
- line-height: 20px;
- color: #fff;
- text-align: center;
- background-color: #337ab7;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
- -webkit-transition: width .6s ease;
- -o-transition: width .6s ease;
- transition: width .6s ease
-}
-.progress-bar-striped,
-.progress-striped .progress-bar {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- -webkit-background-size: 40px 40px;
- background-size: 40px 40px
-}
-.progress-bar.active,
-.progress.active .progress-bar {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite
-}
-.progress-bar-success {
- background-color: #5cb85c
-}
-.progress-striped .progress-bar-success {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)
-}
-.progress-bar-info {
- background-color: #5bc0de
-}
-.progress-striped .progress-bar-info {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)
-}
-.progress-bar-warning {
- background-color: #f0ad4e
-}
-.progress-striped .progress-bar-warning {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)
-}
-.progress-bar-danger {
- background-color: #d9534f
-}
-.progress-striped .progress-bar-danger {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)
-}
-.media {
- margin-top: 15px
-}
-.media:first-child {
- margin-top: 0
-}
-.media,
-.media-body {
- overflow: hidden;
- zoom: 1
-}
-.media-body {
- width: 10000px
-}
-.media-object {
- display: block
-}
-.media-right,
-.media>.pull-right {
- padding-left: 10px
-}
-.media-left,
-.media>.pull-left {
- padding-right: 10px
-}
-.media-body,
-.media-left,
-.media-right {
- display: table-cell;
- vertical-align: top
-}
-.media-middle {
- vertical-align: middle
-}
-.media-bottom {
- vertical-align: bottom
-}
-.media-heading {
- margin-top: 0;
- margin-bottom: 5px
-}
-.media-list {
- padding-left: 0;
- list-style: none
-}
-.list-group {
- padding-left: 0;
- margin-bottom: 20px
-}
-.list-group-item {
- position: relative;
- display: block;
- padding: 10px 15px;
- margin-bottom: -1px;
- background-color: #fff;
- border: 1px solid #ddd
-}
-.list-group-item:first-child {
- border-top-left-radius: 4px;
- border-top-right-radius: 4px
-}
-.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 4px;
- border-bottom-left-radius: 4px
-}
-a.list-group-item {
- color: #555
-}
-a.list-group-item .list-group-item-heading {
- color: #333
-}
-a.list-group-item:focus,
-a.list-group-item:hover {
- color: #555;
- text-decoration: none;
- background-color: #f5f5f5
-}
-.list-group-item.disabled,
-.list-group-item.disabled:focus,
-.list-group-item.disabled:hover {
- color: #777;
- cursor: not-allowed;
- background-color: #eee
-}
-.list-group-item.disabled .list-group-item-heading,
-.list-group-item.disabled:focus .list-group-item-heading,
-.list-group-item.disabled:hover .list-group-item-heading {
- color: inherit
-}
-.list-group-item.disabled .list-group-item-text,
-.list-group-item.disabled:focus .list-group-item-text,
-.list-group-item.disabled:hover .list-group-item-text {
- color: #777
-}
-.list-group-item.active,
-.list-group-item.active:focus,
-.list-group-item.active:hover {
- z-index: 2;
- color: #fff;
- background-color: #337ab7;
- border-color: #337ab7
-}
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active .list-group-item-heading>.small,
-.list-group-item.active .list-group-item-heading>small,
-.list-group-item.active:focus .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading>.small,
-.list-group-item.active:focus .list-group-item-heading>small,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading>.small,
-.list-group-item.active:hover .list-group-item-heading>small {
- color: inherit
-}
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text {
- color: #c7ddef
-}
-.list-group-item-success {
- color: #3c763d;
- background-color: #dff0d8
-}
-a.list-group-item-success {
- color: #3c763d
-}
-a.list-group-item-success .list-group-item-heading {
- color: inherit
-}
-a.list-group-item-success:focus,
-a.list-group-item-success:hover {
- color: #3c763d;
- background-color: #d0e9c6
-}
-a.list-group-item-success.active,
-a.list-group-item-success.active:focus,
-a.list-group-item-success.active:hover {
- color: #fff;
- background-color: #3c763d;
- border-color: #3c763d
-}
-.list-group-item-info {
- color: #31708f;
- background-color: #d9edf7
-}
-a.list-group-item-info {
- color: #31708f
-}
-a.list-group-item-info .list-group-item-heading {
- color: inherit
-}
-a.list-group-item-info:focus,
-a.list-group-item-info:hover {
- color: #31708f;
- background-color: #c4e3f3
-}
-a.list-group-item-info.active,
-a.list-group-item-info.active:focus,
-a.list-group-item-info.active:hover {
- color: #fff;
- background-color: #31708f;
- border-color: #31708f
-}
-.list-group-item-warning {
- color: #8a6d3b;
- background-color: #fcf8e3
-}
-a.list-group-item-warning {
- color: #8a6d3b
-}
-a.list-group-item-warning .list-group-item-heading {
- color: inherit
-}
-a.list-group-item-warning:focus,
-a.list-group-item-warning:hover {
- color: #8a6d3b;
- background-color: #faf2cc
-}
-a.list-group-item-warning.active,
-a.list-group-item-warning.active:focus,
-a.list-group-item-warning.active:hover {
- color: #fff;
- background-color: #8a6d3b;
- border-color: #8a6d3b
-}
-.list-group-item-danger {
- color: #a94442;
- background-color: #f2dede
-}
-a.list-group-item-danger {
- color: #a94442
-}
-a.list-group-item-danger .list-group-item-heading {
- color: inherit
-}
-a.list-group-item-danger:focus,
-a.list-group-item-danger:hover {
- color: #a94442;
- background-color: #ebcccc
-}
-a.list-group-item-danger.active,
-a.list-group-item-danger.active:focus,
-a.list-group-item-danger.active:hover {
- color: #fff;
- background-color: #a94442;
- border-color: #a94442
-}
-.list-group-item-heading {
- margin-top: 0;
- margin-bottom: 5px
-}
-.list-group-item-text {
- margin-bottom: 0;
- line-height: 1.3
-}
-.panel {
- margin-bottom: 20px;
- background-color: #fff;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, .05)
-}
-.panel-body {
- padding: 15px
-}
-.panel-heading {
- padding: 10px 15px;
- border-bottom: 1px solid transparent;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px
-}
-.panel-heading>.dropdown .dropdown-toggle {
- color: inherit
-}
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 16px;
- color: inherit
-}
-.panel-title>.small,
-.panel-title>.small>a,
-.panel-title>a,
-.panel-title>small,
-.panel-title>small>a {
- color: inherit
-}
-.panel-footer {
- padding: 10px 15px;
- background-color: #f5f5f5;
- border-top: 1px solid #ddd;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px
-}
-.panel>.list-group,
-.panel>.panel-collapse>.list-group {
- margin-bottom: 0
-}
-.panel>.list-group .list-group-item,
-.panel>.panel-collapse>.list-group .list-group-item {
- border-width: 1px 0;
- border-radius: 0
-}
-.panel>.list-group:first-child .list-group-item:first-child,
-.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child {
- border-top: 0;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px
-}
-.panel>.list-group:last-child .list-group-item:last-child,
-.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child {
- border-bottom: 0;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px
-}
-.panel-heading+.list-group .list-group-item:first-child {
- border-top-width: 0
-}
-.list-group+.panel-footer {
- border-top-width: 0
-}
-.panel>.panel-collapse>.table,
-.panel>.table,
-.panel>.table-responsive>.table {
- margin-bottom: 0
-}
-.panel>.panel-collapse>.table caption,
-.panel>.table caption,
-.panel>.table-responsive>.table caption {
- padding-right: 15px;
- padding-left: 15px
-}
-.panel>.table-responsive:first-child>.table:first-child,
-.panel>.table:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,
-.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,
-.panel>.table:first-child>tbody:first-child>tr:first-child,
-.panel>.table:first-child>thead:first-child>tr:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,
-.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,
-.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,
-.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,
-.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,
-.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,
-.panel>.table:first-child>thead:first-child>tr:first-child th:first-child {
- border-top-left-radius: 3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,
-.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,
-.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,
-.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,
-.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,
-.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,
-.panel>.table:first-child>thead:first-child>tr:first-child th:last-child {
- border-top-right-radius: 3px
-}
-.panel>.table-responsive:last-child>.table:last-child,
-.panel>.table:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,
-.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,
-.panel>.table:last-child>tbody:last-child>tr:last-child,
-.panel>.table:last-child>tfoot:last-child>tr:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,
-.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
-.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,
-.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,
-.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,
-.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
-.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child {
- border-bottom-left-radius: 3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,
-.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
-.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,
-.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,
-.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,
-.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
-.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child {
- border-bottom-right-radius: 3px
-}
-.panel>.panel-body+.table,
-.panel>.panel-body+.table-responsive,
-.panel>.table+.panel-body,
-.panel>.table-responsive+.panel-body {
- border-top: 1px solid #ddd
-}
-.panel>.table>tbody:first-child>tr:first-child td,
-.panel>.table>tbody:first-child>tr:first-child th {
- border-top: 0
-}
-.panel>.table-bordered,
-.panel>.table-responsive>.table-bordered {
- border: 0
-}
-.panel>.table-bordered>tbody>tr>td:first-child,
-.panel>.table-bordered>tbody>tr>th:first-child,
-.panel>.table-bordered>tfoot>tr>td:first-child,
-.panel>.table-bordered>tfoot>tr>th:first-child,
-.panel>.table-bordered>thead>tr>td:first-child,
-.panel>.table-bordered>thead>tr>th:first-child,
-.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,
-.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,
-.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,
-.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,
-.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,
-.panel>.table-responsive>.table-bordered>thead>tr>th:first-child {
- border-left: 0
-}
-.panel>.table-bordered>tbody>tr>td:last-child,
-.panel>.table-bordered>tbody>tr>th:last-child,
-.panel>.table-bordered>tfoot>tr>td:last-child,
-.panel>.table-bordered>tfoot>tr>th:last-child,
-.panel>.table-bordered>thead>tr>td:last-child,
-.panel>.table-bordered>thead>tr>th:last-child,
-.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,
-.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,
-.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,
-.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,
-.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,
-.panel>.table-responsive>.table-bordered>thead>tr>th:last-child {
- border-right: 0
-}
-.panel>.table-bordered>tbody>tr:first-child>td,
-.panel>.table-bordered>tbody>tr:first-child>th,
-.panel>.table-bordered>thead>tr:first-child>td,
-.panel>.table-bordered>thead>tr:first-child>th,
-.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,
-.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,
-.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,
-.panel>.table-responsive>.table-bordered>thead>tr:first-child>th {
- border-bottom: 0
-}
-.panel>.table-bordered>tbody>tr:last-child>td,
-.panel>.table-bordered>tbody>tr:last-child>th,
-.panel>.table-bordered>tfoot>tr:last-child>td,
-.panel>.table-bordered>tfoot>tr:last-child>th,
-.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,
-.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,
-.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,
-.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th {
- border-bottom: 0
-}
-.panel>.table-responsive {
- margin-bottom: 0;
- border: 0
-}
-.panel-group {
- margin-bottom: 20px
-}
-.panel-group .panel {
- margin-bottom: 0;
- border-radius: 4px
-}
-.panel-group .panel+.panel {
- margin-top: 5px
-}
-.panel-group .panel-heading {
- border-bottom: 0
-}
-.panel-group .panel-heading+.panel-collapse>.list-group,
-.panel-group .panel-heading+.panel-collapse>.panel-body {
- border-top: 1px solid #ddd
-}
-.panel-group .panel-footer {
- border-top: 0
-}
-.panel-group .panel-footer+.panel-collapse .panel-body {
- border-bottom: 1px solid #ddd
-}
-.panel-default {
- border-color: #ddd
-}
-.panel-default>.panel-heading {
- color: #333;
- background-color: #f5f5f5;
- border-color: #ddd
-}
-.panel-default>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #ddd
-}
-.panel-default>.panel-heading .badge {
- color: #f5f5f5;
- background-color: #333
-}
-.panel-default>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #ddd
-}
-.panel-primary {
- border-color: #337ab7
-}
-.panel-primary>.panel-heading {
- color: #fff;
- background-color: #337ab7;
- border-color: #337ab7
-}
-.panel-primary>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #337ab7
-}
-.panel-primary>.panel-heading .badge {
- color: #337ab7;
- background-color: #fff
-}
-.panel-primary>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #337ab7
-}
-.panel-success {
- border-color: #d6e9c6
-}
-.panel-success>.panel-heading {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6
-}
-.panel-success>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #d6e9c6
-}
-.panel-success>.panel-heading .badge {
- color: #dff0d8;
- background-color: #3c763d
-}
-.panel-success>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #d6e9c6
-}
-.panel-info {
- border-color: #bce8f1
-}
-.panel-info>.panel-heading {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1
-}
-.panel-info>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #bce8f1
-}
-.panel-info>.panel-heading .badge {
- color: #d9edf7;
- background-color: #31708f
-}
-.panel-info>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #bce8f1
-}
-.panel-warning {
- border-color: #faebcc
-}
-.panel-warning>.panel-heading {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc
-}
-.panel-warning>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #faebcc
-}
-.panel-warning>.panel-heading .badge {
- color: #fcf8e3;
- background-color: #8a6d3b
-}
-.panel-warning>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #faebcc
-}
-.panel-danger {
- border-color: #ebccd1
-}
-.panel-danger>.panel-heading {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1
-}
-.panel-danger>.panel-heading+.panel-collapse>.panel-body {
- border-top-color: #ebccd1
-}
-.panel-danger>.panel-heading .badge {
- color: #f2dede;
- background-color: #a94442
-}
-.panel-danger>.panel-footer+.panel-collapse>.panel-body {
- border-bottom-color: #ebccd1
-}
-.embed-responsive {
- position: relative;
- display: block;
- height: 0;
- padding: 0;
- overflow: hidden
-}
-.embed-responsive .embed-responsive-item,
-.embed-responsive embed,
-.embed-responsive iframe,
-.embed-responsive object,
-.embed-responsive video {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: 0
-}
-.embed-responsive-16by9 {
- padding-bottom: 56.25%
-}
-.embed-responsive-4by3 {
- padding-bottom: 75%
-}
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #e3e3e3;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05)
-}
-.well blockquote {
- border-color: #ddd;
- border-color: rgba(0, 0, 0, .15)
-}
-.well-lg {
- padding: 24px;
- border-radius: 6px
-}
-.well-sm {
- padding: 9px;
- border-radius: 3px
-}
-.close {
- float: right;
- font-size: 21px;
- font-weight: 700;
- line-height: 1;
- color: #000;
- text-shadow: 0 1px 0 #fff;
- filter: alpha(opacity=20);
- opacity: .2
-}
-.close:focus,
-.close:hover {
- color: #000;
- text-decoration: none;
- cursor: pointer;
- filter: alpha(opacity=50);
- opacity: .5
-}
-button.close {
- -webkit-appearance: none;
- padding: 0;
- cursor: pointer;
- background: 0 0;
- border: 0
-}
-.modal-open {
- overflow: hidden
-}
-.modal {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1050;
- display: none;
- overflow: hidden;
- -webkit-overflow-scrolling: touch;
- outline: 0
-}
-.modal.fade .modal-dialog {
- -webkit-transition: -webkit-transform .3s ease-out;
- -o-transition: -o-transform .3s ease-out;
- transition: transform .3s ease-out;
- -webkit-transform: translate(0, -25%);
- -ms-transform: translate(0, -25%);
- -o-transform: translate(0, -25%);
- transform: translate(0, -25%)
-}
-.modal.in .modal-dialog {
- -webkit-transform: translate(0, 0);
- -ms-transform: translate(0, 0);
- -o-transform: translate(0, 0);
- transform: translate(0, 0)
-}
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: auto
-}
-.modal-dialog {
- position: relative;
- width: auto;
- margin: 10px
-}
-.modal-content {
- position: relative;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #999;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 6px;
- outline: 0;
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
- box-shadow: 0 3px 9px rgba(0, 0, 0, .5)
-}
-.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- background-color: #000
-}
-.modal-backdrop.fade {
- filter: alpha(opacity=0);
- opacity: 0
-}
-.modal-backdrop.in {
- filter: alpha(opacity=50);
- opacity: .5
-}
-.modal-header {
- min-height: 16.43px;
- padding: 15px;
- border-bottom: 1px solid #e5e5e5
-}
-.modal-header .close {
- margin-top: -2px
-}
-.modal-title {
- margin: 0;
- line-height: 1.42857143
-}
-.modal-body {
- position: relative;
- padding: 15px
-}
-.modal-footer {
- padding: 15px;
- text-align: right;
- border-top: 1px solid #e5e5e5
-}
-.modal-footer .btn+.btn {
- margin-bottom: 0;
- margin-left: 5px
-}
-.modal-footer .btn-group .btn+.btn {
- margin-left: -1px
-}
-.modal-footer .btn-block+.btn-block {
- margin-left: 0
-}
-.modal-scrollbar-measure {
- position: absolute;
- top: -9999px;
- width: 50px;
- height: 50px;
- overflow: scroll
-}
-@media (min-width: 768px) {
- .modal-dialog {
- width: 600px;
- margin: 30px auto
- }
- .modal-content {
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
- box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
- }
- .modal-sm {
- width: 300px
- }
-}
-@media (min-width: 992px) {
- .modal-lg {
- width: 900px
- }
-}
-.tooltip {
- position: absolute;
- z-index: 1070;
- display: block;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 12px;
- font-weight: 400;
- line-height: 1.4;
- filter: alpha(opacity=0);
- opacity: 0
-}
-.tooltip.in {
- filter: alpha(opacity=90);
- opacity: .9
-}
-.tooltip.top {
- padding: 5px 0;
- margin-top: -3px
-}
-.tooltip.right {
- padding: 0 5px;
- margin-left: 3px
-}
-.tooltip.bottom {
- padding: 5px 0;
- margin-top: 3px
-}
-.tooltip.left {
- padding: 0 5px;
- margin-left: -3px
-}
-.tooltip-inner {
- max-width: 200px;
- padding: 3px 8px;
- color: #fff;
- text-align: center;
- text-decoration: none;
- background-color: #000;
- border-radius: 4px
-}
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid
-}
-.tooltip.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000
-}
-.tooltip.top-left .tooltip-arrow {
- right: 5px;
- bottom: 0;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000
-}
-.tooltip.top-right .tooltip-arrow {
- bottom: 0;
- left: 5px;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000
-}
-.tooltip.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -5px;
- border-width: 5px 5px 5px 0;
- border-right-color: #000
-}
-.tooltip.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -5px;
- border-width: 5px 0 5px 5px;
- border-left-color: #000
-}
-.tooltip.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000
-}
-.tooltip.bottom-left .tooltip-arrow {
- top: 0;
- right: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000
-}
-.tooltip.bottom-right .tooltip-arrow {
- top: 0;
- left: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000
-}
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 1060;
- display: none;
- max-width: 276px;
- padding: 1px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- font-weight: 400;
- line-height: 1.42857143;
- text-align: left;
- white-space: normal;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, .2)
-}
-.popover.top {
- margin-top: -10px
-}
-.popover.right {
- margin-left: 10px
-}
-.popover.bottom {
- margin-top: 10px
-}
-.popover.left {
- margin-left: -10px
-}
-.popover-title {
- padding: 8px 14px;
- margin: 0;
- font-size: 14px;
- background-color: #f7f7f7;
- border-bottom: 1px solid #ebebeb;
- border-radius: 5px 5px 0 0
-}
-.popover-content {
- padding: 9px 14px
-}
-.popover>.arrow,
-.popover>.arrow:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid
-}
-.popover>.arrow {
- border-width: 11px
-}
-.popover>.arrow:after {
- content: "";
- border-width: 10px
-}
-.popover.top>.arrow {
- bottom: -11px;
- left: 50%;
- margin-left: -11px;
- border-top-color: #999;
- border-top-color: rgba(0, 0, 0, .25);
- border-bottom-width: 0
-}
-.popover.top>.arrow:after {
- bottom: 1px;
- margin-left: -10px;
- content: " ";
- border-top-color: #fff;
- border-bottom-width: 0
-}
-.popover.right>.arrow {
- top: 50%;
- left: -11px;
- margin-top: -11px;
- border-right-color: #999;
- border-right-color: rgba(0, 0, 0, .25);
- border-left-width: 0
-}
-.popover.right>.arrow:after {
- bottom: -10px;
- left: 1px;
- content: " ";
- border-right-color: #fff;
- border-left-width: 0
-}
-.popover.bottom>.arrow {
- top: -11px;
- left: 50%;
- margin-left: -11px;
- border-top-width: 0;
- border-bottom-color: #999;
- border-bottom-color: rgba(0, 0, 0, .25)
-}
-.popover.bottom>.arrow:after {
- top: 1px;
- margin-left: -10px;
- content: " ";
- border-top-width: 0;
- border-bottom-color: #fff
-}
-.popover.left>.arrow {
- top: 50%;
- right: -11px;
- margin-top: -11px;
- border-right-width: 0;
- border-left-color: #999;
- border-left-color: rgba(0, 0, 0, .25)
-}
-.popover.left>.arrow:after {
- right: 1px;
- bottom: -10px;
- content: " ";
- border-right-width: 0;
- border-left-color: #fff
-}
-.carousel {
- position: relative
-}
-.carousel-inner {
- position: relative;
- width: 100%;
- overflow: hidden
-}
-.carousel-inner>.item {
- position: relative;
- display: none;
- -webkit-transition: .6s ease-in-out left;
- -o-transition: .6s ease-in-out left;
- transition: .6s ease-in-out left
-}
-.carousel-inner>.item>a>img,
-.carousel-inner>.item>img {
- line-height: 1
-}
-@media all and (transform-3d),
-(-webkit-transform-3d) {
- .carousel-inner>.item {
- -webkit-transition: -webkit-transform .6s ease-in-out;
- -o-transition: -o-transform .6s ease-in-out;
- transition: transform .6s ease-in-out;
- -webkit-backface-visibility: hidden;
- backface-visibility: hidden;
- -webkit-perspective: 1000;
- perspective: 1000
- }
- .carousel-inner>.item.active.right,
- .carousel-inner>.item.next {
- left: 0;
- -webkit-transform: translate3d(100%, 0, 0);
- transform: translate3d(100%, 0, 0)
- }
- .carousel-inner>.item.active.left,
- .carousel-inner>.item.prev {
- left: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0)
- }
- .carousel-inner>.item.active,
- .carousel-inner>.item.next.left,
- .carousel-inner>.item.prev.right {
- left: 0;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0)
- }
-}
-.carousel-inner>.active,
-.carousel-inner>.next,
-.carousel-inner>.prev {
- display: block
-}
-.carousel-inner>.active {
- left: 0
-}
-.carousel-inner>.next,
-.carousel-inner>.prev {
- position: absolute;
- top: 0;
- width: 100%
-}
-.carousel-inner>.next {
- left: 100%
-}
-.carousel-inner>.prev {
- left: -100%
-}
-.carousel-inner>.next.left,
-.carousel-inner>.prev.right {
- left: 0
-}
-.carousel-inner>.active.left {
- left: -100%
-}
-.carousel-inner>.active.right {
- left: 100%
-}
-.carousel-control {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 15%;
- font-size: 20px;
- color: #fff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
- filter: alpha(opacity=50);
- opacity: .5
-}
-.carousel-control.left {
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0, rgba(0, 0, 0, .0001) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0, rgba(0, 0, 0, .0001) 100%);
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
- background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0, rgba(0, 0, 0, .0001) 100%);
- filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat: repeat-x
-}
-.carousel-control.right {
- right: 0;
- left: auto;
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0, rgba(0, 0, 0, .5) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0, rgba(0, 0, 0, .5) 100%);
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
- background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0, rgba(0, 0, 0, .5) 100%);
- filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat: repeat-x
-}
-.carousel-control:focus,
-.carousel-control:hover {
- color: #fff;
- text-decoration: none;
- filter: alpha(opacity=90);
- outline: 0;
- opacity: .9
-}
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right,
-.carousel-control .icon-next,
-.carousel-control .icon-prev {
- position: absolute;
- top: 50%;
- z-index: 5;
- display: inline-block
-}
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .icon-prev {
- left: 50%;
- margin-left: -10px
-}
-.carousel-control .glyphicon-chevron-right,
-.carousel-control .icon-next {
- right: 50%;
- margin-right: -10px
-}
-.carousel-control .icon-next,
-.carousel-control .icon-prev {
- width: 20px;
- height: 20px;
- margin-top: -10px;
- font-family: serif;
- line-height: 1
-}
-.carousel-control .icon-prev:before {
- content: '\2039'
-}
-.carousel-control .icon-next:before {
- content: '\203a'
-}
-.carousel-indicators {
- position: absolute;
- bottom: 10px;
- left: 50%;
- z-index: 15;
- width: 60%;
- padding-left: 0;
- margin-left: -30%;
- text-align: center;
- list-style: none
-}
-.carousel-indicators li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- cursor: pointer;
- background-color: #000 \9;
- background-color: rgba(0, 0, 0, 0);
- border: 1px solid #fff;
- border-radius: 10px
-}
-.carousel-indicators .active {
- width: 12px;
- height: 12px;
- margin: 0;
- background-color: #fff
-}
-.carousel-caption {
- position: absolute;
- right: 15%;
- bottom: 20px;
- left: 15%;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: #fff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6)
-}
-.carousel-caption .btn {
- text-shadow: none
-}
-@media screen and (min-width: 768px) {
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-next,
- .carousel-control .icon-prev {
- width: 30px;
- height: 30px;
- margin-top: -15px;
- font-size: 30px
- }
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .icon-prev {
- margin-left: -15px
- }
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-next {
- margin-right: -15px
- }
- .carousel-caption {
- right: 20%;
- left: 20%;
- padding-bottom: 30px
- }
- .carousel-indicators {
- bottom: 20px
- }
-}
-.btn-group-vertical>.btn-group:after,
-.btn-group-vertical>.btn-group:before,
-.btn-toolbar:after,
-.btn-toolbar:before,
-.clearfix:after,
-.clearfix:before,
-.container-fluid:after,
-.container-fluid:before,
-.container:after,
-.container:before,
-.dl-horizontal dd:after,
-.dl-horizontal dd:before,
-.form-horizontal .form-group:after,
-.form-horizontal .form-group:before,
-.modal-footer:after,
-.modal-footer:before,
-.nav:after,
-.nav:before,
-.navbar-collapse:after,
-.navbar-collapse:before,
-.navbar-header:after,
-.navbar-header:before,
-.navbar:after,
-.navbar:before,
-.pager:after,
-.pager:before,
-.panel-body:after,
-.panel-body:before,
-.row:after,
-.row:before {
- display: table;
- content: " "
-}
-.btn-group-vertical>.btn-group:after,
-.btn-toolbar:after,
-.clearfix:after,
-.container-fluid:after,
-.container:after,
-.dl-horizontal dd:after,
-.form-horizontal .form-group:after,
-.modal-footer:after,
-.nav:after,
-.navbar-collapse:after,
-.navbar-header:after,
-.navbar:after,
-.pager:after,
-.panel-body:after,
-.row:after {
- clear: both
-}
-.center-block {
- display: block;
- margin-right: auto;
- margin-left: auto
-}
-.pull-right {
- float: right!important
-}
-.pull-left {
- float: left!important
-}
-.hide {
- display: none!important
-}
-.show {
- display: block!important
-}
-.invisible {
- visibility: hidden
-}
-.text-hide {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0
-}
-.hidden {
- display: none!important
-}
-.affix {
- position: fixed
-}
-@-ms-viewport {
- width: device-width
-}
-.visible-lg,
-.visible-md,
-.visible-sm,
-.visible-xs {
- display: none!important
-}
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block {
- display: none!important
-}
-@media (max-width: 767px) {
- .visible-xs {
- display: block!important
- }
- table.visible-xs {
- display: table
- }
- tr.visible-xs {
- display: table-row!important
- }
- td.visible-xs,
- th.visible-xs {
- display: table-cell!important
- }
-}
-@media (max-width: 767px) {
- .visible-xs-block {
- display: block!important
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline {
- display: inline!important
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline-block {
- display: inline-block!important
- }
-}
-@media (min-width: 768px)and (max-width: 991px) {
- .visible-sm {
- display: block!important
- }
- table.visible-sm {
- display: table
- }
- tr.visible-sm {
- display: table-row!important
- }
- td.visible-sm,
- th.visible-sm {
- display: table-cell!important
- }
-}
-@media (min-width: 768px)and (max-width: 991px) {
- .visible-sm-block {
- display: block!important
- }
-}
-@media (min-width: 768px)and (max-width: 991px) {
- .visible-sm-inline {
- display: inline!important
- }
-}
-@media (min-width: 768px)and (max-width: 991px) {
- .visible-sm-inline-block {
- display: inline-block!important
- }
-}
-@media (min-width: 992px)and (max-width: 1199px) {
- .visible-md {
- display: block!important
- }
- table.visible-md {
- display: table
- }
- tr.visible-md {
- display: table-row!important
- }
- td.visible-md,
- th.visible-md {
- display: table-cell!important
- }
-}
-@media (min-width: 992px)and (max-width: 1199px) {
- .visible-md-block {
- display: block!important
- }
-}
-@media (min-width: 992px)and (max-width: 1199px) {
- .visible-md-inline {
- display: inline!important
- }
-}
-@media (min-width: 992px)and (max-width: 1199px) {
- .visible-md-inline-block {
- display: inline-block!important
- }
-}
-@media (min-width: 1200px) {
- .visible-lg {
- display: block!important
- }
- table.visible-lg {
- display: table
- }
- tr.visible-lg {
- display: table-row!important
- }
- td.visible-lg,
- th.visible-lg {
- display: table-cell!important
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-block {
- display: block!important
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline {
- display: inline!important
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline-block {
- display: inline-block!important
- }
-}
-@media (max-width: 767px) {
- .hidden-xs {
- display: none!important
- }
-}
-@media (min-width: 768px)and (max-width: 991px) {
- .hidden-sm {
- display: none!important
- }
-}
-@media (min-width: 992px)and (max-width: 1199px) {
- .hidden-md {
- display: none!important
- }
-}
-@media (min-width: 1200px) {
- .hidden-lg {
- display: none!important
- }
-}
-.visible-print {
- display: none!important
-}
-@media print {
- .visible-print {
- display: block!important
- }
- table.visible-print {
- display: table
- }
- tr.visible-print {
- display: table-row!important
- }
- td.visible-print,
- th.visible-print {
- display: table-cell!important
- }
-}
-.visible-print-block {
- display: none!important
-}
-@media print {
- .visible-print-block {
- display: block!important
- }
-}
-.visible-print-inline {
- display: none!important
-}
-@media print {
- .visible-print-inline {
- display: inline!important
- }
-}
-.visible-print-inline-block {
- display: none!important
-}
-@media print {
- .visible-print-inline-block {
- display: inline-block!important
- }
-}
-@media print {
- .hidden-print {
- display: none!important
- }
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/custom-theme.css b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/custom-theme.css
deleted file mode 100644
index a4256032..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/custom-theme.css
+++ /dev/null
@@ -1,74 +0,0 @@
-.navbar-default {
- background-color: #2a2a2a;
- border-color:#2a2a2a ;
-}
-.navbar-nav{color: #a5a5a5; font-weight:300; padding-top: 5px; padding-left:0px;}
-.form-control {background-color: #121212; border: 0px;}
-.btn-default {background-color: #121212; border: 1px solid #121212;}
-.container { padding:0px;}
-.container-fluid{padding-left:0px;}
-.navbar-default .navbar-nav > li > a {color: #a5a5a5; font-size: 14px; font-weight: 500;}
-.navbar-form .input-group > .form-control { height: 39px; margin-top: 0; }
-.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { height: 39px;}
-.container-bg{background-image: url("../images/content-bg.png"); background-repeat: no-repeat; background-position: top left; min-height: 550px; overflow: hidden; padding: 0 15px;}
-.navbar-default .navbar-nav > li > a :focus,.navbar-default .navbar-nav>li>a:hover{color:#ccc;background-color:transparent;}
-.btn-default.active,
-.btn-default.focus,
-.btn-default:active,
-.btn-default:focus,
-.btn-default:hover,
-.open>.dropdown-toggle.btn-default {
- color: #ccc;
- background-color: #121212;
- border-color: #121212;
-}
-input {
- background-color: #333;
- border: 1px solid #2a2a2a;
- border-radius: 3px;
- height: 45px;
- margin: 5px 0;
- width: 100%;
- padding-left: 10px;
-}
-input[type="checkbox"], input[type="radio"] {
- line-height: normal;
- margin-top: -3px;
- width: 30px;
-}
-.navbar-default .navbar-nav>li>a:focus,
-.navbar-default .navbar-nav>li>a:hover {
- color: #747474;
- outline: 0;
-}
-.navbar {
- margin-bottom: 5px;
-}
-.navbar-brand {
- padding: 15px 10px;
-}
-.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:focus, .navbar-default .navbar-nav > .open > a:hover {
- color: #fff;
- background-color:#202020 ;
-}
-.dropdown-menu {
- background-clip: padding-box;
- background-color: #202020;
- border: 0px solid rgba(0, 0, 0, 0.15);
- border-radius: 0;
- box-shadow: none;
- display: none;
- float: left;
- font-size: 14px;
- left: 0;
- color: #a5a5a5;
-}
-.dropdown-menu > li > a {
- color: #a5a5a5;
-}
-.dropdown-menu>li>a:focus,
-.dropdown-menu>li>a:hover {
- color: #fff;
- text-decoration: none;
- background-color: #313131;
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2-extend.css b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2-extend.css
deleted file mode 100644
index 032768d9..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2-extend.css
+++ /dev/null
@@ -1,177 +0,0 @@
-.fw, [class^="fw-"], [class*=" fw-"] {
- display: inline-block;
- font: normal normal normal 14px/1 fontwso2;
- font-size: inherit;
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- vertical-align: middle;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- text-rendering: auto;
- transform: translate(0, 0);
-}
-
-/* icon options */
-.fw-lg {
- font-size: 1.33333333em;
- line-height: 0.75em;
- vertical-align: -15%;
-}
-.fw-1-5x {
- font-size: 1.5em;
-}
-.fw-2x {
- font-size: 2em;
-}
-.fw-3x {
- font-size: 3em;
-}
-.fw-4x {
- font-size: 4em;
-}
-.fw-5x {
- font-size: 5em;
-}
-.fw-fixedwidth {
- width: 1.28571429em;
- text-align: center;
-}
-.fw-ul {
- padding-left: 0;
- margin-left: 2.14285714em;
- list-style-type: none;
-}
-.fw-ul > li {
- position: relative;
-}
-.fw-li {
- position: absolute;
- left: -2.14285714em;
- width: 2.14285714em;
- top: 0.14285714em;
- text-align: center;
-}
-.fw-li.fw-lg {
- left: -1.85714286em;
-}
-.fw-border {
- padding: .2em .25em .15em;
- border: solid 0.08em #eeeeee;
- border-radius: .1em;
-}
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-.fw.pull-left {
- margin-right: .3em;
-}
-.fw.pull-right {
- margin-left: .3em;
-}
-.fw-spin {
- -webkit-animation: wso2icon-spin 2s infinite linear;
- animation: wso2icon-spin 2s infinite linear;
-}
-.fw-pulse {
- -webkit-animation: wso2icon-spin 1s infinite steps(8);
- animation: wso2icon-spin 1s infinite steps(8);
-}
-@-webkit-keyframes wso2icon-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-@keyframes wso2icon-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-.fw-rotate-90 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
- -webkit-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-.fw-rotate-180 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
- -webkit-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-.fw-rotate-270 {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
- -webkit-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-.fw-flip-horizontal {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
- -webkit-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-.fw-flip-vertical {
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
- -webkit-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-:root .fw-rotate-90,
-:root .fw-rotate-180,
-:root .fw-rotate-270,
-:root .fw-flip-horizontal,
-:root .fw-flip-vertical {
- filter: none;
-}
-.fw-stack, .fw-stack-md {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 1.8em;
- vertical-align: middle;
- text-align: center;
-}
-.fw-stack-md {
- width: 1em;
-}
-.fw-stack-1x,
-.fw-stack-2x,
-.fw-stack-1-5x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.fw-stack-1x {
- line-height: inherit;
- font-size: 0.9em;
- }
-.fw-stack-1-5x {
- line-height: inherit;
- font-size: 1.2em;
-}
-.fw-stack-2x {
- font-size: 1.8em;
-}
-.fw-inverse {
- color: #ffffff;
-}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2.css b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2.css
deleted file mode 100644
index 463b22ec..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/fontwso2.css
+++ /dev/null
@@ -1,481 +0,0 @@
-@font-face {
- font-family: 'fontwso2';
- src:url('../fonts/fontwso2.eot?3uii6i');
- src:url('../fonts/fontwso2.eot?#iefix3uii6i') format('embedded-opentype'),
- url('../fonts/fontwso2.woff?3uii6i') format('woff'),
- url('../fonts/fontwso2.ttf?3uii6i') format('truetype'),
- url('../fonts/fontwso2.svg?3uii6i#fontwso2') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-.fw {
- font-family: 'fontwso2';
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.fw-lifecycle:before {
- content: "\e617";
-}
-
-.fw-globe:before {
- content: "\e666";
-}
-
-.fw-filter:before {
- content: "\e65b";
-}
-
-.fw-store:before {
- content: "\e61b";
-}
-
-.fw-apple:before {
- content: "\e613";
-}
-
-.fw-android:before {
- content: "\e653";
-}
-
-.fw-windows:before {
- content: "\e654";
-}
-
-.fw-monitor:before {
- content: "\e658";
-}
-
-.fw-laptop:before {
- content: "\e659";
-}
-
-.fw-computer:before {
- content: "\e655";
-}
-
-.fw-mobile:before {
- content: "\e656";
-}
-
-.fw-dots:before {
- content: "\e615";
-}
-
-.fw-tiles:before {
- content: "\e60e";
-}
-
-.fw-menu:before {
- content: "\e60f";
-}
-
-.fw-list:before {
- content: "\e610";
-}
-
-.fw-grid:before {
- content: "\e611";
-}
-
-.fw-list2:before {
- content: "\e667";
-}
-
-.fw-user:before {
- content: "\e601";
-}
-
-.fw-add-user:before {
- content: "\e668";
-}
-
-.fw-key:before {
- content: "\e665";
-}
-
-.fw-star:before {
- content: "\e65c";
-}
-
-.fw-star-2:before {
- content: "\e612";
-}
-
-.fw-view:before {
- content: "\e652";
-}
-
-.fw-edit:before {
- content: "\e65d";
-}
-
-.fw-register2:before {
- content: "\e669";
-}
-
-.fw-register:before {
- content: "\e65f";
-}
-
-.fw-search:before {
- content: "\e657";
-}
-
-.fw-send:before {
- content: "\e66a";
-}
-
-.fw-delete:before {
- content: "\e614";
-}
-
-.fw-settings:before {
- content: "\e65e";
-}
-
-.fw-share:before {
- content: "\e65a";
-}
-
-.fw-message:before {
- content: "\e616";
-}
-
-.fw-bell:before {
- content: "\e66b";
-}
-
-.fw-lock:before {
- content: "\e618";
-}
-
-.fw-battery:before {
- content: "\e619";
-}
-
-.fw-camera:before {
- content: "\e61a";
-}
-
-.fw-wifi:before {
- content: "\e606";
-}
-
-.fw-usb-drive:before {
- content: "\e602";
-}
-
-.fw-hdd:before {
- content: "\e61c";
-}
-
-.fw-map-location:before {
- content: "\e61d";
-}
-
-.fw-invitation:before {
- content: "\e664";
-}
-
-.fw-dial-up:before {
- content: "\e61f";
-}
-
-.fw-incoming-call:before {
- content: "\e620";
-}
-
-.fw-clock:before {
- content: "\e621";
-}
-
-.fw-clean:before {
- content: "\e622";
-}
-
-.fw-sort:before {
- content: "\e623";
-}
-
-.fw-list-sort:before {
- content: "\e624";
-}
-
-.fw-sequence:before {
- content: "\e625";
-}
-
-.fw-rules:before {
- content: "\e626";
-}
-
-.fw-padlock:before {
- content: "\e66c";
-}
-
-.fw-uri:before {
- content: "\e603";
-}
-
-.fw-pdf:before {
- content: "\e627";
-}
-
-.fw-ms-document:before {
- content: "\e629";
-}
-
-.fw-swagger:before {
- content: "\e62a";
-}
-
-.fw-jquery:before {
- content: "\e62b";
-}
-
-.fw-java:before {
- content: "\e62c";
-}
-
-.fw-javaee:before {
- content: "\e62d";
-}
-
-.fw-javascript:before {
- content: "\e62e";
-}
-
-.fw-jaggery:before {
- content: "\e62f";
-}
-
-.fw-uncheck:before {
- content: "\e630";
-}
-
-.fw-check:before {
- content: "\e631";
-}
-
-.fw-up-arrow-2:before {
- content: "\e660";
-}
-
-.fw-down-arrow-2:before {
- content: "\e661";
-}
-
-.fw-left-arrow-2:before {
- content: "\e662";
-}
-
-.fw-right-arrow-2:before {
- content: "\e663";
-}
-
-.fw-up-arrow:before {
- content: "\e632";
-}
-
-.fw-down-arrow:before {
- content: "\e63e";
-}
-
-.fw-left-arrow:before {
- content: "\e633";
-}
-
-.fw-right-arrow:before {
- content: "\e634";
-}
-
-.fw-cancel:before {
- content: "\e635";
-}
-
-.fw-add:before {
- content: "\e636";
-}
-
-.fw-minus:before {
- content: "\e628";
-}
-
-.fw-refresh:before {
- content: "\e637";
-}
-
-.fw-ring:before {
- content: "\e600";
-}
-
-.fw-circle:before {
- content: "\e638";
-}
-
-.fw-ok:before {
- content: "\e639";
-}
-
-.fw-error:before {
- content: "\e63a";
-}
-
-.fw-block:before {
- content: "\e63b";
-}
-
-.fw-warning:before {
- content: "\e605";
-}
-
-.fw-deploy:before {
- content: "\e66d";
-}
-
-.fw-devices:before {
- content: "\e63c";
-}
-
-.fw-dss:before {
- content: "\e63d";
-}
-
-.fw-database:before {
- content: "\e66e";
-}
-
-.fw-computer2:before {
- content: "\e66f";
-}
-
-.fw-endpoint:before {
- content: "\e63f";
-}
-
-.fw-bpmn:before {
- content: "\e640";
-}
-
-.fw-bpel:before {
- content: "\e641";
-}
-
-.fw-gadget:before {
- content: "\e642";
-}
-
-.fw-application:before {
- content: "\e643";
-}
-
-.fw-cloud:before {
- content: "\e644";
-}
-
-.fw-service:before {
- content: "\e645";
-}
-
-.fw-rest-service:before {
- content: "\e646";
-}
-
-.fw-rest-api:before {
- content: "\e647";
-}
-
-.fw-api:before {
- content: "\e648";
-}
-
-.fw-service-provider:before {
- content: "\e649";
-}
-
-.fw-website:before {
- content: "\e604";
-}
-
-.fw-proxy:before {
- content: "\e64a";
-}
-
-.fw-policy:before {
- content: "\e64b";
-}
-
-.fw-security-policy:before {
- content: "\e64c";
-}
-
-.fw-throttling-policy:before {
- content: "\e64d";
-}
-
-.fw-blank-document:before {
- content: "\e64e";
-}
-
-.fw-ebook:before {
- content: "\e670";
-}
-
-.fw-document:before {
- content: "\e671";
-}
-
-.fw-text:before {
- content: "\e64f";
-}
-
-.fw-html:before {
- content: "\e650";
-}
-
-.fw-wadl:before {
- content: "\e608";
-}
-
-.fw-wsdl:before {
- content: "\e609";
-}
-
-.fw-xacml:before {
- content: "\e60a";
-}
-
-.fw-xsd:before {
- content: "\e60b";
-}
-
-.fw-xq:before {
- content: "\e60c";
-}
-
-.fw-xslt:before {
- content: "\e60d";
-}
-
-.fw-xml:before {
- content: "\e61e";
-}
-
-.fw-soap:before {
- content: "\e651";
-}
-
-.fw-wso2:before {
- content: "\e607";
-}
-
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/main.css b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/main.css
deleted file mode 100644
index 44e668bc..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/css/main.css
+++ /dev/null
@@ -1,485 +0,0 @@
-/* _____________________________________________________________________________
-
- FONT
- _____________________________________________________________________________ */
-/* Regular */
-@font-face {
- font-family: 'Open Sans';
-
- src: url('../fonts/OpenSans-Regular-webfont.eot');
- src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
- url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
- font-weight: normal;
- font-weight: 400;
- font-style: normal;
-
-}
-
-/* Italic */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-Italic-webfont.eot');
- src: url('../fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-Italic-webfont.woff') format('woff'),
- url('../fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
- font-weight: normal;
- font-weight: 400;
- font-style: italic;
-
-}
-
-/* Light */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-Light-webfont.eot');
- src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
- url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
- font-weight: 200;
- font-style: normal;
-
-}
-
-/* Light Italic */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-LightItalic-webfont.eot');
- src: url('../fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
- url('../fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
- font-weight: 200;
- font-style: italic;
-
-}
-
-/* Semibold */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-Semibold-webfont.eot');
- src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'),
- url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
- font-weight: 500;
- font-style: normal;
-
-}
-
-/* Semibold Italic */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot');
- src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
- url('../fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
- font-weight: 500;
- font-style: italic;
-
-}
-
-/* Bold */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-Bold-webfont.eot');
- src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-Bold-webfont.woff') format('woff'),
- url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
- font-weight: bold;
- font-weight: 700;
- font-style: normal;
-
-}
-
-/* Bold Italic */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-BoldItalic-webfont.eot');
- src: url('../fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
- url('../fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
- font-weight: bold;
- font-weight: 700;
- font-style: italic;
-
-}
-
-/* Extra Bold */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-ExtraBold-webfont.eot');
- src: url('../fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-ExtraBold-webfont.woff') format('woff'),
- url('../fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
- font-weight: 900;
- font-style: normal;
-
-}
-
-/* Extra Bold Italic */
-@font-face {
- font-family: 'Open Sans';
- src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot');
- src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
- url('../fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
- url('../fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic') format('svg');
- font-weight: 900;
- font-style: italic;
-
-}
-/* _____________________________________________________________________________
-
- RESET
- _____________________________________________________________________________ */
-html, body, div, span, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-abbr, address, cite, code,
-del, dfn, em, img, ins, kbd, q, samp,
-small, strong, sub, sup, var,
-b, i,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, figcaption, figure,
-footer, header, hgroup, menu, nav, section, summary,
-time, mark, audio, video {
- margin:0;
- padding:0;
- border:0;
- outline:0;
- font-size:100%;
- vertical-align:baseline;
- background:transparent;
-}
-body {
- font-family: 'Open Sans';
- line-height:1;
- color:#141414;
- line-height:1;
- background: url("../images/content-bg-1.png")repeat scroll 0 0 #f0f2f4;
- margin: 15px;
-}
-
-
-article,aside,details,figcaption,figure,
-footer,header,hgroup,menu,nav,section {
- display:block;
-}
-nav ul {
- list-style:none;
-}
-blockquote, q {
- quotes:none;
-}
-blockquote:before, blockquote:after,
-q:before, q:after {
- content:'';
- content:none;
-}
-a {
- margin:0;
- padding:0;
- font-size:100%;
- vertical-align:baseline;
- background:transparent;
-}
-/* change colours to suit your needs */
-ins {
- background-color:#ff9;
- color:#000;
- text-decoration:none;
-}
-/* change colours to suit your needs */
-mark {
- background-color:#ff9;
- color:#000;
- font-style:italic;
- font-weight:bold;
-}
-del {
- text-decoration: line-through;
-}
-abbr[title], dfn[title] {
- border-bottom:1px dotted;
- cursor:help;
-}
-table {
- border-collapse:collapse;
- border-spacing:0;
-}
-/* change border colour to suit your needs */
-hr {
- display:block;
- height:1px;
- border:0;
- border-top:1px solid #7f7f7f;
- margin:1em 0;
- padding:0;
- opacity: 0.2;
-}
-input, select {
- vertical-align:middle;
-}
-
-/* _____________________________________________________________________________
-
- TYPOGRAPHY
- _____________________________________________________________________________ */
-
-
-p{font-size:17px; line-height:24px; color:#c7c7c7;}
-h1{ font-size:39px;font-weight:100; line-height:Auto; font-style: normal;}
-h2{font-size:24px; line-height:Auto; font-weight: 400; }
-h3{font-size:15px; line-height:Auto; font-weight: 400; }
-h4{font-size:20px; line-height:Auto; font-weight: 400; }
-h5{ font-size:30px;font-weight:100; line-height:Auto; font-style: normal; color: #929292;}
-.font-small{font-size:12px;}
-.font-large{font-size:25px;}
-.font-medium{font-size:16px;}
-.medium-weight{font-weight: 100;}
-
-.uppercase{text-transform:uppercase;}
-.capitalize{text-transform:capitalize;}
-.lowercase{text-transform:lowercase;}
-
-
-.light-blue{color:#3a9ecf;}
-.black{color:#000;}
-.grey{color:#333;}
-.light-grey{color:#7c7c7c;}
-.white{color:#FFF;}
-.blue{color: #00979c;} .blue:hover{color: #03c5cb;}
-
-.bold{font-weight:bold;}
-.no-underline{text-decoration:none;}
-.italic{font-style: italic;}
-
-.center{text-align:center;}
-.right{text-align:right;}
-.left{text-align:left;}
-.justify{text-align:justify;}
-
-.middle{vertical-align: middle;}
-
-.top{vertical-align: top;}
-.middle{vertical-align: middle;}
-.bottom{vertical-align: bottom;}
-.rounded{-webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- border-radius: 0px;}
-.opacity{opacity: 0.8;}
-
-
-.circle {
- background: none repeat scroll 0 0 #191919;
- border-radius: 50px;
- height: 50px;
- padding: 10px;
- width: 50px;
- color: #fff;
-}
-
-
-/* _____________________________________________________________________________
-
- BACKGROUND
- _____________________________________________________________________________ */
-.grey-bg{ background-color:#f6f4f4;}
-.light-grey-bg{ background-color:#f5f5f5 ; }
-.white-bg{background-color:#fff;}
-.off-white{background-color:#3a9ecf;}
-.dark-grey{background-color: #2a2a2a;}
-.blue-bg{background-color: #00979c;}
-
-/* _____________________________________________________________________________
-
- Main
- _____________________________________________________________________________ */
-
-body { margin: 0; }
-header{background-color: #2a2a2a;}
-
-
-.product-wrapper{ float: left; width:100%; margin-top: -2px; min-height: 310px; -webkit-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.14);
- -moz-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.14);
- box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.14);}
-.icon-wrapper{min-height: 110px; padding-top: 12px; text-align: center; }
-.text-wrapper{margin:15px; font-size:14px; border-top: 1px solid #404040; padding-top: 20px; color:#c6c5c5; line-height: 18px; text-align: center }
-.sign-panel {background-color: #191919; width: 100%; height: auto; min-height: 150px; display: none; padding:15px; color: #a5a5a5; cursor:pointer;}
-#flip-login{ font-weight: 500; font-size: 14px; padding: 20px; cursor:pointer; margin-top:-2px; }
-.chart1,.chart2,.chart3 {width: 100%; height: 350px;}
-/* ____________________________________________________________________________
-
- COLUMNS
- _____________________________________________________________________________ */
-
-.col-row{width:100%; height: 100px;}
-.col-x-large{width:100%; }
-.col-large{width:75%; }
-.col-medium{width:50%; }
-.col-small{width:24%; }
-.col-x-small{width:223px; }
-
-.opacity{opacity: 0.2;}
-/* ____________________________________________________________________________
-
- padding-margin
- _____________________________________________________________________________ */
-.padding-left {padding-left:10px;}
-.padding-right {padding-right:10px;}
-.padding-top {padding-top:10px;}
-.padding-bottom {padding-bottom:10px;}
-.padding{padding:10px;}
-.padding-none{ padding:0px;}
-.padding-left-none{ padding-left:0px;}
-
-
-.padding-left-double {padding-left:20px;}
-.padding-right-double {padding-right:20px;}
-.padding-top-double {padding-top:20px;}
-.padding-bottom-double {padding-bottom:20px;}
-.padding-double{padding:20px;}
-.padding-top-large{padding-top:60px;}
-.padding-bottom-large{padding-bottom:60px;}
-
-.margin-left {margin-left:10px;}
-.margin-right {margin-right:10px;}
-.margin-top {margin-top:10px;}
-.margin-bottom {margin-bottom:10px;}
-.margin{margin:10px;}
-.margin-top-minus{margin-top:-123px;}
-
-.margin-left-double {margin-left:20px;}
-.margin-right-double {margin-right:20px;}
-.margin-top-double {margin-top:20px;}
-.margin-bottom-double {margin-bottom:20px;}
-.margin-double{margin:20px;}
-.margin-left-none{margin-left: 0px;}
-.margin-right-none{margin-right: 0px;}
-
-.float-left{float:left;}
-.float-right{float:right;}
-.clear{ clear:both;}
-
-.inline-block{display: inline-block;}
-.relative{ position:relative;}
-.border{border: 2px solid #dddddd;}
-.border-bottom{border-bottom: 1px solid #efefef;}
-.border-radius{border-radius: 5px;}
-.border-top{border-top: 1px solid #ddd;}
-
-/* ____________________________________________________________________________
-
- button
- _____________________________________________________________________________ */
-.blue-btn {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0px;
- color: #ffffff;
- font-size: 15px;
- font-weight: 500;
- background: #00979c;
- padding: 10px 20px 10px 20px;
- text-decoration: none;
- border: 0px; cursor:pointer;
-}
-
-.blue-btn:hover {
- background: #00787a;
- text-decoration: none;
-}
-.blue-action-btn {
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- border-radius: 0px;
- color: #ffffff;
- font-size: 15px;
- font-weight: 500;
- background: #00979c;
- padding: 10px 30px;
- height: 45px;
- text-decoration: none;
- border: 0px; cursor:pointer;
-}
-
-.blue-action-btn:hover {
- background: #00787a;
- text-decoration: none;
-}
-.black-btn {
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- border-radius: 0px;
- color: #ccc;
- font-size: 15px;
- font-weight: 500;
- background: #333333;
- padding: 10px 30px;
- height: 45px;
- text-decoration: none;
- border: 0px; cursor:pointer;
-}
-
-.black-btn:hover {
- background: #2a2a2a;
- text-decoration: none; ;
-}
-.grey-btn {
- background: none repeat scroll 0 0 #00979c;
- border: 0 none;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- color: #ffffff;
- cursor: pointer;
- font-size: 18px;
- font-weight: 300;
- padding: 10px 35px;
- text-decoration: none;
-}
-.grey-btn:hover {
- background: none repeat scroll 0 0 #006a6d;
- border: 0 none;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- color: #ffffff;
- cursor: pointer;
- font-size: 18px;
- font-weight: 300;
- padding: 10px 35px;
- text-decoration: none;
-}
-.grey-btn a{color: #fff; text-decoration: none;}
-.btn-black{color: #ffffff; margin-right: 5px; padding: 10px; text-decoration: none; overflow: hidden; background:#5c5c5c; text-align: center; float: left; cursor: pointer; }
-.btn-black:hover{opacity: 0.8; }
-
-.menu-button-wrapper-temp{float: left; font-size: 13px; width: 125px;}
-.menu-button-wrapper{float: left; font-size: 13px; width: 100px;}
-.tick { opacity: 0 !important; }
-.nv-discreteBarWithAxes>g>.nv-x>g>g>g{opacity: 1 !important;}
-#date-range1{
- background: #fff none repeat scroll 0 0;
- border: 1px solid #ccc;
- width: 300px;
-}
-
-#device_id{
- background: #fff none repeat scroll 0 0;
- border: 1px solid #ccc;
- width: 220px;
-}
-
-.hour-range,.minute-range{background: #fff none repeat scroll 0 0; border: 1px solid #ccc;}
-
-.btn-black-action{color: #ffffff; padding: 5px 20px; text-decoration: none; overflow: hidden; background:#5c5c5c; text-align: center; margin: 0 10px; float: left; cursor: pointer; border: none; outline:none;}
-.btn-black-action:hover{background-color: #0076a3; }
-.date-picker-wrapper {box-shadow:none;}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.eot
deleted file mode 100644
index 5d4a1c47..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.svg
deleted file mode 100644
index 7cda1026..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.ttf
deleted file mode 100644
index 7ab5d85b..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.woff
deleted file mode 100644
index 869a9ed8..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Bold-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.eot
deleted file mode 100644
index ad651807..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.svg
deleted file mode 100644
index 91491201..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.ttf
deleted file mode 100644
index 6a30fa9d..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.woff
deleted file mode 100644
index 46778a21..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-BoldItalic-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.eot
deleted file mode 100644
index 2f7ae28d..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.svg
deleted file mode 100644
index 009e1d7b..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.ttf
deleted file mode 100644
index dacc5bbb..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.woff
deleted file mode 100644
index de4f8e77..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBold-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.eot
deleted file mode 100644
index e4f4ab0d..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.svg
deleted file mode 100644
index a0612586..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
deleted file mode 100644
index 7e636eb4..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.woff
deleted file mode 100644
index f81b2161..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-ExtraBoldItalic-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.eot
deleted file mode 100644
index c3159521..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.svg
deleted file mode 100644
index be508574..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.ttf
deleted file mode 100644
index cb3fda65..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.woff
deleted file mode 100644
index 03eaf586..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Italic-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.eot
deleted file mode 100644
index f17617e0..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.svg
deleted file mode 100644
index deadc3ef..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.ttf
deleted file mode 100644
index b83078a6..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.woff
deleted file mode 100644
index ff882b6a..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Light-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.eot
deleted file mode 100644
index 95c6c619..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.svg
deleted file mode 100644
index 1ac169c0..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.ttf
deleted file mode 100644
index 3162ff8e..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.woff
deleted file mode 100644
index f6e97d5a..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-LightItalic-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.eot
deleted file mode 100644
index 545b7c15..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.svg
deleted file mode 100644
index 46a8f4c6..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.ttf
deleted file mode 100644
index a5b2378e..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.woff
deleted file mode 100644
index 11698afc..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Regular-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.eot
deleted file mode 100644
index acc32c42..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.svg
deleted file mode 100644
index ef8b7a2b..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.ttf
deleted file mode 100644
index a5b9691c..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.woff
deleted file mode 100644
index 17fb5dc3..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-Semibold-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.eot
deleted file mode 100644
index 0048da00..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.svg
deleted file mode 100644
index 46cfd5c8..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.svg
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.ttf
deleted file mode 100644
index 61d58bfa..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.woff
deleted file mode 100644
index 611b3902..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/OpenSans-SemiboldItalic-webfont.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.eot
deleted file mode 100644
index 5bc87bdb..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.svg
deleted file mode 100644
index 40683e9e..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.ttf
deleted file mode 100644
index 787e513d..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.woff
deleted file mode 100644
index 669b1a42..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/fontwso2.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.eot b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.eot
deleted file mode 100644
index 4a4ca865..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.eot and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.svg b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.svg
deleted file mode 100644
index 25691af8..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1,229 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.ttf b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.ttf
deleted file mode 100644
index 67fa00bf..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.ttf and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.woff b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.woff
deleted file mode 100644
index 8c54182a..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/fonts/glyphicons-halflings-regular.woff and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg-1.png b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg-1.png
deleted file mode 100644
index 288797ce..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg-1.png and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg.png b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg.png
deleted file mode 100644
index cf4e63e7..00000000
Binary files a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/images/content-bg.png and /dev/null differ
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/bootstrap.min.js b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/bootstrap.min.js
deleted file mode 100644
index c8f82e59..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.3.4 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/html5shiv.min.js b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/html5shiv.min.js
deleted file mode 100644
index 8aff8f65..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/html5shiv.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Created by Sharon on 5/14/2015.
- */
-/**
- * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
- */
-!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document);
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/jquery-1.11.2.min.js b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/jquery-1.11.2.min.js
deleted file mode 100644
index 18bdbed7..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/public/js/jquery-1.11.2.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)
-},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
-},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \t]*([^\r\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\/\//,kc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lc={},mc={},nc="*/".concat("*"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:"GET",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+"").replace(ec,"").replace(jc,pc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pc[3]||("http:"===pc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\[\]$/,xc=/\r?\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ac(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join("&").replace(vc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,"\r\n")}}):{name:b.name,value:c.replace(xc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&"withCredentials"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("
-
-
-
-
-
-
-
-{{/zone}}
-{{#zone "topJs"}}
-{{/zone}}
-{{#zone "bottomJs"}}
-{{/zone}}
-{{#zone "bottomLibJs"}}
-
-{{/zone}}
\ No newline at end of file
diff --git a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/theme.json b/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/theme.json
deleted file mode 100644
index 549224bc..00000000
--- a/modules/distribution/src/repository/jaggeryapps/sensebot/units/theme/theme.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "predicate": "config.theme == 'default'"
-}
\ No newline at end of file
diff --git a/modules/p2-profile-gen/pom.xml b/modules/p2-profile-gen/pom.xml
index 4c89536b..dec9c823 100644
--- a/modules/p2-profile-gen/pom.xml
+++ b/modules/p2-profile-gen/pom.xml
@@ -16,7 +16,9 @@
~ specific language governing permissions and limitations
~ under the License.
-->
-
+
org.wso2.dc
wso2dc-parent
@@ -112,13 +114,12 @@
org.wso2.carbon.devicemgt:org.wso2.carbon.device.mgt.user.server.feature:${carbon.device.mgt.version}
-
+
org.wso2.carbon.devicemgt:org.wso2.carbon.webapp.authenticator.framework.server.feature:${carbon.device.mgt.version}
-
org.wso2.carbon.deployment:org.wso2.carbon.webapp.mgt.feature:${carbon.deployment.version}
@@ -199,7 +200,7 @@
org.wso2.carbon.identity:org.wso2.carbon.um.ws.service.server.feature:${carbon.identity.version}
- org.wso2.carbon.identity:org.wso2.carbon.identity.oauth.feature:${carbon.identity.version}
+ org.wso2.carbon.identity:org.wso2.carbon.identity.oauth.feature:${carbon.identity.version}
org.wso2.carbon.identity:org.wso2.carbon.identity.oauth.common.feature:${carbon.identity.version}
@@ -249,7 +250,9 @@
org.wso2.carbon.identity:org.wso2.carbon.identity.self.registration.server.feature:${carbon.identity.version}
- org.wso2.carbon.identity:org.wso2.carbon.claim.mgt.feature:${carbon.identity.version}
+
+ org.wso2.carbon.identity:org.wso2.carbon.claim.mgt.feature:${carbon.identity.version}
+
@@ -296,8 +299,8 @@
org.apache.axis2.transport:org.apache.axis2.transport.mail.feature:${axis2-transports.wso2.version}
-
-
+
+
org.wso2.carbon.device.mgt.iot:org.wso2.carbon.device.mgt.iot.feature:1.0.0-SNAPSHOT
@@ -336,7 +339,7 @@
org.wso2.carbon.device.mgt.user.server.feature.group
${carbon.device.mgt.version}
-
+
org.wso2.carbon.webapp.authenticator.framework.server.feature.group
${carbon.device.mgt.version}
@@ -443,8 +446,8 @@
${carbon.identity.version}
- org.wso2.carbon.identity.oauth.server.feature.group
- ${carbon.identity.version}
+ org.wso2.carbon.identity.oauth.server.feature.group
+ ${carbon.identity.version}
org.wso2.carbon.identity.oauth.common.feature.group
@@ -455,7 +458,9 @@
${carbon.identity.version}
- org.wso2.carbon.identity.thrift.authentication.feature.group
+
+ org.wso2.carbon.identity.thrift.authentication.feature.group
+
${carbon.identity.version}
@@ -463,28 +468,28 @@
${carbon.identity.version}
- org.wso2.carbon.idp.mgt.feature.group
- ${carbon.identity.version}
+ org.wso2.carbon.idp.mgt.feature.group
+ ${carbon.identity.version}
- org.wso2.carbon.identity.relying.party.server.feature.group
+
+ org.wso2.carbon.identity.relying.party.server.feature.group
+
${carbon.identity.version}
-
- org.wso2.carbon.identity.application.authenticator.basicauth.server.feature.group
-
+ org.wso2.carbon.identity.application.authenticator.basicauth.server.feature.group
${carbon.identity.version}
-
- org.wso2.carbon.identity.application.authentication.framework.server.feature.group
-
+ org.wso2.carbon.identity.application.authentication.framework.server.feature.group
${carbon.identity.version}
- org.wso2.carbon.identity.authenticator.saml2.sso.feature.group
+
+ org.wso2.carbon.identity.authenticator.saml2.sso.feature.group
+
${carbon.identity.version}
@@ -509,7 +514,9 @@
${carbon.identity.version}
- org.wso2.carbon.identity.self.registration.server.feature.group
+
+ org.wso2.carbon.identity.self.registration.server.feature.group
+
${carbon.identity.version}
@@ -528,15 +535,19 @@
${carbon.registry.version}
- org.wso2.carbon.registry.resource.properties.feature.group
+ org.wso2.carbon.registry.resource.properties.feature.group
+
${carbon.registry.version}
- org.wso2.carbon.registry.associations.dependencies.feature.group
+
+ org.wso2.carbon.registry.associations.dependencies.feature.group
+
${carbon.registry.version}
- org.wso2.carbon.registry.community.features.feature.group
+ org.wso2.carbon.registry.community.features.feature.group
+
${carbon.registry.version}
@@ -548,7 +559,8 @@
${carbon.registry.version}
- org.wso2.carbon.registry.ui.menu.governance.feature.group
+ org.wso2.carbon.registry.ui.menu.governance.feature.group
+
${carbon.registry.version}
@@ -559,7 +571,9 @@
${carbon.governance.version}
- org.wso2.carbon.governance.lifecycle.management.feature.group
+
+ org.wso2.carbon.governance.lifecycle.management.feature.group
+
${carbon.governance.version}
@@ -572,7 +586,7 @@
org.apache.axis2.transport.mail.feature.group
${axis2-transports.wso2.version}
-
+
org.wso2.carbon.device.mgt.iot.feature.group
1.0.0-SNAPSHOT
@@ -590,8 +604,9 @@
package
-
-
+
+