Commits

Mike Cannon-Brookes committed 80d5c56

First commit!

  • Participants

Comments (0)

Files changed (106)

+*.idea
+.DS_Store
+node_modules
+*.pem
+amps-standalone
+web: node app.js
+# Confluence Timeline
+
+Using Atlassian Connect, this addon makes a real time timeline of Confluence attachments and comments.
+
+# Usage
+
+* Run 'npm install' to install dependent node modules
+* Setup up a local postgres database (use PostgresApp) called 'search_analytics' (or modify config.json to point to your DB). Tables are automatically created when you run.
+* Run Confluence using 'atlas-run-standalone --product confluence -v 5.1.3'
+* Run the add on using 'nodemon app.js'
+* Browse to your user menu -> 'Timeline' (top right)
+* Now in another browser window, add attachments or comments to a page
+* Watch the timeline magic!
+
+For an old video of the product in action, see http://www.youtube.com/watch?v=gLhGt9oAAmc&feature=youtube_gdata_player
+
+# Cool Technology
+
+There's a lot of examples of cool technology going on in this add on. 
+
+* **Realtime updates** - 'socket.io' used for real time communications and easy to do in Node. See bottom of app.js and top of routes/index.js
+* **ORM data modelling / Postgres** - using 'orm' and postgres. See models.js (for the model), app.js (for the Express setup) and routes/index.js (for queries)
+* **REST API Access** - using feebs + node. See lib/confluence.js for the start of a module to reliably access a host Confluence's REST API to retrieve data
+* **Caching** - using 'cache-manager' - see also lib/confluence.js for cached node method calls ('getCachedUser'). This is necessary in Connect to reduce network calls to the host server for things like users which don't change often.
+* **HTML Parsing** - using 'cheerio' (very efficient JQuery like parsing / manipulating of HTML). See lib/util.js
+* **Utilities** - using 'string' and 'underscore' all over the place for efficient coding
+
+## What's next?
+
+[Read the docs](https://bitbucket.org/atlassian/node-feebs/src/master/README.md#markdown-header-install-dependencies).
+"use strict";
+
+// app.js is the entry point for your add-on. This bootstraps
+// your add-on server.
+
+// [Express](http://expressjs.com/) is your friend. It's the underlying
+// web framework that `feebs` uses.
+var express = require('express');
+
+// You need to load `feebs` to use her godly powers
+var feebs = require('feebs');
+
+// Typical web stuff you'll need later
+var http = require('http');
+var path = require('path');
+
+// Your routes live here. This is the C part of MVC.
+var routes = require('./routes');
+
+// Bootstrap Express
+var app = express();
+
+// Bootstrap the `feebs` library
+var addon = feebs(app);
+
+// You can set this in `config.js`
+var port = addon.config.port();
+
+// Declares the environment to use in `config.js`
+var devMode = app.get('env') == "development";
+
+// The following settings applies to all environments.
+app.set('port', port);
+
+// We're going to use [Handlebars](http://handlebarsjs.com/) as our
+// template library via the [express-hbs](https://npmjs.org/package/express-hbs)
+// library.
+var hbs = require('express-hbs');
+app.engine('hbs', hbs.express3({partialsDir: __dirname + '/views'}));
+app.set('view engine', 'hbs');
+app.set('views', __dirname + '/views');
+
+// Load ORM
+var orm = require('orm');
+app.use(orm.express(addon.config.store().connection, {
+    define: function (db, models) {
+    	db.load("./models", function (err) {
+		    Object.keys(db.models).forEach(function(key) {
+		    	models[key] = db.models[key];
+		    });
+		});
+    }
+}));
+
+// Declare any Express [middleware](http://expressjs.com/api.html#middleware) you'd like to use here
+app.use(express.favicon());
+app.use(express.logger('dev'));
+app.use(express.bodyParser());
+app.use(express.methodOverride());
+app.use(express.cookieParser());
+app.use(express.cookieSession({
+  key: 'session',
+  secret: addon.config.secret() // Add your super secret salt in `config.js`
+}));
+// You need to instantiate the `feebs` middleware in order to get it's goodness for free
+app.use(addon.middleware());
+// This is where the routers are mounted
+app.use(app.router);
+// Anything in ./public is served right up as static content
+app.use(express.static(path.join(__dirname, 'public')));
+
+// development only
+if (devMode) {
+  // Show nicer errors when in devMode
+  app.use(express.errorHandler());
+}
+
+// Boot the damn thing
+var server = http.createServer(app);
+server.listen(port, function(){
+  console.log('Add-on server running at http://localhost:' + port);
+  if (devMode) {
+    // Enables auto registration/de-registration of add-ons into a host
+    addon.register();
+  }
+});
+
+// Pass in express and `feebs` to your routers
+// socket.io stuff
+var io = require('socket.io').listen(server);
+
+// move routes down so we can pass in io
+routes(app, addon, io);

File atlassian-plugin.xml

+<atlassian-plugin key="com.atlassian.mike.timeline" name="Timeline" plugins-version="2"
+  xmlns="https://remoteapps.jira.com/rest/remotable-plugins/1/installer/schema/atlassian-plugin">
+
+  <plugin-info>
+    <version>1</version>
+    <vendor name="My Company" url="http://example.com"/>
+
+    <permissions>
+      <permission>create_oauth_link</permission>
+      <permission>read_content</permission>
+      <permission>render_content</permission>
+      <permission>read_users_and_groups</permission>
+    </permissions>
+    <param name="documentation.url">http://your.add-on.homepage.url.com</param>
+    <!-- <param name="configure.url">/plugins/servlet/remotable-plugins/my-app-key/config-page</param> -->
+  </plugin-info>
+
+
+  <remote-plugin-container key="container" display-url="@localBaseUrl@">
+    <oauth>
+      <public-key>
+@publicKey@
+      </public-key>
+    </oauth>
+  </remote-plugin-container>
+
+  <webhook key="installed" event="remote_plugin_installed" url="/installed"/>
+
+  <webhook key="attachment_created" event="attachment_created" url="/attachment/created"/>
+
+  <webhook key="attachment_updated" event="attachment_updated" url="/attachment/created"/>
+
+  <webhook key="attachment_removed" event="attachment_removed" url="/attachment/removed"/>
+
+  <webhook key="comment_created" event="comment_created" url="/comment/created"/>
+
+  <webhook key="page_created" event="page_created" url="/hookspy"/>
+
+  <general-page key="timeline" name="Realtime Timeline" section="system.user" url="/timeline"/>
+
+</atlassian-plugin>
+{
+    "development": {
+        "port": 3000,
+        "store": {
+            "type": "postgres",
+            "connection": "postgres://localhost/search_analytics?debug=true",
+            "confluenceConnect": {
+                "cache": {
+                    "store": "memory",
+                    "max": 100,
+                    "ttl": 60 /* seconds */
+                }
+            }
+        },
+        "hosts": [
+            "http://admin:admin@localhost:1990/confluence",
+            "http://admin:admin@localhost:2990/jira"
+        ]
+    },
+
+    "production": {
+        "port": "$PORT",
+        "localBaseUrl": "https://your-subdomain.herokuapp.com",
+        "store": {
+            "type": "postgres",
+            "connection": "$DATABASE_URL",
+            "confluenceConnect": {
+                "cache": {
+                    "store": "memory",
+                    "max": 1000,
+                    "ttl": 3600 /* seconds */
+                }
+            }
+        },
+        "whitelist": [
+            "*.atlassian.net",
+            "*.jira.com"
+        ]
+    }
+}

File lib/confluence-connect.js

+"use strict";
+
+var _ = require('underscore');
+var cache_manager = require('cache-manager');
+
+module.exports = function (addon) {
+    var cache = cache_manager.caching(addon.config.store().confluenceConnect.cache);
+
+    var getUserCached = function(req, username, cb) {
+        cache.get(cacheKey(req, username), function(err, result) {
+
+            if (result)
+                cb(null, result);
+
+            else {
+                getUser(req, username, function(err, returnedUser) {
+                    if (err) return console.error(err);
+
+                    cache.set(cacheKey(req, username), returnedUser, function(err) { if (err) throw err;
+                        cb(null, returnedUser);
+                    });
+                });
+            }
+        });
+    };
+
+    var cacheKey = function(req, obj) {
+        return req.session.clientKey + "::" + obj;
+    };
+
+    var getUser = function (req, username, cb) {
+        return getCommon(req, '/rest/prototype/1/user/non-system/' + encodeURIComponent(username) + '.json', cb);
+    };
+
+    var getComment = function (req, commentId, cb) {
+        return getCommon(req, '/rest/prototype/1/content/' + commentId + '.json', cb);
+    };
+
+    var getCommon = function(req, uri, cb) {
+        var http = addon.httpClient(req);
+
+        var opts = {
+            method: 'GET',
+            uri: uri,
+            userId: req.query['user_id']
+        };
+
+        makeReliableRequest(10, http, opts, function (err, body) {
+            if (err) return console.error(err);
+//            console.log(body);
+            cb(err, body);
+        });
+    };
+
+    var makeReliableRequest = function (timesLeft, http, originalOpts, cb) {
+        if (timesLeft < 1)
+            cb("Failed to make reliable request in given times.", null);
+
+        console.log('makeRequest(' + timesLeft + ') ' + new Date().getTime() + ' to ' + originalOpts.uri);
+
+        // Retrieve the comment
+        var sentOpts = _.clone(originalOpts);
+        http(sentOpts, function (err, resp, body) {
+//            console.log(body);
+
+            // if unauthorized, provide a nice error message
+            if (body.indexOf('<h1>HTTP Status 403 - Request not in an authorized API scope</h1>') > 0) {
+                return cb("Request not in an authorized API scope. Check <permission>s in atlassian-plugin.xml", null);
+            }
+
+            // if a fail or an HTML 404, most likely we haven't got that data yet - try again
+            if ((body.error && body.error.message == 'The application was unable to serve your request: com.atlassian.confluence.rpc.RemoteException: You do not have permission to view the comment, or it does not exist.')
+                || body.indexOf('<title>Page Not Found - Confluence</title>') > 0)
+                setTimeout(function () {
+                    makeReliableRequest(timesLeft - 1, http, originalOpts, cb)
+                }, 25);
+
+            // worked - give back the data as JSON
+            else {
+//                console.log("Worked!");
+//                console.log(body);
+                cb(null, JSON.parse(body));
+            }
+        });
+    };
+
+    return {
+        getComment: getComment,
+        getUser: getUser,
+        getUserCached: getUserCached
+    };
+};
+var _ = require('underscore');
+var S = require('string');
+var cheerio = require('cheerio');
+
+module.exports = {
+
+    // borrowed from the PG library itself!
+    dateToString: function(date) {
+        function pad(number, digits) {
+            number = "" + number;
+            while (number.length < digits)
+                number = "0" + number;
+            return number;
+        }
+
+        var offset = -date.getTimezoneOffset();
+        var ret = pad(date.getFullYear(), 4) + '-' +
+            pad(date.getMonth() + 1, 2) + '-' +
+            pad(date.getDate(), 2) + 'T' +
+            pad(date.getHours(), 2) + ':' +
+            pad(date.getMinutes(), 2) + ':' +
+            pad(date.getSeconds(), 2) + '.' +
+            pad(date.getMilliseconds(), 3);
+
+        if (offset < 0) {
+            ret += "-";
+            offset *= -1;
+        }
+        else
+            ret += "+";
+
+        return ret + pad(Math.floor(offset / 60), 2) + ":" + pad(offset % 60, 2);
+    },
+
+    summarize: function (s) {
+        $ = cheerio.load(s);
+
+        // remove macro tags
+        $('ac\\:macro').remove();
+        strNoMacros = $.html();
+
+        return S(strNoMacros)
+            .replaceAll('</p>', '</p> ') // add spaces to separate sentences.
+            .replaceAll('<li>', ' <li>') // add spaces to separate sentences.
+            .stripTags() // remove all HTML tags.
+            .truncate(200)
+            .s;
+    }
+}
+module.exports = function (db, cb) {
+	// add your DB models here
+    db.define('content', {
+    	client: String,
+        type: String,
+        creator: String,
+    	timestamp: Date,
+        pageTitle: String,
+        pageId: Number,
+        spaceKey: String,
+        attachmentId: Number,
+        attachmentUrl: String,
+        thumbnailUrl: String,
+        contentSummary: String,
+        commentId: Number,
+        commentUrl: String
+    }, {
+    methods: {
+    }});
+
+	// automatically create tables - remove if you don't want that to happen
+	db.sync(function (err) {
+		if (err) return console.error(err);
+	});
+
+    return cb();
+};

File package.json

+{
+  "name": "application-name",
+  "version": "0.0.1",
+  "private": true,
+  "scripts": {
+    "start": "node app.js"
+  },
+  "dependencies": {
+    "express": "3.2.0",
+    "express-hbs": "*",
+    "feebs": "~0.4.0",
+    "orm": "~2.0.11",
+    "pg": "~1.1.1",
+    "socket.io": "~0.9.14",
+    "underscore": "~1.4.4",
+    "cheerio": "~0.11.0",
+    "string": "~1.3.1",
+    "q": "~0.9.4"
+  }
+}

File public/aui/css/arrow.png

Added
New image

File public/aui/css/atlassian-icons.eot

Binary file added.

File public/aui/css/atlassian-icons.svg

+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="atlassian-iconsregular" horiz-adv-x="2048" >
+<font-face units-per-em="2048" ascent="1664" descent="-384" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode="&#xd;" />
+<glyph unicode="&#x2000;" horiz-adv-x="832" />
+<glyph unicode="&#x2001;" horiz-adv-x="1664" />
+<glyph unicode="&#x2002;" horiz-adv-x="832" />
+<glyph unicode="&#x2003;" horiz-adv-x="1664" />
+<glyph unicode="&#x2004;" horiz-adv-x="554" />
+<glyph unicode="&#x2005;" horiz-adv-x="416" />
+<glyph unicode="&#x2006;" horiz-adv-x="277" />
+<glyph unicode="&#x2007;" horiz-adv-x="277" />
+<glyph unicode="&#x2008;" horiz-adv-x="208" />
+<glyph unicode="&#x2009;" horiz-adv-x="332" />
+<glyph unicode="&#x200a;" horiz-adv-x="92" />
+<glyph unicode="&#x202f;" horiz-adv-x="332" />
+<glyph unicode="&#x205f;" horiz-adv-x="416" />
+<glyph unicode="&#xe000;" horiz-adv-x="1000" d="M0 0z" />
+<glyph unicode="&#xe001;" d="M2048 518v236q0 21 -20.5 40t-43.5 22l-310 56q-23 6 -30.5 22t4.5 34l176 258q11 18 8.5 42.5t-18.5 39.5l-166 166q-17 17 -40.5 20t-41.5 -10l-258 -174q-18 -11 -35 -3t-21 29l-56 306q-3 23 -22 42.5t-40 19.5h-236q-22 0 -41.5 -19.5t-22.5 -42.5l-56 -310 q-3 -21 -20.5 -28t-35.5 4l-256 176q-19 12 -43.5 9t-40.5 -19l-166 -166q-16 -16 -18.5 -40t8.5 -42l176 -258q12 -18 4.5 -34t-30.5 -22l-302 -56q-21 -3 -37.5 -22t-16.5 -40v-236q0 -22 16.5 -41.5t37.5 -22.5l304 -56q21 -3 28.5 -19.5t-4.5 -34.5l-176 -258 q-11 -18 -8.5 -43t18.5 -41l166 -166q16 -16 40.5 -18t43.5 10l256 172q18 14 35.5 7t20.5 -29l56 -306q3 -21 22.5 -38.5t41.5 -17.5h236q21 0 40 17.5t22 38.5l56 308q4 22 21 28t35 -6l258 -172q18 -14 43 -12t41 18l164 166q16 16 19.5 41t-7.5 43l-174 258 q-13 18 -5 34.5t31 19.5l306 56q23 3 43.5 22.5t20.5 41.5zM1408 640q0 -99 -53 -188t-142 -142.5t-189 -53.5q-99 0 -188 53.5t-142.5 142.5t-53.5 188t53.5 188t142.5 142.5t188 53.5q100 0 189 -53.5t142 -142.5t53 -188z" />
+<glyph unicode="&#xe002;" d="M1280 896h462q78 0 128 -45.5t50 -120.5v-188q0 -74 -49.5 -116t-128.5 -42h-462v-462q0 -79 -42 -128.5t-116 -49.5h-188q-75 0 -120.5 50t-45.5 128v462h-454q-80 0 -133 42t-53 116v188q0 75 53.5 120.5t132.5 45.5h454v454q0 79 45.5 132.5t120.5 53.5h188 q74 0 116 -53t42 -133v-454z" />
+<glyph unicode="&#xe003;" d="M1024 -384q166 0 322.5 52t282.5 147t220.5 221.5t146.5 283t52 322.5q0 207 -81.5 396t-218.5 326t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326t-81.5 -396q0 -166 52 -322.5t146.5 -283t220.5 -221.5t282.5 -147t322.5 -52zM1024 1464 q168 0 321 -65t263.5 -175t176 -262.5t65.5 -319.5q0 -168 -65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321q0 167 65.5 319.5t176 262.5t263.5 175t321 65zM820 932h-4q-8 -33 -35 -54.5t-61 -21.5q-40 0 -69 29.5t-29 70.5 q0 14 2 20q15 126 114 210q108 96 284 96q187 0 294 -98q110 -92 110 -222q0 -69 -40 -134q-38 -61 -172 -174q-71 -58 -84 -90q-9 -21 -12 -58q-4 -36 -4 -70q0 -26 -12.5 -38.5t-28.5 -15t-49 -2.5h-16h-17.5t-16.5 1t-16.5 3.5t-13 7t-12 10.5t-7 16t-3.5 22l-2 12v46 q0 87 30 150q33 60 126 138q94 76 112 100q28 34 28 82q0 64 -50 108t-134 44q-80 0 -138 -46q-52 -47 -74 -142zM1024 286q60 0 103 -42t43 -102q0 -59 -43 -102.5t-103 -43.5t-103 43.5t-43 102.5q0 60 43 102t103 42z" />
+<glyph unicode="&#xe004;" d="M1520 392l512 -512q12 -14 12 -32t-12 -30l-186 -186q-14 -12 -32 -12t-30 12l-512 512q-201 -132 -446 -132q-168 0 -321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5t321 -65.5t263.5 -176t176 -263.5t65.5 -321q0 -245 -132 -446z M262 838q0 -152 76 -282t206 -206t282 -76t282 76t206 206t76 282t-76 282t-206 206t-282 76t-282 -76t-206 -206t-76 -282z" />
+<glyph unicode="&#xe005;" d="M1814 1370l204 -204q22 -25 22 -59.5t-22 -56.5l-1098 -1112q-27 -23 -66.5 -40.5t-71.5 -17.5h-96q-34 0 -74.5 17.5t-63.5 40.5l-518 528q-22 22 -22 56t22 60l204 202q23 26 56.5 26t59.5 -26l328 -330q26 -26 60 -26t56 26l904 916q26 22 60 22t56 -22z" />
+<glyph unicode="&#xe006;" d="M2048 384v-384q0 -52 -38 -90t-90 -38h-1792q-52 0 -90 38t-38 90v384l384 1024h1280zM768 384v-128q0 -48 40 -88t88 -40h256q48 0 88 40t40 88v128h512l-256 896h-1024l-256 -896h512zM640 896v256h768v-256h-128v128h-512v-128h-128zM640 640v-128h-128v256h1024v-256 h-128v128h-768z" />
+<glyph unicode="&#xe007;" d="M2048 384v-384q0 -52 -38 -90t-90 -38h-1792q-52 0 -90 38t-38 90v384l384 1024h1280zM768 384v-128q0 -48 40 -88t88 -40h256q48 0 88 40t40 88v128h512l-256 896h-1024l-256 -896h512z" />
+<glyph unicode="&#xe008;" d="M1024 640l-896 768h1792zM642 770l-642 -642v1152zM1406 766l642 514v-1152zM132 0l636 640l260 -256l252 256l644 -640h-1792z" />
+<glyph unicode="&#xe009;" d="M128 1408h1792q52 0 90 -38t38 -90t-38 -90t-90 -38h-1792q-52 0 -90 38t-38 90t38 90t90 38zM128 768h1792q52 0 90 -38t38 -90t-38 -90t-90 -38h-1792q-52 0 -90 38t-38 90t38 90t90 38zM128 128h1792q52 0 90 -38t38 -90t-38 -90t-90 -38h-1792q-52 0 -90 38t-38 90 t38 90t90 38z" />
+<glyph unicode="&#xe00a;" d="M512 -134v360q-234 102 -373 279.5t-139 386.5t137.5 387t373.5 281.5t513 103.5t513 -103.5t373.5 -281.5t137.5 -387q0 -155 -84.5 -298.5t-224.5 -246t-328 -164t-387 -61.5q-6 0 -108.5 -89.5t-201.5 -178.5l-100 -90q-13 -13 -36.5 -18t-33.5 0q-16 7 -23.5 32 t-8 40t-0.5 48zM968 322l56 4q225 0 416.5 76t302.5 207t111 285q0 153 -111 283.5t-302.5 206.5t-416.5 76q-169 0 -321.5 -45t-262.5 -121t-175 -181t-65 -221q0 -149 90 -266.5t270 -213.5l110 -56v-322z" />
+<glyph unicode="&#xe00b;" d="M512 -134v360q-234 102 -373 279.5t-139 386.5t137.5 387t373.5 281.5t513 103.5t513 -103.5t373.5 -281.5t137.5 -387q0 -155 -84.5 -298.5t-224.5 -246t-328 -164t-387 -61.5q-6 0 -108.5 -89.5t-201.5 -178.5l-100 -90q-13 -13 -36.5 -18t-33.5 0q-16 7 -23.5 32 t-8 40t-0.5 48zM968 322l56 4q225 0 416.5 76t302.5 207t111 285q0 153 -111 283.5t-302.5 206.5t-416.5 76q-169 0 -321.5 -45t-262.5 -121t-175 -181t-65 -221q0 -149 90 -266.5t270 -213.5l110 -56v-322zM1152 1024h256v-256h-256v-256h-256v256h-256v256h256v256h256 v-256z" />
+<glyph unicode="&#xe00c;" d="M1398 454l384 -384q10 -10 10 -24t-10 -24l-140 -138q-9 -10 -22.5 -10t-23.5 10l-384 384q-155 -100 -336 -100q-126 0 -241 49.5t-198 133t-132 198.5t-49 241t49 241t132 198t198 132t241 49t241 -49t198.5 -132t133 -198t49.5 -241q0 -181 -100 -336zM454 790 q0 -175 124 -299.5t298 -124.5q115 0 212.5 57t154.5 154.5t57 212.5q0 174 -124.5 298t-299.5 124q-174 0 -298 -124t-124 -298z" />
+<glyph unicode="&#xe00d;" d="M1024 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1168 640l266 266q30 30 30 72.5t-30 71.5q-28 30 -71 30t-73 -30l-266 -266l-264 262q-30 30 -72 30 t-72 -30q-30 -28 -30 -71t30 -73l264 -262l-266 -266q-30 -30 -30 -72t30 -72q28 -30 71 -30t73 30l266 266l266 -266q30 -30 72 -30t72 30t30 72t-30 72z" />
+<glyph unicode="&#xe00e;" d="M1232 642l386 -386q44 -44 44 -105t-44 -105t-105 -44t-105 44l-386 386l-386 -386q-44 -44 -105 -44t-105 44t-44 105t44 105l386 386l-382 382q-44 44 -44 105t44 103q44 44 105 44t105 -44l382 -382l388 388q44 44 105 44t105 -44q42 -44 42 -105t-42 -103z" />
+<glyph unicode="&#xe00f;" d="M1190 640l310 -310q34 -34 34 -83t-34 -85q-34 -34 -84 -34t-84 34l-308 310l-310 -310q-34 -34 -84 -34t-84 34q-34 36 -34 85t34 83l310 310l-306 306q-34 34 -34 83t34 83t84 34t84 -34l306 -304l310 310q34 34 83 34t83 -34q36 -34 36 -83.5t-36 -84.5z" />
+<glyph unicode="&#xe010;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM1536 640v-256h-640v768h256v-512h384z" />
+<glyph unicode="&#xe011;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM1152 512h-256v640h256v-640zM1152 128h-256v256h256v-256z" />
+<glyph unicode="&#xe012;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM896 1152h256v-256h-256v256zM896 768h256v-640h-256v640z" />
+<glyph unicode="&#xe013;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM1422 1008l104 -102q10 -14 10 -31t-10 -27l-554 -558q-36 -28 -70 -28h-48q-18 0 -38.5 8.5 t-31.5 19.5l-262 264q-10 12 -10 29t10 29l104 102q10 14 28 14t30 -14l166 -166q12 -12 29 -12t29 12l456 460q14 10 31 10t27 -10z" />
+<glyph unicode="&#xe014;" d="M398 474l998 990q57 57 125.5 67.5t133 -18t125.5 -89.5l26 -24q61 -61 90.5 -126.5t20 -135t-66.5 -126.5l-996 -990l-598 -152zM336 -46l374 102l-264 254z" />
+<glyph unicode="&#xe015;" d="M1536 512v256q-17 9 -35.5 17t-60.5 21.5t-84.5 20t-104.5 6t-123 -13.5t-137 -44t-150.5 -80t-160.5 -128.5t-168 -182.5q31 153 102.5 287.5t163.5 229t198 168t210.5 115.5t194.5 61t157 13l-2 278l512 -512zM0 1280h832q0 -67 -51 -127.5t-125 -94.5t-144 -34h-256 v-896h1280q0 70 34 144t94.5 125t127.5 51v-576h-1792v1408z" />
+<glyph unicode="&#xe016;" d="M962 1664l26 -206q168 7 322.5 -50.5t275.5 -167.5q104 -96 170.5 -224t85.5 -274q25 -185 -32 -359.5t-180 -306.5q-6 -8 -20 -22l-200 124q28 24 52 52q90 96 131 221.5t23 260.5q-27 213 -186 360q-84 78 -190.5 119.5t-221.5 38.5l28 -216l-426 284zM1008 264 l430 -278l-344 -370l-26 196q-168 -9 -325 49t-277 169q-104 96 -170.5 224t-85.5 274q-25 185 32 359.5t180 306.5q8 10 28 30l200 -126q-22 -18 -62 -58q-89 -96 -130.5 -222t-23.5 -260q30 -213 186 -360q85 -78 193 -119.5t225 -40.5z" />
+<glyph unicode="&#xe017;" d="M1024 1664q134 0 251.5 -85t189 -233t71.5 -322t-71.5 -321.5t-189 -232t-251.5 -84.5t-252 85t-189 233t-71 322q0 130 42 248.5t111.5 203.5t164 135.5t194.5 50.5zM1990 -384h-1932q2 17 6.5 46.5t20.5 107t34 141.5t48.5 126.5t64.5 84.5q53 36 170 69.5t208 48.5 l90 16q9 -10 25 -26t60 -57.5t83 -73t83 -57.5t71 -26t70 24.5t85 60t80.5 71t62.5 60.5l24 24q14 -2 38.5 -6t90.5 -17.5t123.5 -28t119.5 -37t96 -45.5q40 -26 73 -88t51.5 -131.5t31.5 -135t18 -108.5z" />
+<glyph unicode="&#xe018;" d="M962 1610q56 0 95 -39t39 -95q0 -57 -39 -96.5t-95 -39.5q-57 0 -96.5 39.5t-39.5 96.5q0 56 39.5 95t96.5 39zM448 1480q56 0 95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95t39 95t95 39zM1472 1478q56 0 95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95t39 95t95 39z M1420 -384h-256q-15 0 -27.5 20.5t-14.5 39.5q-4 59 -25 115.5t-47 99.5t-74.5 98.5t-85 92t-102.5 100.5t-106 104q-87 88 -124.5 127.5t-102 114.5t-107.5 138q-150 215 -170 420q-3 23 16 36q13 10 26 10q6 0 14 -4q138 -51 268 -82q28 -6 38 -32q17 -49 50 -103 t60.5 -92.5t86.5 -103.5t85.5 -92.5t99.5 -102.5q12 -16 30 -16q20 0 32 16q69 70 99.5 102t86.5 94.5t85.5 103t61.5 94t49 102.5q11 26 38 32q147 35 266 80q12 4 16 4q13 0 26 -10q19 -15 16 -38q-21 -206 -170 -418q-43 -63 -107.5 -138t-102 -114.5t-124.5 -127.5 q-8 -10 -26 -28q-7 -7 -8 -19t6 -23q16 -20 80 -108q48 -69 65.5 -96t47 -76.5t40 -80t21 -74t12.5 -91.5q3 -20 -10 -40q-23 -34 -32 -34zM1152 1024h-384q0 -48 29 -107.5t75 -103.5t90 -45q41 1 86.5 45t74.5 104t29 107zM740 -384h-256q-13 0 -30 34q-12 20 -12 50 q1 26 3.5 48t9.5 46t10.5 39t16.5 40.5t18 36.5t24 41.5t25 40.5t31.5 47.5t33.5 50.5q13 20 34 20q16 0 30 -14q93 -96 170 -198q9 -9 12 -27t-6 -41q-15 -28 -34.5 -56t-27 -46.5t-10.5 -51.5q-2 -19 -14.5 -39.5t-27.5 -20.5z" />
+<glyph unicode="&#xe019;" d="M1920 1088v-1088q0 -159 -112.5 -271.5t-271.5 -112.5h-896q-159 0 -271.5 112.5t-112.5 271.5v1280q0 159 112.5 271.5t271.5 112.5h704zM1792 1024h-512v512h-640q-105 0 -182 -74q-74 -77 -74 -182v-1280q0 -105 74 -182q77 -74 182 -74h896q105 0 182 74 q74 77 74 182v1024zM1408 1152h266l-266 266v-266z" />
+<glyph unicode="&#xe01a;" d="M1344 930h576q32 0 50 -4q35 -13 56 -38q22 -22 22 -58q0 -34 -26 -70q-16 -19 -40 -36l-462 -302q-7 -3 -14 -17.5t-6 -26.5q0 -2 1 -5.5t1 -4.5l202 -592q10 -30 10 -58q0 -35 -20 -64q-11 -17 -32.5 -27.5t-39.5 -10.5h-4q-11 1 -21 3.5t-17 4.5t-15.5 6.5t-12 7 t-13 8.5t-11.5 8l-478 388q-8 8 -22 8q-20 0 -24 -8l-454 -386q-2 -2 -8.5 -6.5t-9 -6.5t-8.5 -6t-10 -6t-10.5 -5t-12.5 -4t-14 -2.5t-17 -1.5q-20 -2 -43 9.5t-35 30.5q-20 27 -20 62q0 27 10 54l178 590l2 10q1 13 -6.5 28.5t-15.5 17.5l-464 304q-14 10 -40 36 q-26 36 -26 70q0 35 22 60q9 12 40 30q18 8 66 12h576q10 -3 30 10q10 8 18 24l166 598q12 36 24 54q26 46 82 46t82 -46q12 -18 24 -54l166 -598q8 -16 20 -24q15 -12 28 -12z" />
+<glyph unicode="&#xe01b;" d="M750 966l168 598q6 27 24 54q29 44 82 46q58 -3 82 -46q19 -28 24 -54l168 -598q0 -12 18 -24q12 -10 28 -10h574q29 0 50 -8q34 -8 58 -36q22 -22 22 -60q-2 -40 -26 -68q-19 -22 -40 -34l-462 -306q-7 -2 -14 -15.5t-6 -24.5q0 -10 2 -12l202 -594q10 -30 10 -56 q0 -37 -20 -64q-11 -17 -33 -27.5t-41 -10.5h-2q-21 1 -40 8t-25 11.5t-25 18.5l-478 388q-4 8 -22 8q-8 0 -24 -8l-454 -386q-1 -1 -7.5 -6t-8.5 -6t-8 -5.5t-8.5 -5.5t-8.5 -4.5t-10.5 -4.5t-11 -3t-13 -3t-14.5 -2h-4q-19 0 -41 11.5t-35 28.5q-18 29 -18 64q0 20 8 52 l182 590l2 12q0 12 -8 27.5t-16 18.5l-462 306q-19 10 -40 34q-26 30 -28 68q0 38 22 60q22 25 40 30q34 14 68 14h576q14 0 26 10q18 12 18 24zM1024 1416l-136 -486q-16 -61 -68 -100q-52 -40 -114 -40h-478l378 -250q43 -26 66.5 -74t23.5 -98q0 -16 -8 -48l-150 -488 l372 316q48 42 118 42q63 0 114 -38l392 -320l-168 490q-8 21 -8 54q-2 46 21 93t65 71l376 250h-478q-63 0 -112 40q-53 38 -70 98z" />
+<glyph unicode="&#xe01c;" d="M2048 634q-10 14 -28 37t-78.5 90t-124 128t-159.5 135.5t-191 128t-213 90.5t-230 37t-229.5 -35.5t-215 -91.5t-189 -124.5t-161 -137t-122 -124.5t-79.5 -91l-28 -36q10 -13 28 -36t78 -89.5t124 -127t159.5 -134.5t190.5 -127t212.5 -89.5t229.5 -36.5t229.5 35 t215 91t189.5 123.5t161.5 135t122.5 123.5t80 91zM1408 640q0 -101 -56.5 -190.5t-145.5 -141.5t-182 -52q-92 0 -180.5 52t-146 142t-57.5 190t57.5 190t146.5 142t180 52q93 0 182 -52.5t145.5 -142t56.5 -189.5zM1152 640q0 69 -31 98.5t-97 29.5t-97 -29.5t-31 -98.5 t31 -98.5t97 -29.5t97 29.5t31 98.5z" />
+<glyph unicode="&#xec00;" d="M1024 1152h768q53 0 90.5 -37t37.5 -91v-1024q0 -52 -38 -90t-90 -38h-1534q-52 0 -90 38t-38 90v1152v128q0 54 37.5 91t90.5 37h640q53 0 89.5 -37t36.5 -91v-128z" />
+<glyph unicode="&#xec01;" d="M1792 770h128q73 2 109.5 -44.5t4.5 -119.5l-242 -604v-2v-2q-15 -35 -33.5 -60.5t-34.5 -37t-30 -18.5t-22 -8h-8h-2q0 -2 2 -2h-1536q-54 0 -91 37t-37 91v1280q0 54 37 91t91 37h640q54 0 91 -37t37 -91v-128h768q54 0 91 -37t37 -91v-254zM1664 1024h-896v256h-640 v-1278l256 640q1 4 4 11t13.5 25.5t24 34t36.5 32.5t50 25h1152v254z" />
+<glyph unicode="&#xec02;" d="M640 1664h896q159 0 271.5 -112.5t112.5 -271.5v-1280q0 -159 -112.5 -271.5t-271.5 -112.5h-896q-159 0 -271.5 112.5t-112.5 271.5v1280q0 159 112.5 271.5t271.5 112.5zM1792 0v1280q0 106 -75.5 181t-180.5 75h-896q-105 0 -180.5 -75t-75.5 -181v-1280 q0 -106 75.5 -181t180.5 -75h896q105 0 180.5 75t75.5 181zM1536 896h-896v-128h896v128zM1536 640h-896v-128h896v128zM1536 384h-896v-128h896v128zM1536 128h-896v-128h896v128z" />
+<glyph unicode="&#xec03;" d="M640 1664h896q159 0 271.5 -112.5t112.5 -271.5v-1280q0 -159 -112.5 -271.5t-271.5 -112.5h-896q-159 0 -271.5 112.5t-112.5 271.5v1280q0 159 112.5 271.5t271.5 112.5zM1792 0v1280q0 106 -75.5 181t-180.5 75h-896q-105 0 -180.5 -75t-75.5 -181v-1280 q0 -106 75.5 -181t180.5 -75h896q105 0 180.5 75t75.5 181z" />
+<glyph unicode="&#xec04;" d="M768 896v-532q82 -29 143 -88.5t89 -139.5q322 76 402 528q-112 40 -181 136.5t-69 223.5q0 165 111.5 274.5t272.5 109.5t272.5 -109.5t111.5 -274.5q0 -129 -71.5 -227.5t-186.5 -136.5q-7 -108 -40 -215.5t-91.5 -204.5t-135.5 -175t-178.5 -128.5t-212.5 -62.5 q-38 -116 -137.5 -187t-226.5 -71q-161 0 -272.5 109.5t-111.5 274.5q0 129 70.5 226.5t185.5 137.5v532l2 20q-115 38 -186.5 136.5t-71.5 227.5q0 165 111.5 274.5t272.5 109.5t272.5 -109.5t111.5 -274.5q0 -129 -71.5 -227.5t-186.5 -136.5z" />
+<glyph unicode="&#xec05;" d="M768 1664h894q160 0 273 -112.5t113 -271.5v-1024q0 -127 -76.5 -228.5t-195.5 -139.5q-36 -120 -137.5 -196t-230.5 -76h-896q-159 0 -271.5 112.5t-112.5 271.5v1024q0 129 76 230.5t196 137.5q36 120 137.5 196t230.5 76zM1918 256v1024q0 105 -75 180.5t-181 75.5 h-894q-71 0 -129.5 -35t-92.5 -93h862q159 0 271.5 -112.5t112.5 -271.5v-990q58 35 92 94t34 128zM640 1278h-126q-106 0 -181 -75t-75 -181v-1024q0 -106 75 -181t181 -75h126v1536zM1666 -2v1024q0 106 -75.5 181t-182.5 75h-640v-1020q52 -1 98.5 4t99.5 21.5t91 44.5 t65 77.5t30 116.5q-57 20 -92.5 69t-35.5 113q0 83 55.5 137.5t136.5 54.5t136.5 -54.5t55.5 -137.5q0 -65 -34.5 -113.5t-91.5 -68.5q-2 -173 -145 -285t-369 -109v-386h640q107 0 182.5 75t75.5 181z" />
+<glyph unicode="&#xec06;" d="M768 1664h894q160 0 273 -112.5t113 -271.5v-1024q0 -127 -76.5 -228.5t-195.5 -139.5q-36 -120 -137.5 -196t-230.5 -76h-896q-159 0 -271.5 112.5t-112.5 271.5v1024q0 129 76 230.5t196 137.5q36 120 137.5 196t230.5 76zM1918 256v1024q0 105 -75 180.5t-181 75.5 h-894q-71 0 -129.5 -35t-92.5 -93h862q159 0 271.5 -112.5t112.5 -271.5v-990q58 35 92 94t34 128zM1666 -2v1024q0 106 -75.5 181t-182.5 75h-894q-106 0 -181 -75t-75 -181v-1024q0 -106 75 -181t181 -75h894q107 0 182.5 75t75.5 181zM886 242l6 14q-15 27 -36.5 50.5 t-37 36t-61.5 45.5t-73 54q-47 34 -88 107.5t-76 226.5q-61 17 -98.5 66.5t-37.5 117.5q0 83 55 137.5t137 54.5q81 0 136.5 -54.5t55.5 -137.5q0 -65 -34.5 -113.5t-91.5 -66.5q53 -210 134 -260q10 -6 38 -23.5t41 -26t34 -24.5t37.5 -32t31.5 -36q15 20 31.5 36t37.5 32 t34 24.5t41 26t38 23.5q82 53 134 260q-55 20 -88.5 68.5t-33.5 111.5q0 83 55 137.5t137 54.5q81 0 136.5 -54.5t55.5 -137.5q0 -68 -39.5 -118.5t-100.5 -67.5q-60 -257 -164 -332q-27 -21 -73 -54t-61.5 -45.5t-37 -36t-36.5 -50.5l4 -12q55 -20 89.5 -68.5t34.5 -111.5 q0 -83 -55.5 -137.5t-136.5 -54.5q-82 0 -137 54.5t-55 137.5q0 63 32 110.5t86 67.5z" />
+<glyph unicode="&#xec07;" d="M768 1664h894q160 0 273 -112.5t113 -271.5v-1024q0 -127 -76.5 -228.5t-195.5 -139.5q-36 -120 -137.5 -196t-230.5 -76h-896q-159 0 -271.5 112.5t-112.5 271.5v1024q0 129 76 230.5t196 137.5q36 120 137.5 196t230.5 76zM1918 256v1024q0 105 -75 180.5t-181 75.5 h-894q-71 0 -129.5 -35t-92.5 -93h862q159 0 271.5 -112.5t112.5 -271.5v-990q58 35 92 94t34 128zM1666 -2v1024q0 106 -75.5 181t-182.5 75h-894q-106 0 -181 -75t-75 -181v-1024q0 -106 75 -181t181 -75h894q107 0 182.5 75t75.5 181zM1280 512v-384h-640v384h128v384 h384v-384h128zM1024 768h-128v-256h128v256z" />
+<glyph unicode="&#xec08;" d="M1152 1536v-400q167 -44 275.5 -182t108.5 -314q0 -178 -108.5 -315.5t-275.5 -180.5v-400h-256v400q-167 43 -275.5 180.5t-108.5 315.5q0 176 108.5 314t275.5 182v400h256zM1024 320q132 0 226 93.5t94 226.5q0 132 -94 225t-226 93t-226 -93t-94 -225 q0 -133 94 -226.5t226 -93.5z" />
+<glyph unicode="&#xec09;" d="M896 1024h-510l638 640l640 -640h-512v-768h-256v768zM1408 768h512q35 0 81.5 -47t46.5 -81v-896q0 -34 -46.5 -81t-81.5 -47h-1792q-35 0 -81.5 47t-46.5 81v896q0 34 46.5 81t81.5 47h512v-256h-256q-26 0 -77 -51.5t-51 -76.5v-386q0 -24 51 -75t77 -51h1280 q16 0 48 31.5t56 62.5l24 32v386q0 25 -51 76.5t-77 51.5h-256v256z" />
+<glyph unicode="&#xec0a;" d="M150 1410l118 108q12 8 37 12.5t44 5.5h19h530q982 -984 1022 -1024l-768 -768l-1024 1024v530q0 5 0.5 21t1.5 26t3 24t6.5 24t10.5 17zM416 1246q-52 -52 -52 -126t52 -126t128 -52t128 52t52 126t-52 126q-55 52 -128 52t-128 -52z" />
+<glyph unicode="&#xec0b;" d="M1664 768h-512q-1 -43 1.5 -84.5t8.5 -80t12.5 -70.5t17.5 -65.5t18.5 -56t20 -51.5t18.5 -41.5t18 -36t13 -26.5q39 -80 119.5 -161.5t167 -142t167.5 -109.5t134 -74l52 -25q-263 0 -474.5 53t-342 130t-226 188.5t-139.5 203t-68.5 201t-27 154t-2.5 90.5v4h-512 l768 768z" />
+<glyph unicode="&#xec0c;" d="M1028 134l-660 762h528v768h256v-768h534zM2048 384v-644q0 -58 -39.5 -91t-100.5 -33h-1764q-61 0 -102.5 33t-41.5 91v644h256v-512h1536v512h256z" />
+<glyph unicode="&#xec0d;" d="M2048 130l-512 -386v258h-398q-70 3 -133 25t-111 55.5t-92 73.5t-80.5 80t-70.5 73t-69.5 54t-69.5 23h-512v512h512q34 2 69.5 23t69.5 54t70.5 73t80.5 80t92 73.5t111 55.5t133 25h398v256l512 -384l-512 -384v256h-384q-25 -2 -49 -9t-41 -15t-39.5 -23.5t-34 -25 t-35.5 -30t-33 -27.5q-51 -54 -91 -125t-61 -129q22 -59 61.5 -130.5t90.5 -125.5q9 -7 33 -27.5t35.5 -30t34 -25t39.5 -23.5t41 -15t49 -9h384v256z" />
+<glyph unicode="&#xec0e;" d="M1024 1280h768q52 0 90 -38t38 -90v-512h-512v128q0 62 -33 95t-95 33h-638q-128 0 -128 -128v-768h-256q-52 0 -90 38t-38 90v1136v144q0 52 38 90t90 38h640q52 0 89 -37.5t37 -90.5v-128zM1280 512h544q39 0 67.5 -28.5t28.5 -67.5v-578q0 -39 -28.5 -66.5 t-67.5 -27.5h-1088q-39 0 -66.5 27.5t-27.5 66.5v836q0 39 27 66.5t65 27.5h454q39 0 65.5 -27.5t26.5 -66.5v-162z" />
+<glyph unicode="&#xec0f;" d="M0 512h1024v-640l1024 832l-1024 832v-640h-1024v-384z" />
+<glyph unicode="&#xec10;" d="M2048 896h-1024v640l-1024 -832l1024 -832v640h1024v384z" />
+<glyph unicode="&#xec11;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM768 640q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1152 640q0 52 -38 90 t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 640q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90z" />
+<glyph unicode="&#xec12;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM1296 1092l-724 -724l180 -180l724 724z" />
+<glyph unicode="&#xec13;" d="M1024 -384q208 0 397.5 81.5t326.5 218.5t218.5 326.5t81.5 397.5t-81.5 397.5t-218.5 326.5t-326.5 218.5t-397.5 81.5t-397.5 -81.5t-326.5 -218.5t-218.5 -326.5t-81.5 -397.5t81.5 -397.5t218.5 -326.5t326.5 -218.5t397.5 -81.5zM1024 1466q168 0 321 -65.5 t263.5 -176t176 -263.5t65.5 -321t-65.5 -321t-176 -263.5t-263.5 -176t-321 -65.5t-321 65.5t-263.5 176t-176 263.5t-65.5 321t65.5 321t176 263.5t263.5 176t321 65.5zM1536 768h-1024v-256h1024v256z" />
+<glyph unicode="&#xec14;" d="M896 928v-576q79 -46 108 -124q130 54 190 164t78 286q-55 34 -87.5 91t-32.5 127q0 110 74 183t182 73t182 -73t74 -183q0 -78 -39 -139.5t-105 -92.5q-7 -64 -17.5 -120.5t-30 -122t-46.5 -120t-68 -108.5t-92 -93t-122.5 -68t-155.5 -40q-35 -56 -92.5 -88t-127.5 -32 q-108 0 -182 73t-74 183q0 73 34.5 131.5t93.5 92.5v576q-59 34 -93.5 92.5t-34.5 131.5q0 110 74 183t182 73t182 -73t74 -183q0 -73 -34.5 -131.5t-93.5 -92.5z" />
+<glyph unicode="&#xec15;" d="M1920 768v-768q0 -159 -112.5 -271.5t-271.5 -112.5h-896q-159 0 -271.5 112.5t-112.5 271.5v1280q0 159 112.5 271.5t271.5 112.5h256v-128h-256q-105 0 -180.5 -75t-75.5 -181v-1280q0 -106 75.5 -181t180.5 -75h896q105 0 180.5 75t75.5 181v768h128zM1696 1036v-158 q0 -47 -14 -54q-3 -2 -14.5 1t-15.5 7q-174 158 -180 158q-117 0 -220 44.5t-165.5 122.5t-62.5 169q0 139 131.5 238.5t316.5 99.5q122 0 225 -45.5t163 -123t60 -169.5q0 -91 -61 -168.5t-163 -121.5zM1280 1408h-128v-128h128v128zM1536 1408h-128v-128h128v128z M1792 1280v128h-128v-128h128zM1538 640h-896v-128h896v128zM1534 384h-896v-128h896v128zM1534 128h-896v-128h896v128z" />
+</font>
+</defs></svg> 

File public/aui/css/atlassian-icons.ttf

Binary file added.

File public/aui/css/atlassian-icons.woff

Binary file added.

File public/aui/css/aui-all.css

+/*! AUI Flat Pack - version 5.1-m7 - generated 2013-05-01 03:21:01 -0400 */
+
+
+/**
+ * RESET
+ */
+html, body, p, div, h1, h2, h3, h4, h5, h6, img, pre, form, fieldset {
+    margin: 0;
+    padding: 0;
+}
+ul, ol, dl {
+    margin: 0;
+}
+img, fieldset { 
+	border: 0; 
+}
+
+/**
+ * TYPOGRAPHY - 14px base font size, agnostic font stack
+ */
+body {
+    color: #333;
+    font-family: Arial, sans-serif;
+    font-size: 14px;
+    line-height: 1.42857142857143; /* 20px equiv line-height */
+}
+
+/* International Font Stacks*/
+[lang=en] {
+    font-family: Arial, sans-serif;
+}
+
+[lang=ja] {
+    font-family: "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", "メイリオ", Meiryo, "MS Pゴシック", Verdana, Arial, sans-serif;
+}
+
+/* Default margins */
+p,
+ul,
+ol,
+dl,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+blockquote,
+pre,
+form.aui,
+table.aui,
+.aui-tabs,
+.aui-panel,
+.aui-group {
+    margin: 10px 0 0 0;
+}
+
+/* No top margin to interfere with box padding */
+p:first-child,
+ul:first-child,
+ol:first-child,
+dl:first-child,
+h1:first-child,
+h2:first-child,
+h3:first-child,
+h4:first-child,
+h5:first-child,
+h6:first-child,
+blockquote:first-child,
+pre:first-child,
+form.aui:first-child,
+table.aui:first-child,
+.aui-tabs:first-child,
+.aui-panel:first-child,
+.aui-group:first-child {
+    margin-top: 0;
+}
+
+/* Headings */
+h1 {
+    font-size: 24px;
+    font-weight: normal;
+    line-height: 1.25; /* 30px equiv line-height */
+    margin: 40px 0 0 0;
+}
+h2 {
+    font-size: 20px;
+    font-weight: normal;
+    line-height: 1.5; /* 30px equiv line-height */
+    margin: 40px 0 0 0;
+}
+h3 {
+    font-size: 16px;
+    line-height: 1.5625; /* 25px equiv line-height */
+    margin: 30px 0 0 0;
+}
+h4 {
+    font-size: 14px;
+    line-height: 1.5; /* 20px equiv line-height */
+    margin: 20px 0 0 0;
+}
+h5 {
+    color: #707070;
+    font-size: 12px;
+    line-height: 1.66666666666667;
+    margin: 20px 0 0 0;
+    text-transform: uppercase;
+}
+h6 {
+    color: #707070;
+    font-size: 12px;
+    line-height: 1.66666666666667;
+    margin: 20px 0 0 0;
+}
+h1:first-child,
+h2:first-child,
+h3:first-child,
+h4:first-child,
+h5:first-child,
+h6:first-child {
+    margin-top: 0;
+}
+/* Nice styles for using subheadings */
+h1 + h2,
+h2 + h3,
+h3 + h4,
+h4 + h5,
+h5 + h6 {
+    margin-top: 10px;
+}
+/* Increase the margins on all headings when used in the group/item pattern ... */
+.aui-group > .aui-item > h1:first-child,
+.aui-group > .aui-item > h2:first-child,
+.aui-group > .aui-item > h3:first-child,
+.aui-group > .aui-item > h4:first-child,
+.aui-group > .aui-item > h5:first-child,
+.aui-group > .aui-item > h6:first-child {
+    margin-top: 20px;
+}
+/* ... unless they're the first-child */
+.aui-group:first-child > .aui-item > h1:first-child,
+.aui-group:first-child > .aui-item > h2:first-child,
+.aui-group:first-child > .aui-item > h3:first-child,
+.aui-group:first-child > .aui-item > h4:first-child,
+.aui-group:first-child > .aui-item > h5:first-child,
+.aui-group:first-child > .aui-item > h6:first-child {
+    margin-top: 0;
+}
+
+/* Other typographical elements */
+small {
+    color: #707070;
+    font-size: 12px;
+    line-height: 1.33333333333333; /* 16px equiv line-height */
+}
+code,
+kbd {
+    font-family: monospace;
+}
+var,
+address,
+dfn,
+cite {
+    font-style: italic;
+}
+cite:before {
+    content: "\2014 \2009";
+}
+blockquote {
+    border-left: 1px solid #ccc;
+    color: #707070;
+    margin-left: 19px;
+    padding: 10px 20px;
+}
+blockquote > cite {
+    display: block;
+    margin-top: 10px;
+}
+q {
+    color: #707070;
+}
+q:before {
+    content: open-quote;
+}
+q:after {
+    content: close-quote;
+}
+abbr {
+    border-bottom: 1px #707070 dotted;
+    cursor: help;
+}
+/* Solution from https://github.com/necolas/normalize.css/blob/master/normalize.css */
+/* Corrects block display not defined in IE6/7/8/9 & FF3 */
+article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
+    display: block;
+}
+
+/* Corrects inline-block display not defined in IE6/7/8/9 & FF3 */
+audio, canvas, video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/* AUI avatar component */
+.aui-avatar {
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    display: inline-block;
+    vertical-align: text-bottom;
+}
+.aui-avatar-inner {
+    display: table-cell;
+    vertical-align: middle;
+}
+.aui-avatar img {
+    border-radius: 3px;
+    display: block;
+    margin: 0 auto;
+    height: 100%;
+    width: 100%;
+}
+
+.aui-avatar-xsmall,
+.aui-avatar-xsmall .aui-avatar-inner {
+    height: 16px;
+    width: 16px;
+}
+.aui-avatar-small,
+.aui-avatar-small .aui-avatar-inner {
+    height: 24px;
+    width: 24px;
+}
+.aui-avatar-medium,
+.aui-avatar-medium .aui-avatar-inner {
+    height: 32px;
+    width: 32px;
+}
+.aui-avatar-large,
+.aui-avatar-large .aui-avatar-inner {
+    height: 48px;
+    width: 48px;
+}
+.aui-avatar-xlarge,
+.aui-avatar-xlarge .aui-avatar-inner {
+    height: 64px;
+    width: 64px;
+}
+
+.aui-avatar-xxlarge,
+.aui-avatar-xxlarge .aui-avatar-inner {
+    height: 96px;
+    width: 96px;
+}
+
+.aui-avatar-xxxlarge,
+.aui-avatar-xxxlarge .aui-avatar-inner {
+    height: 128px;
+    width: 128px;
+}
+
+
+.aui-avatar-xxlarge img,
+.aui-avatar-xxxlarge img {
+    border-radius: 5px;
+}
+
+/* Project avatars - circular and different sizes */
+.aui-avatar-project {
+    background-color: #fff;
+    box-shadow: 0 0 0 1px #ccc;
+    position: relative;
+}
+.aui-avatar-project,
+.aui-avatar-project img {
+    border-radius: 100%;
+}
+.aui-avatar-project img {
+    height: auto;
+    max-height: 100%;
+    max-width: 100%;
+    width: auto;
+}
+/* The below style aims to minimise any "halo" caused by the antialiasing of the image */
+.aui-avatar-project:before {
+    border-radius: 100%;
+    border: 1px solid #ccc;
+    bottom: -1px;
+    content: "";
+    left: -1px;
+    position: absolute;
+    right: -1px;
+    top: -1px;
+}
+/*! AUI Badge */
+.aui-badge {
+    background: #ccc; /* for IE8 - IE9 and other browsers gets the next line */
+    background: rgba(0, 0, 0, 0.2); /* #ccc - derived with black on white - rgba so it tints off the background colour */
+    border-radius: 2em; /* needs to be at least 1em + border-top + border-bottom + padding-top + padding-bottom to get perfectly rounded */
+    color: #333; /* for IE8 - IE9 and other browsers gets the next line */
+    color: rgba(0, 0, 0, .8); /* #333 on white - rgba so it tints off the background colour */
+    display: inline-block;
+    font-size: 11px;
+    font-weight: bold;
+    line-height: 1;
+    margin: 0;
+    min-width: 1em; /* want a capsule style even when single digit */
+    padding: 3px 5px 2px 5px; /* override in aui-badge-ie.css */
+    position: relative;
+    text-align: center;
+    text-decoration: none;
+    text-shadow: none;
+    text-transform: uppercase;
+}
+/* Light version for contexts we know about */
+.aui-header a:active > .aui-badge,
+.aui-button-primary > .aui-badge,
+.aui-dropdown2.aui-style-default .active > .aui-badge {
+    background: #6B95C2; /* for IE8 - IE9 and other browsers gets the next line */
+    background: rgba(255, 255, 255, .25);
+    color: #fff;
+}
+.aui-button[disabled] > .aui-badge {
+    background: #ccc; /* for IE8 - IE9 and other browsers gets the next line */
+    background: rgba(0, 0, 0, 0.2); /* #ccc - derived with black on white - rgba so it tints off the background colour */
+    color: inherit;
+}
+.aui-button-primary[disabled] > .aui-badge {
+    background: #ccc; /* for IE8 - IE9 and other browsers gets the next line */
+    background: rgba(255, 255, 255, .25);
+}
+.aui-button > .aui-badge,
+.aui-tabs .menu-item .aui-badge {
+    top: -1px; /* slight tweak to position them in specific contexts */
+}
+/* AUI BUTTONS
+ * Note hover/disabled styles set directly as they are not precisely the same as
+ * if we used straight opacity.
+ */
+
+/* Basic Button Style */
+.aui-button,
+a.aui-button,
+.aui-button:visited {
+    background: #f2f2f2;
+    background: -webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:    -moz-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:     -ms-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:      -o-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:         linear-gradient(to bottom, #fff 0%, #f2f2f2 100%);
+    border: 1px solid #ccc;
+    border-radius: 3.01px;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #333;
+    cursor: pointer;
+    display: inline-block;
+    font-family: inherit;
+    font-size: 14px;
+    font-variant: normal;
+    font-weight: normal;
+    height: 2.1428571428571em; /* 30px - using ems so the fields increase in line with user specified font-sizes */
+    line-height: 1.4285714285714;
+    margin: 0;
+    padding: 4px 10px;
+    text-decoration: none;
+    text-shadow: 0 1px 0 white;
+    vertical-align: baseline;
+    white-space: nowrap;
+}
+.aui-button ~ .aui-button {
+    margin-left: 10px;
+}
+/* Ensure underlines not added by link styles */
+a.aui-button:hover,
+a.aui-button:active,
+a.aui-button:focus {
+    text-decoration: none;
+}
+
+/* Control button height in Firefox. See http://www.experimentgarden.com/2010/11/firefox-buttontext-height-and-padding.html */
+.aui-button::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+.aui-button:focus,
+.aui-button:hover,
+.aui-button-subtle.aui-button:focus,
+.aui-button-subtle.aui-button:hover {
+    background: #f7f7f7;
+    background: -webkit-linear-gradient(top, #fff 0%, #f7f7f7 100%);
+    background:    -moz-linear-gradient(top, #fff 0%, #f7f7f7 100%);
+    background:     -ms-linear-gradient(top, #fff 0%, #f7f7f7 100%);
+    background:      -o-linear-gradient(top, #fff 0%, #f7f7f7 100%);
+    background:         linear-gradient(to bottom, #fff 0%, #f7f7f7 100%);
+    border-color: #999;
+    color: #000;
+    text-decoration:none;
+}
+
+.aui-button:active,
+.aui-button.active,
+.aui-header .aui-button-split-more.active,
+.aui-button-subtle.aui-button:active,
+.aui-button-subtle.aui-button.active {
+    background-image: none;
+    background-color: #f2f2f2;
+    box-shadow: inset 0 3px 6px rgba(0,0,0,.1);
+    text-shadow: none;
+    text-decoration:none;
+}
+
+/* Primary Buttons */
+.aui-button.aui-button-primary,
+.aui-button.aui-button-primary:visited {
+    background: #3068a2;
+    background: -webkit-linear-gradient(top, #4687ce 0%, #3068a2 100%);
+    background:    -moz-linear-gradient(top, #4687ce 0%, #3068a2 100%);
+    background:     -ms-linear-gradient(top, #4687ce 0%, #3068a2 100%);
+    background:      -o-linear-gradient(top, #4687ce 0%, #3068a2 100%);
+    background:         linear-gradient(to bottom, #4687ce 0%, #3068a2 100%); 
+    border-color: #486582;
+    color: #fff;
+    font-weight: bold;
+    -webkit-font-smoothing: antialiased; /* for chrome on mac */
+    text-shadow: 0 1px 0 #205081;
+}
+
+.aui-button.aui-button-primary:hover,
+.aui-button.aui-button-primary:focus {
+    background: #3673B5;
+    background: -webkit-linear-gradient(top, #5A94D3 0%, #3673B5 100%);
+    background:    -moz-linear-gradient(top, #5A94D3 0%, #3673B5 100%); 
+    background:     -ms-linear-gradient(top, #5A94D3 0%, #3673B5 100%);
+    background:      -o-linear-gradient(top, #5A94D3 0%, #3673B5 100%);
+    background:         linear-gradient(to bottom, #5A94D3 0%,#3673B5 100%);
+    border-color: #205081;
+    color: #fff;
+    text-shadow: 0 1px 0 #205081;
+}
+
+.aui-button.aui-button-primary:active {
+    background: #3673B5;
+    background-image: none;
+    background-color: #3673B5;
+    box-shadow: inset 0 3px 6px rgba(0,0,0,.1);
+    text-shadow: none;
+    text-decoration:none;
+}
+
+/* Link style buttons - used for destructive/cancel actions ONLY */
+.aui-button.aui-button-link,
+.aui-button.aui-button-link:visited  {
+    background: transparent;
+    border-color: transparent;
+    color: #3b73af;
+    padding: 5px 0;
+    text-decoration: none;
+    text-shadow: none;
+    box-shadow: none;
+}
+
+.aui-button.aui-button-link:focus,
+.aui-button.aui-button-link:hover,
+.aui-button.aui-button-link:active,
+.aui-buttons .aui-button.aui-button-link:focus,
+.aui-buttons .aui-button.aui-button-link:hover,
+.aui-buttons .aui-button.aui-button-link:active,
+.aui-buttons .aui-button.aui-button-link[aria-pressed="true"] {
+    background: transparent;
+    border-color: transparent;
+    box-shadow: none;
+    text-decoration: underline;
+}
+
+/* Subtle/hybrid/entity action/mugger buttons */
+.aui-button.aui-button-subtle {
+    background: transparent;
+    border-color: transparent;
+    color: #707070;
+}
+.aui-buttons .aui-button.aui-button-subtle {
+    border-radius: 3.01px;
+}
+.aui-button.aui-button-subtle .aui-icon {
+    margin-right: 1px;
+}
+
+/* aui-buttons groups buttons together into one button lozenge. */
+.aui-buttons {
+    display: inline-block;
+    font-size: 0;
+}
+.aui-buttons:after {
+    clear: both;
+    content: "";
+    display: table;
+}
+.aui-buttons .aui-button {
+    border-radius: 0;
+    margin: 0;
+}
+.aui-buttons .aui-button:first-child {
+    border-top-left-radius: 3.01px;
+    border-bottom-left-radius: 3.01px;
+}
+.aui-buttons .aui-button:last-child {
+    border-top-right-radius: 3.01px;
+    border-bottom-right-radius: 3.01px;
+}
+.aui-buttons + .aui-buttons {
+    margin-left: 10px;
+}
+
+/* Grouped buttons go into toolbar style */
+.aui-buttons .aui-button:focus,
+.aui-buttons .aui-button:hover,
+.aui-buttons .aui-button:active {
+    border-color: #999;
+}
+.aui-buttons .aui-button[disabled],
+.aui-buttons .aui-button[disabled]:hover,
+.aui-buttons .aui-button[disabled]:focus,
+.aui-buttons .aui-button[disabled]:active,
+.aui-buttons .aui-button[aria-disabled="true"],
+.aui-buttons .aui-button[aria-disabled="true"]:hover,
+.aui-buttons .aui-button[aria-disabled="true"]:focus,
+.aui-buttons .aui-button[aria-disabled="true"]:active {
+    border-color: #ccc;
+}
+
+
+/* Grouped Primary Buttons */
+
+/* Primary Buttons */
+.aui-buttons .aui-button.aui-button-primary {
+    background: #f2f2f2;
+    background: -webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:    -moz-linear-gradient(top, #fff 0%, #f2f2f2 100%); 
+    background:     -ms-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:      -o-linear-gradient(top, #fff 0%, #f2f2f2 100%); 
+    background:         linear-gradient(to bottom, #fff 0%, #f2f2f2 100%);
+    border-color: #ccc;
+    color: #3b73af;
+    text-shadow: none;
+}
+
+.aui-buttons .aui-button ~ .aui-button {
+    border-left-width: 0;
+    padding-left: 11px;
+}
+
+.aui-buttons .aui-button.aui-button-primary:hover,
+.aui-buttons .aui-button.aui-button-primary:focus,
+.aui-buttons .aui-button.aui-button-primary:active {
+    border-color: #999;
+    color: #205081;
+}
+
+.aui-buttons .aui-button ~ .aui-button:hover,
+.aui-buttons .aui-button ~ .aui-button:focus,
+.aui-buttons .aui-button ~ .aui-button:active {
+    border-width: 1px;
+    margin-left: -1px;
+    position: relative;
+}
+
+/* Selected buttons - NOT supported for free-standing primary buttons
+ARIA usage from http://www.paciellogroup.com/blog/misc/ARIA/togglebutton.html */
+.aui-button[aria-pressed="true"],
+.aui-buttons .aui-button[aria-pressed="true"],
+.aui-buttons .aui-button[aria-pressed="true"].aui-button-primary,
+.aui-buttons .aui-button[aria-pressed="true"].aui-button-subtle {
+    background: #ccc;
+    background: -webkit-linear-gradient(top, #ccc 0%, #ddd 13%); 
+    background:    -moz-linear-gradient(top, #ccc 0%, #ddd 13%);
+    background:     -ms-linear-gradient(top, #ccc 0%, #ddd 13%); 
+    background:      -o-linear-gradient(top, #ccc 0%, #ddd 13%); 
+    background:         linear-gradient(to bottom, #ccc 0%, #ddd 13%);
+}
+
+.aui-button[aria-pressed="true"].aui-button-subtle,
+.aui-buttons .aui-button[aria-pressed="true"].aui-button-subtle {
+    color: #333;
+    border-color: #ccc;
+}
+
+.aui-buttons .aui-button[aria-pressed="true"]:active {
+    background: #ccc;
+    box-shadow: inset 0px 3px 6px rgba(0,0,0,.2);
+}
+
+
+/* Disabled states (keep last to avoid excessive selector weight)
+---------------------------------------------------------------------- */
+.aui-button[disabled],
+.aui-button[disabled]:hover,
+.aui-button[disabled]:focus,
+.aui-button[disabled]:active,
+.aui-button[aria-disabled="true"],
+.aui-button[aria-disabled="true"]:hover,
+.aui-button[aria-disabled="true"]:focus,
+.aui-button[aria-disabled="true"]:active,
+.aui-button[aria-disabled="true"][aria-pressed] {
+    background: #f2f2f2;
+    background: -webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:    -moz-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:     -ms-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:      -o-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:         linear-gradient(to bottom, #fff 0%, #f2f2f2 100%);
+    border-color: #ccc;
+    box-shadow: none;
+    color: #999;
+    cursor: default;
+    text-shadow: none;
+}
+
+.aui-button.aui-button-primary[disabled],
+.aui-button.aui-button-primary[disabled]:hover,
+.aui-button.aui-button-primary[disabled]:focus,
+.aui-button.aui-button-primary[disabled]:active,
+.aui-button.aui-button-primary[aria-disabled="true"],
+.aui-button.aui-button-primary[aria-disabled="true"]:hover,
+.aui-button.aui-button-primary[aria-disabled="true"]:focus,
+.aui-button.aui-button-primary[aria-disabled="true"]:active {
+    background: #97b3d0;
+    background: -webkit-linear-gradient(top, #a2c3e6 0%, #97b3d0 100%);
+    background:    -moz-linear-gradient(top, #a2c3e6 0%, #97b3d0 100%);
+    background:     -ms-linear-gradient(top, #a2c3e6 0%, #97b3d0 100%);
+    background:      -o-linear-gradient(top, #a2c3e6 0%, #97b3d0 100%);
+    background:         linear-gradient(to bottom, #a2c3e6 0%, #97b3d0 100%);
+    border-color: #7f9cb9;
+    box-shadow:none;
+    color: #fff;
+    text-shadow: none;
+}
+
+.aui-button.aui-button-link[disabled],
+.aui-button.aui-button-link[disabled]:hover,
+.aui-button.aui-button-link[disabled]:focus,
+.aui-button.aui-button-link[disabled]:active,
+.aui-button.aui-button-link[aria-disabled="true"],
+.aui-button.aui-button-link[aria-disabled="true"]:hover,
+.aui-button.aui-button-link[aria-disabled="true"]:focus,
+.aui-button.aui-button-link[aria-disabled="true"]:active {
+    background: transparent;
+    border-color: transparent;
+    color: #999;
+    text-shadow: none;
+    text-decoration: none;
+}
+
+.aui-buttons .aui-button.aui-button-primary[disabled],
+.aui-buttons .aui-button.aui-button-primary[disabled]:hover,
+.aui-buttons .aui-button.aui-button-primary[disabled]:focus,
+.aui-buttons .aui-button.aui-button-primary[disabled]:active,
+.aui-buttons .aui-button.aui-button-primary[aria-disabled="true"],
+.aui-buttons .aui-button.aui-button-primary[aria-disabled="true"]:hover,
+.aui-buttons .aui-button.aui-button-primary[aria-disabled="true"]:focus,
+.aui-buttons .aui-button.aui-button-primary[aria-disabled="true"]:active {
+    background: #f2f2f2;
+    background: -webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:    -moz-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:     -ms-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:      -o-linear-gradient(top, #fff 0%, #f2f2f2 100%);
+    background:         linear-gradient(to bottom, #fff 0%, #f2f2f2 100%);
+    border-color: #ccc;
+    color: #9dbbd9;
+    text-shadow: none;
+}
+
+
+/* Cross-component integration
+---------------------------------------------------------------------- */
+
+/* Dropdown2 integration
+---------- */
+.aui-button.aui-dropdown2-trigger:first-child.active,
+.aui-button.aui-dropdown2-trigger.active {
+    /* square off bottom corners */
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0;
+    border-bottom-width: 0; /* avoid double border when the dropdown is active - increase padding to cater for this reduction */
+    padding-bottom: 5px; /* increase the padding to cater for the lack of border so the button doesn't change size */
+}
+.aui-button-link.aui-dropdown2-trigger:first-child.active,
+.aui-button-link.aui-dropdown2-trigger.active {
+    border-bottom-width: 1px;
+    box-shadow: none;
+    padding-bottom: 5px;
+}
+
+.aui-buttons .aui-button.aui-button-subtle.aui-dropdown2-trigger.active,
+.aui-button.aui-button-subtle.aui-dropdown2-trigger.active {
+    border-color: #ccc;
+}
+.aui-button.aui-button-subtle.aui-dropdown2-trigger:hover {
+    border-color: #999;
+}
+
+.aui-button.aui-dropdown2-trigger {
+    padding-right: 23px !important; /* 8px (arrow width) + 10px (right padding) + 5px (margin between arrow and logo) */
+    position: relative;
+}
+.aui-button.aui-dropdown2-trigger:after {
+    border: 4px solid transparent;
+    content: "";
+    height: 0;
+    left: 100%; /* "left" + "margin-left" required because of webkit not working properly with "right" */
+    margin-left: -18px;
+    margin-top: -2px;
+    opacity: 0.8;
+    position: absolute;
+    top: 50%;
+    width: 0;
+}
+.aui-button.aui-dropdown2-trigger:after,
+.aui-buttons .aui-button.aui-button-primary.aui-dropdown2-trigger:after {
+    border-top-color: #333;
+}
+.aui-button.aui-button-primary.aui-dropdown2-trigger:after {
+    border-top-color: #fff;
+}
+.aui-button.aui-dropdown2-trigger:hover:after,
+.aui-button.aui-dropdown2-trigger.active:after {
+    opacity: 1;
+}
+.aui-button.aui-button.aui-dropdown2-trigger:after {
+    margin-top: 0;
+    top: 13px;
+}
+
+/* suppress old icon pattern for dropdown widget so we don't get double arrows */
+.aui-button.aui-dropdown2-trigger > .icon-dropdown,
+.aui-button.aui-dropdown2-trigger > .aui-icon-dropdown {
+    display: none;
+}
+
+
+/* INPUT does not play with :after - dropdown2 does not support arrow styles for INPUT buttons */
+input.aui-button.aui-dropdown2-trigger {
+    padding-right: 10px !important; /* someone used important now we're all doomed */
+}
+input.aui-button.aui-dropdown2-trigger:after {
+    display: none;
+}
+
+/* Dropdown2-only / Split Button
+---------- */
+.aui-button.aui-dropdown2-trigger.aui-button-split-more,
+.aui-button.aui-dropdown2-trigger.aui-button-split-more.active {
+    /* don't touch vertical padding or things jump around, jump around, jump up jump up and get down */
+    padding-left: 5px;
+    padding-right: 10px;
+    text-align: left;
+    text-indent: -9999em;
+}
+
+/* remove the element border... */
+.aui-button-split-main {
+    border-right: 0;
+}
+
+.aui-button.aui-dropdown2-trigger.aui-button-split-more:hover {
+    border-left: 0;
+    margin-left: 0;
+}
+ 
+/* ...then replace it with a border on a pseudo element so we can control the height. */
+.aui-button.aui-dropdown2-trigger.aui-button-split-more:before {
+    border-left: 1px solid #ccc;
+    bottom: 4px;
+    content: "";
+    display: block;
+    left: 0;
+    position: absolute;
+    top: 4px;
+}
+
+/* ...then extend it to full height border on hover */
+.aui-button.aui-button-split-main:hover + .aui-button.aui-dropdown2-trigger.aui-button-split-more:before,
+.aui-button.aui-dropdown2-trigger.aui-button-split-more.active:hover:before,
+.aui-button.aui-dropdown2-trigger.aui-button-split-more.active:before,
+.aui-button.aui-dropdown2-trigger.aui-button-split-more:hover:before {
+    border-left-color: #999; /* dark border for hover. */
+    bottom: -1px; /* -1 to pull it out over the border */
+    top: -1px; /* -1 to pull it out over the border */
+}
+/* ...and change the colour on dropdown .active */
+.aui-button.aui-dropdown2-trigger.aui-button-split-more.active:before {
+    border-left-color: #ccc; /* lighter border for dropdown-active */
+}
+
+
+/* App Header Buttons and Split Button
+---------- */
+.aui-header .aui-nav .aui-button,
+.aui-header .aui-nav .aui-button-primary.aui-style {
+    margin: 5px 0 0 10px;
+}
+
+.aui-header .aui-nav .aui-button-split-main {
+    margin-right: 0;
+}
+
+/* long selector set required to avoid a jump in non-hover focus */
+.aui-header .aui-nav .aui-buttons .aui-button ~ .aui-button:hover, 
+.aui-header .aui-nav .aui-buttons .aui-button ~ .aui-button:focus, 
+.aui-header .aui-nav .aui-buttons .aui-button ~ .aui-button:active,
+.aui-header .aui-nav .aui-button-split-more {
+    margin-left: 0;
+}
+
+.aui-header .aui-nav .aui-button-primary,
+.aui-header .aui-nav .aui-button-primary:link,
+.aui-header .aui-nav .aui-button-primary:visited {
+    background: #336ea9;
+    background-image: -moz-linear-gradient(top, #3b7fc4, #336ea9);
+    background-image: -ms-linear-gradient(top,  #3b7fc4, #336ea9);
+    background-image: -webkit-linear-gradient(top,  #3b7fc4, #336ea9);
+    background-image: -o-linear-gradient(top,  #3b7fc4, #336ea9);
+    background-image: linear-gradient(top,  #3b7fc4, #336ea9);
+    border: 0;
+    box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 1px 1px 0;
+    color: #fff;    
+    text-shadow: 0 1px 0 #295989;
+}
+
+.aui-header .aui-nav .aui-button.aui-button-primary:focus,
+.aui-header .aui-nav .aui-button.aui-button-primary:hover {
+    background: #2D5F9C;
+    background-image: -moz-linear-gradient(top, #4796e6, #3773af);
+    background-image: -ms-linear-gradient(top, #4796e6, #3773af);
+    background-image: -webkit-linear-gradient(top, #4796e6, #3773af);
+    background-image: -o-linear-gradient(top, #4796e6, #3773af);
+    background-image: linear-gradient(top, #4796e6, #3773af);
+    color: #fff;    
+}
+
+.aui-header .aui-nav .aui-button.aui-button-primary:active,
+.aui-header .aui-nav .aui-button.aui-button-primary.active {
+    background-color: #3572b0;
+    background-image: none;
+}
+
+.aui-header .aui-nav .aui-buttons .aui-button-primary.aui-dropdown2-trigger:after {
+    border-top-color: #fff;
+}
+
+.aui-header .aui-button-primary.aui-dropdown2-trigger.aui-button-split-more.active {
+    top: -1px;
+}
+
+.aui-header .aui-button-primary.aui-button-split-main:hover + .aui-button.aui-dropdown2-trigger.aui-button-split-more:before,
+.aui-header .aui-button-primary.aui-dropdown2-trigger.aui-button-split-more.active:hover:before,
+.aui-header .aui-button-primary.aui-dropdown2-trigger.aui-button-split-more.active:before,
+.aui-header .aui-button-primary.aui-dropdown2-trigger.aui-button-split-more:hover:before,
+.aui-header .aui-button-primary.aui-dropdown2-trigger.aui-button-split-more:before {
+    border-color: #1f4e7e;
+    bottom: 0;
+    top: 0;
+}
+
+
+/*! AUI Date Picker */
+/* jQuery UI Date Picker - Header */
+
+.ui-datepicker-header {
+    height: 20px;
+    margin: 0 0 8px 0;
+}
+
+.ui-datepicker-prev,
+.ui-datepicker-next {
+    width: 22px;
+    padding: 0 8px;
+    cursor: default;
+    line-height: 20px;
+    text-align: center;
+}
+
+.ui-datepicker-prev {
+    float: left;
+}
+
+.ui-datepicker-next {
+    float: right;
+}
+
+.ui-datepicker-title {
+    font-size: 20px;
+    font-weight: normal;
+    line-height: 20px;
+    margin: 0;
+    color: #333;
+    text-align: center;
+}
+
+/* jQuery UI Date Picker - Calendar */
+
+.ui-datepicker-calendar {
+    width: 100%;
+    margin: 0;
+    border-collapse: collapse;
+    border-spacing: 0;
+    table-layout: fixed;
+}
+
+.ui-datepicker-calendar th,
+.ui-datepicker-calendar td,
+.ui-datepicker-calendar td a,
+.ui-datepicker-calendar td span {
+    line-height: 20px;
+}
+
+.ui-datepicker-calendar th {
+    text-align: center;
+}
+
+.ui-datepicker-calendar td {
+    text-align: right;
+}
+
+.ui-datepicker-calendar td a {
+    color: #3b73af;
+    background: #fff;
+    text-decoration: none;
+}
+
+.ui-datepicker-calendar td a,
+.ui-datepicker-calendar td span {
+    padding: 0 8px;
+    cursor: default;
+    display: block;
+}
+
+.ui-datepicker-calendar .ui-datepicker-current-day a {
+    background: #3b73af;
+    color: #fff;
+}
+
+.ui-datepicker-today {
+    font-weight: bold;
+}
+
+.ui-datepicker-unselectable {
+    color: #707070;
+}
+
+/* jQuery UI Date Picker - Common; note that we need the extra specificity for .ui-datepicker-prev and .ui-datepicker-next to override the demo style sheets */
+.ui-datepicker-header .ui-datepicker-prev:hover, .ui-datepicker-header .ui-datepicker-prev:active, .ui-datepicker-header .ui-datepicker-prev:focus,
+.ui-datepicker-header .ui-datepicker-next:hover, .ui-datepicker-header .ui-datepicker-next:active, .ui-datepicker-header .ui-datepicker-next:focus,
+.ui-datepicker-calendar td a:hover, .ui-datepicker-calendar td a:active, .ui-datepicker-calendar td a:focus {
+    outline: 1px solid #707070;
+    text-decoration: none;
+}
+
+.ui-datepicker-prev.ui-state-disabled, .ui-datepicker-header .ui-datepicker-prev.ui-state-disabled:hover, .ui-datepicker-header .ui-datepicker-prev.ui-state-disabled:active, .ui-datepicker-header .ui-datepicker-prev.ui-state-disabled:focus,
+.ui-datepicker-next.ui-state-disabled, .ui-datepicker-header .ui-datepicker-next.ui-state-disabled:hover, .ui-datepicker-header .ui-datepicker-next.ui-state-disabled:active, .ui-datepicker-header .ui-datepicker-next.ui-state-disabled:focus {
+    outline: none;
+    color: #707070;
+}
+.aui-header {
+    background: #205081;
+    border-bottom: 1px solid #2e3d54;
+    color: #fff;
+    padding: 0 10px;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
+.aui-header:after,
+.aui-header .aui-header-logo a:after {
+    content: "";
+    display: table;
+    clear: both;
+}
+
+.aui-header .aui-header-logo,
+.aui-header .aui-nav {
+    margin: 0;
+    padding: 0;
+    float: left;
+}
+
+.aui-header .aui-header-secondary .aui-nav {
+    float: right;
+}
+
+.aui-header .aui-nav > li {
+    float: left;
+    padding: 0;
+}
+
+.aui-header a {
+    color: #fff;
+    display: block;
+    line-height: 1;
+    padding: 13px 10px;
+}
+
+.aui-header a:visited,
+.aui-header a:focus,
+.aui-header a:hover,
+.aui-header a:active {
+    text-decoration: none;
+}
+
+.aui-header .aui-header-logo a {
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    float: left;
+    height: 40px;
+    padding: 0 10px;
+}
+
+.aui-header .aui-header-logo.aui-header-logo-textonly a {
+    padding: 5px 10px;
+}
+.aui-header .aui-header-logo-textonly .aui-header-logo-device {
+    float: left;
+    padding-top: 4px;
+}
+.aui-header .aui-header-logo-textonly .aui-header-logo-device + .aui-header-logo-text {
+    padding: 5px 0 5px 10px;
+}
+
+/* for extra visible text, eg. instance names. */
+.aui-header .aui-header-logo .aui-header-logo-text {
+    display: block;
+    float: left;
+    font-size: 14px;
+    line-height: 1.4286;
+    margin: 0;
+    padding: 10px 0 10px 10px;
+}
+
+.aui-header .aui-header-logo-aui .aui-header-logo-device,
+.aui-header .aui-header-logo-bamboo .aui-header-logo-device,
+.aui-header .aui-header-logo-bitbucket .aui-header-logo-device,
+.aui-header .aui-header-logo-confluence .aui-header-logo-device,
+.aui-header .aui-header-logo-crowd .aui-header-logo-device,
+.aui-header .aui-header-logo-fecru  .aui-header-logo-device,
+.aui-header .aui-header-logo-fisheye  .aui-header-logo-device,
+.aui-header .aui-header-logo-crucible  .aui-header-logo-device,
+.aui-header .aui-header-logo-hipchat .aui-header-logo-device,
+.aui-header .aui-header-logo-jira .aui-header-logo-device,
+.aui-header .aui-header-logo-stash .aui-header-logo-device {
+    background-repeat: no-repeat;
+    background-position: 0 50%;
+    background-size: 100%;
+    display: block;
+    float: left;
+    height: 24px;
+    padding: 8px 0;
+    text-indent: -9999px;
+    text-align: left;
+}
+
+.aui-header .aui-header-logo-aui .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAARCAYAAAC4qX7BAAAA50lEQVR42s2RYQ2DMBCFJwEJlTAHWJgEJNTBcDAkTEIdrA6KA3DAHNzC0h9vd30ZWSjZl/QHd+X4uHf6a0TEi8WRuxHu+EK/h34k9cBERrH4DSL9jyKxNNhJmfFoES8cd5gIxpKlEj7XFeGxOLWhsZ4IjyUxuSNEAg6F+oTxVBGBRiOfnKE3EPsqIh00Jqj1eVNIU0fExjLk2lPKdHuLsFguazTCCeoHTJ2I3rmIjWUBuRbOVccD7yLzutF8ZrJJKhK0NQJibGiS7zxgHBVZ1Ac0TBglbzAHWfI2GyOCke6NirPdcP99XrEI2FFFhYV6AAAAAElFTkSuQmCC);
+    width: 34px;
+}
+.aui-header .aui-header-logo-bamboo .aui-header-logo-device {
+    background-image: url(data:image/png;base64,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);
+    width: 95px;
+}
+.aui-header .aui-header-logo-bitbucket .aui-header-logo-device {
+    background-image: url(data:image/png;base64,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);
+    width: 100px;
+}
+.aui-header .aui-header-logo-confluence .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOwAAAAwBAMAAADgAYtzAAAAMFBMVEX///////////////////////////////////////////////////////////////9Or7hAAAAAD3RSTlMAiES7Ee4zd5nMZiLdqlXSNCnjAAAEX0lEQVR4Xu2WXWgcVRSAj5txrLtt3Y1VxB+6bIMVBRMdFLHgDgHRClKCpfg2ayH4g2CJPxE0bPrQB0Wa0uZB6sNGfBFUuorikyaiiG+LFAuK0NV3MbPLZrObTY/nnDv3znST2QTX7oPkPAznzjn3fPfce8+Zgf+77MiOfJHL9jI/kcdn9sGHmeH/FHpPCRFbP5fj7EmP7M0EPf5tVm50lBoR5UVUMhaHHWVrrQ/s3Pon4eD5ki+54FbYEltX+sDuRzyr9U8pA1YmNXY2hmqLdbkP7N+IHYCbHecxsAi0xoa8xqZjsLwdU/dm+8DeRIAqzCG24TpSz/ABM/HcRcfDhRgsedZJ6QO7hxA/wCLiEj/wRJDLB2w7DtcKK1N9jpPlvW24KiiGpWPlcoUI8cstsMc3rXcrCDGeuy8w5GWX84JGPwjaMZjPS4iN3xjlPAL2qx5OuFdjE47zIOkHHId4iV8Q8VEZXoKn3kG8JDGI0ToNkLqTrN+pjF4h9RgcnoULpBw1uZjtFPlRLsHBCsrxX0aRJcayh68qIg1WXnnz0P+L1Qal+TSKBlAUpa0Di5FjYLUbO4dKCoxV0tQ3fXkD9jAqQpmHSs4ERY51nYK6qBa/nVfFug5d2Bs062iIbcVizSJnQ+yKpvkwamLp5tBybY+vdDf2es3yQyzGYlOatRZimzqGDyXzyrTC+UnZa4MNmwmezFQQOxFsNu5seW/O58jaDrE+X57O1P1vHuJFTeReN8GLSAZOtgbd2P0cAoa4ohj7bNVmrPboxg5JBdLTF+z5sqjFYFv3yrEmTdHtQnPW3dg85aQmZAnruwBbYFfVdB4+LKqsYEzCCtDSWHNd27ARK1PsAFuD3tjdrBpselMsaKxJdyEOC9vE6uOPw2qBaLpNGDR2SAp74FhpGSsDx0pX67gDxu5ZkHTTcVhr+9jVHMtIHFasd+um0JYOWQux6EaxiW1ipTuIxGEhIpaHBY7QivT/WTN7TU0o9MCugvURKmxrU+ySxpZD6nPvIR5jI77/hvkvrA/n/rjLKRQpUDXFNuiBbWTyyFiu/9fo9cxCFDtK63IhMcLehyj6x5zS3lMoid6ILD8VmFvBQNKLWlvvgTXeSVbO8cFEsUf0d4ef3z+k9k8hGhRCpMOt6oLBmnZdi8UmQqzlBdpyFBvE8M3X+ArYFf1Of0TrLoCBjZlA6VgseAZr1rsSxaaUQx2+Qg2bxMa7WeS8eUp9fMbDea4GjYWXlbIKcVjt/CtxzIbXoliCqHO0PV3VpXoWbNUYj/BWQ7JCBLBPKc8TYN0ijlWA3ZyE5Fbguy5uPEVY9beS8o99QM8r8pD9mhDEWAd4UridWwGX1JrTqi8TcVF1ipemp6f/FO3gbQ/cXoZe8vX0lNG/zTgZHhnR0aZcUsYzF08OU7B8jdcsK9ulfs6LPlx7eRz3XW34BucHgLUuN+6Ijl9AHwYhiTk8G47exokyDESszybCwe+n+wLsyI78AwbieZyioUdvAAAAAElFTkSuQmCC);
+    width: 118px;
+}
+.aui-header .aui-header-logo-crowd .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAARCAMAAABAWbowAAAAMFBMVEX///////////////////////////////////////////////////////////////9Or7hAAAAAD3RSTlMACR4uQVBjdIygrMDR5Paigc8rAAABpklEQVR42pWUCXLDMAhFQRto9f1v2y9QM07STlNmIuwveCAcmzhpbX2uNUevWgKZRdGmkgN9bKH3RvO61uVmVxEb3M59/xwWEQ7Y4IxlrEuCXlfCRv2G13/Cxs5PK9JQ4mmdMfSppWjN/4R1q69DB1OGEIgS3DcmpASBUSEVn2GEYnp83GSRXDasYlIQ2gzEA9dMxuQDQ60ygM7Tz81b2fEeuhAZkOZGm4hDMlj9jDxDoQdsW4nrMUXMVYiXdR8wDwgPWNwr2rJiiPsJNmPFInlHhLKJycGIbDSx5KIbRtb/YGK7iO+wJUxjl7F+ckQ0KWRvSsmzosEEa5Pu4+/0DhO46Y8EzMIIQ+FZwWiQ+Q5jC6xqielvmC04I6IEcniCobXJ1PETb8yf5u8wtASfeW236BnGs6e0Lknijfn/7Bk2bkyxF4/9gfUXGIHkpg64vwEHhsSRo1pecgiVkzKxRp0HRtlZzVn3d/PAHHAgYXs5vlihY54tFudzev5qHBiJdz+CH/bafvgBg21NqOSW2ijOevmeJZFgShCt6pOEVu4+YKdwkvIFuowinKQ49LoAAAAASUVORK5CYII=);
+    width: 76px;
+}
+.aui-header .aui-header-logo-fecru .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAAYCAMAAACcAR4nAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAARRJREFUeNrlk8GWwyAIRcFGxYjh/f/XjiemYpt2MatZzF2pcBGjoX8HZwWgmb9nbFEkbrcEMQxMPoup4aIlWtnh7OSsCValU21mTPMoUto3d4Olub9h80AXxywoAI+IzIzK88x1URWN1wbUS/rIZH4VVwMOpkkFEN7VMA+yY8QHEYkcBhDP8jgZmx3oZKKMzuEXc3QdaJmfLcuLOicWo82lk9iHdYSokwHxhr1jJ9AKBmkI8aaSuqn0Ampo170kLytLa65GWnmgkl7HKGh0IxRXy8eGra+al/XShgV70MIx1wSVbqhFasNrFE1v718DUfKXtYZtI94NsJ1ps50WQtVyttGKmw4XKF9DRU/5Dex/DtPf8gNRKhRt+v7XRAAAAABJRU5ErkJggg==);
+    width: 58px;
+}
+.aui-header .aui-header-logo-fisheye .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAYCAYAAAAYl8YPAAAA5klEQVR42uWVYQ2EMAxGkYAEJCABCZOABCTMwSQgYRImYRKQgITeSLp8rGHdLeHHJfeShgDjUUoLAxG9Fn8ie4SIxhRbikAlgY+PgwpENsVJCnzetkQ79bF/KzpSuBSWt1EXQrQIyVK54YQ6gmL9bUFEcbvKEXA3ZARRW+iFcLoOGt5ZmwbZPiUmt8KBRUkOIvqq+bg2X2yr6aOvzINsK2QS0lmVLjA1mecXE7U2uOQEJimaswwtUyJK4nJthyfaM4kMbjNsarJDEc3ig3Dhe4c9iIzW9sRgIjwLHLIBLHEQvc8P/wM+bC4cX5Ta0O0AAAAASUVORK5CYII=);
+    width: 18px;
+}
+.aui-header .aui-header-logo-crucible .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYCAMAAADAi10DAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAI1JREFUGBmtwUGWwjAMRMEvIxvHcVDf/7QoJuSxnMVUwX8zr71XN77aocvRWIYUe097SIPkisalhRxw7cbFdjngUnSWHpIDRWmQhlIhvZSe8FR6cepKUWsodU5FPwrL1G3yUXWrLGXTbSukR+hHPIAZlUPLQY0JjHBshBTD8BiAbZrGYlObcbLGpRl/9QbfvwnZQu/QSwAAAABJRU5ErkJggg==);
+    width: 18px;
+}
+.aui-header .aui-header-logo-hipchat .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAAAYCAYAAACV+oFbAAAKC0lEQVR42u3YeVhU5R4HcBQ1NFERRZ3I645sooaDCy6IComI4AKIqKGGuaLeLIuCQuN6yUwitUTTFHe4KopLkLJvYgyyY4wi68AMI4iAjPzu98zzmodpcOP6h8/1fZ7Pc97z+73nPWe+HR+m0XjWsHD7oZPlql8Np38RvsghKPnruUdyfpx7OCvQ9afkz12/uzpn5qajAzXejLaNCSsPD7XeesFv3un8TPdrkkaPZDmtuF5Dnqly8rx+jzzT7tGKlGryiKmodT2VmWC/7ex64azVvTTejOcfekMn95j0xYkdC6Mq7nuk1tByhLw8UUbLEqS0nPkwUUqeSTL6KEVGa6/LaV16La0R3adlUUUldt6/rBs6ckY7jTfj6UMw2m6k3cHrmUtS6mhpvJQWx1SSW3QlLQQ3WIRz99gqWhxXRUuAW+ORiPCTpLQmVUbrEfrazAZy/iUmwsDcprfGm6F+dNM3NJpz+la5e0Ituf9eQS6REnKOkpALuOJ84VUJuV1D4NEIHKEvia2kpQj8g/gq8kiowtsvxZsuJa+0atqQqyDXkKSkrj30umu8GS1Hh87duk/bHZO5MLaGXK6U07zLAPMxX/BbOTlHViD0ChZ6BUKXkHu0BG++BIFXIvBK7oga/gWgv+h3SKynMf/ce/xZ9yYiLegJXdX02kF30IGOrDYOhG35vETUG95jexmBFgyGUDgF+q8sbCO3z7Y7xzygeRGl5HgBcHS6WEpzL5bRvEtlNP9yGS1A8M4I3iUSgSNMt6sSqOBqynUO50tpdniJkgPMjSijub/JqZ9wptMzPvjHIIFQNb2ukMH6U2AkPRmjXiJkazgP94A/cmEJ79ykzaGyl6VFoZO2bh+bQzdlThEV5HC2mGafK0ZYxTQHHM+XkNMFLrgSmnexFKGXkvMVhH+pFL1isj9zl+zCimjWfzh3W5h9poicLstovF9YYrt27TWf8kB+wI1oNT1tkLD+TBgGcqgCgxf84J8TGyzsKxAGCZDJ9m8GBRi1IeAesAHCoX+LZj+LWQtnX5CRfRiCC0VoCM9eGdZdZfgO55TBK0N3BC7I90/dIduTd3B8OruwYrI9WqjQ6v2PIU95OF8WQFQrYZewvhNXa25u1oYuLxiAMy/oYOin0u8GQiAWtkEbwjYlNvCcei2aBgs+2zbrbBW9f+K20kyEOJMLKvQOC76IZp/F24pzm2NimhECR58L1mO/0+Wkb267pLWHUygUvkAQqaanBcWsbwd6sA22QndwhAAY1dTUZIzjz3AR9uN8HNvjLcgBgoinPIcQCBoViqYROK6Hc3Ace9k/Xof5INQ+gVCIgmOoubM9LOEoEHAjGHb8dZMRHwbtsz1dhhALEVAhAiok2+NiBC9G6LeVpqNnffAWWR96cZMOiWnfZZFcOMpskroP2dDQ4AsEsfX19XoPHjzow+jhfBDqZaw/A4yBmHchiM3joA6IpxGmwSggaEZhcmthoy8EgnrIB1Ixl1vX2Ni4kzvHUQIlvL43rAZS9eTNdv1q5/TjZTT10J9k/eufNO0wHFEGrwx5yv4CmrwvnyYHF7yUMT9mU1JRPeVmim536dKlp+qHvH//vi8QKEB11EEz69uAIW/tO7AViFNXV3cA/4EGwmicJ7O6CLzYvBb6tRY2ekIgJg37WMBYzG+yWgK0x32Goz6Od90cUEADHtYEnNj6Rqy1xdonf2wFls5rp4WUkdX+fLI6UEBTDxYg9FsIv4Am7s0ly925NHHPy7GEcYGZlHFHRtxwc3PzUv2Q8upqXyBQQA3UqmhmfRsw5K0VgA8QFNyTyzX/2lMuF6LWxIQCgQxa/TkBPSEQB9eP5dWXsboUdB/XZVKpUbVMtqC6unot6nVAMBqGsHkDvNPiJm/3G2Y+cXdOs/Lt/TkPbzKOwXk0PjCbxu/KapMxO7PIfk8GyWvqiBshISGXVD9kpUTiCwQxVVVVulKptBejW1lZOQD1Mta3AUM2V4AAfIAgQmVPLShivVh2bJRIJK3+oUZfyNvbgFd3YPV7uF67vLzcFMdorsbTzI7jwIjNG2CQ6n3aG68Kjpt8oAhvYg5N/CmHxn6XSRYBGWTxbdsYbv2DdkYUsD/wRJGRkSLcr8V3z5KSEl8giGQlfq8zcIPABgzZXAEC8AGCC2quK2a9AKhl802thY2ekLe3Ea/uyOqVYACFQKWlpSEI3gJHA969xoIRmzfA338R1e4/Ygre5OYJe/NIiJDMt6WT+TdtY+qXTtMDUqm8Uk4KxUPixrlz5xJU731bLPYFgig1PW0oYX0bMGRzBQjABwhyxOJCTQ02xGLxVNQesZ4xhLO5rLCwcKK6sNET8vY24tUdWb0IVrK59PZtcUd2L02cl7H6WN4zPkSvv/ofoaZ88PW4IDGNRkijvkp7aaPB1OcGGW9JoKgbd4ioierrG4gb/v7+war3zc/P9wWCKDU9bShhfRswZHMFCMAHSCkv72Bubq5pXm6uFc5zWT2e2+dWQcEIzGtYrQFr9+Tl5dmDFbjm5+dtRt2St7cR7xkcWf0ueDzeA9fNyMnO7ou9dnA1ZhLowkP2TAF4nglqA+87wePfI31EZPblDTLzTn0pQzenkNmn8XQmroDoUSOCrqeHDx8qj2ZmZlaq98zKzPwXECSr6XWDWta3AxMgpawsffgSCMpAweboK4/i7OxsUw02cnJyLFH7g137N6i7ADGmvGdYwGrc/v0hTmWPapzLgbuvM3cNahf4e7f+69/giYuMN8U8MN2SSiafJD8Xo83JNHhDEg1cF0vzAxIpLfuuMmh87VGGzA0/P78D6u4nSk8XwmpwUNPrCEtZvz/osPkqeDs9PX0rEJwViURmqAXCCdh48+bNPqr7ofYW1s1C3x9OsrXbUXPMEIkGcPsyPXnPMIjdcwXWtb+ZkdETc284Df4ZGRncddZsjQm7D39NkMbTxuClxwqNN6eR0aZEgI2JxJ2bbMkgk09FOIpo2Kbr1H91PL37UTSZbbxG7jsSKSw6j+pq71FzUwP3vZcLW/lW79r1/UlNTc3OGv/jcT011R8ILr2mP7fqCIZ5XqwxxJs6fH0cGXoh7M0iGuCyP6ev1cdHBTY+4YIZ3uEzNx4p/jYsl8KT7lJxhZzwKrPfAx5RbW0tB/NmCgwMDH1Vz5qUmLgdCK68lmHrvrd463CvNDJYE0/DN9ygYatiSW/86n3tO2jp8tf17NZZx9He1jXA3++H40dDIiMiIjLCw8NFV69eLUDkyv9N5Ya3t3fQq3rW+Lg4P2iE8NcqZM1O2h16ma9YOWxtChl4pdMQz2sksP0mUqv3cOsX2kdTs6uXl9d2fP+sJ4z8/AKZnp7ekFfxzLGxsTowEPq8VmF31BYY97X2jexr7RPRY4SLXyedAWPbsp++vr7Jli1bvk9JSbkVHBwcqa2tjUD+v8d/Aerlv5d4fAhdAAAAAElFTkSuQmCC);
+    width: 91px;
+}
+.aui-header .aui-header-logo-jira .aui-header-logo-device {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHIAAAAwCAYAAADNTS4aAAAFk0lEQVR42u2bf2hVZRjH793c5sbMNtTKTKEwFgVJpFGx0VYr24yNLAWjHP2wH+qmJWmSpOFKxEyqCeoKo0QzNCUH9kM0K5xR5HS02mytcErq5syU5n48ff8Y3MPL8z73fc8Zuzs75wOfv+5zztne7zn3vOd574kQUegQMPADEAYZ8wl4Ap6Hq2Fy0AfVj0FOgd3QyYKgD+pgDDIJlsH3YBlztS2BKnuY/dwH18FyeEXQBz0RQa6HTjYqnz8MVd5WambDXorxExwW9IEfyCAzma/NHniloyYKqylGLcxS9lMHVQqDPvADGeRw2MUEmc3U5sDJmonOUahyT9AHfqC/Wquhky0uDvI8dFIHU4M+8ImY7DzXF+gzHh4tiuD7cAXMDvqghw2BUOMgS2ABTBqgP+BWWBY2Efo/yIsEQCusgtNgZj8eMBXmwpWwgWLcLmyTD5vg74qvM7UlmtoKpjYPNjK1kvWwFu6Gb8BCl49SM+Bx4TjfweFegvwZqnTBHf3w7LccXiCekcaTJbnx8CbxbNHu1zt/wccsx+IAxechL0FuJj0zlNpCeAb+oZxNZ+FSpXY87CKeJhjxRZAyawwHfTTspvhUewlyJuk5plyVk2Av8cxV9ruR9Kz1VZAy0w0G/Uky42+Y7DbIDHiO9Lyk1H8KVf6EaY6au+KcgZOHUJD1BoO+m8zJ8/L4sYL0dCoTk2thO8XohQ84Ps+CLaTnAIwMsiDPwO0aa2AryUyM0/a8ROas9RLkKHie9DQqk5PivoAJrFT6sDtIpmAQBvmtQZPkZdIzS9h2OtnR7LUhsJBk9sFUJcwKzaDq2AojPghS53HiWSRs8xHZM8lLkMmwlmQ+hlHt4Mu0wat8HmQN8SzR1Kdo5h89MA9uI57lXlt0E2AbybzLhDkrzuSmF06DEZ8HuccyyELiqe37/H7iOWIapGSRwTPPW476R6R65T4atCCriGdZ3+dpQsPkepsg5fulzDo4B3aSzC4YDWCQUWG2e5vBPl80D1L2HfLO9zADRoZIkPuJZzFTewfxtMKowd90sL+CjMIPyD0/qv1UnweZBf8lnqeZ+lXEs4lpZXL0wDG2QUoz2W1kzzE4GkZ8EuQhmKVxAiyOM6PPZY71K/GUMrX10gmi03oZyrLF1ASvsQ3Pxy26dpiiHOcm4vlPs0S4hnhq7IOUTYNfUXzOwutgJEBBVjLHWUo8X+jWX4XgR8hB2psBDxoEOSZAQdbBdOY4PxBPudA46JCWEuUg7R0JD5PMXhgNQJBfwlHMMcYJS303OMZxAVzssFlua3oPMgfOVGZvR0lm0ZAOUl6hmEc8DbEahGhOB0zzGmSK43c2C5Wz7gTpuQDH+yjIBvioYmWcvvFYzd/+tcGvCfaSHVO9Blmu9EsfVxaPO0nPThjx+XPk55a3kGx4mXjy+2rS4SWyY4OXIDNhO7PInO+oqSCZO30e5NXwNOmZy7w3ytHheESZSvacgklug5xPPKcdz4lRuE/qs7oM8pVB1NkpJT0X4Y2O2p3Es11Zx22D7YznpIvCbZC/GXYyJgpfsd3ae4nsLuL5LCEtOrlVeRgOg+l9wXLMNvy/k+BJ4lntJsgc0vMLc5lvIj3zLEMsEJbFKhMU5AjYTHpegyXGPVPZDcTT6CbICstgphAQryLZdHgvXA+7SM/dCWya5wonWBc8JC0iW/gg6bnZNsjNpGecZpsW8UySrTJcTYkmeBlrFdmzzEU79B/iedU2yG+Ip9XFbzc7DV4QepZkOpWrMVFBpsIjpEFaRLb0E93JrAnSOpStLjoapwxech0Le4UJ0xxh26csfs5fqjnOhxaDfAvsIDPqXLYrizS3mBY/vB9Zq/kGKA7663N+e9H1BXgZnoT74XyYHvSwwjeWwyBDwyBDwyBD7f0fOqGjwl4fmCwAAAAASUVORK5CYII=);
+    width: 57px;
+}
+.aui-header .aui-header-logo-stash .aui-header-logo-device {
+    background-image: url(data:image/png;base64,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);
+    width: 70px;
+}
+
+/* Custom IMG elements can be set in most products */
+.aui-header .aui-header-logo img {
+    border: 0;
+    float: left;
+    max-height: 30px;
+    padding: 5px 0;
+}
+
+/* Positioning icons in the header */
+.aui-header .aui-icon {
+    margin: -1px 0;
+    vertical-align: top;
+}
+
+/* In case showIcon is not set to false for header dropdown triggers */
+.aui-header .aui-dropdown2-trigger .aui-icon-dropdown {
+    display: none;
+}
+/* Styling the dropdown2 triggers differently in the header to avoid inline-block spacing issues with other icons */
+.aui-header .aui-dropdown2-trigger {
+    padding-right: 23px !important; /* 8px (arrow width) + 10px (right padding) + 5px (margin between arrow and logo) */
+    position: relative;
+}
+.aui-header .aui-dropdown2-trigger:after {
+    border: 4px solid transparent;
+    border-top-color: #fff;
+    content: "";
+    height: 0;
+    margin-left: -18px;
+    margin-top: -2px;
+    opacity: 0.8;
+    left: 100%; /* "left" + "margin-left" required because of webkit not working properly with "right" */
+    position: absolute;
+    text-indent: -99999px;
+    top: 50%;
+    width: 0;
+}
+.aui-header .aui-dropdown2-trigger:hover:after,
+.aui-header .aui-dropdown2-trigger.active:after {
+    opacity: 1;
+}
+.aui-header .aui-button.aui-dropdown2-trigger:after {
+    margin-top: 0;
+}
+.aui-header a > .aui-avatar {
+    vertical-align: top;
+}
+.aui-header a > .aui-avatar-tiny {
+    margin: -1px 0; /* (16px Tiny Avatar height - 14px font size (line-height 1 in the header)) / 2 */
+}
+.aui-header a > .aui-avatar-small {
+    margin: -5px 0; /* (24px Small Avatar height - 14px font size (line-height 1 in the header)) / 2 */
+}
+
+/**
+ * Buttons in header
+ */
+.aui-header .aui-button.aui-button-primary.aui-style {
+    background: #366EA7;
+    background-image: -webkit-linear-gradient(top, #3b7fc4, #2c66a2);
+    background-image:    -moz-linear-gradient(top, #3b7fc4, #2c66a2);
+    background-image:     -ms-linear-gradient(top, #3b7fc4, #2c66a2);
+    background-image:      -o-linear-gradient(top, #3b7fc4, #2c66a2);
+    background-image:         linear-gradient(to bottom, #3b7fc4, #2c66a2);
+    border: 0;
+    box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 1px 1px 0;
+    margin: 6px 10px 0 10px;
+}
+
+.aui-header .aui-button.aui-button-primary.aui-style.active{
+    padding-bottom: 4px; /* header doesn't need the button/dropdown integration padding change because it has no border */
+}
+
+.aui-header .aui-button.aui-button-primary.aui-style:focus,
+.aui-header .aui-button.aui-button-primary.aui-style:hover,
+.aui-header .aui-button.aui-button-primary.aui-style:active {
+    background: #2D5F9C;
+    background-image: -webkit-linear-gradient(top, #6299D0, #2C5E9B);
+    background-image:    -moz-linear-gradient(top, #6299D0, #2C5E9B);
+    background-image:     -ms-linear-gradient(top, #6299D0, #2C5E9B);
+    background-image:      -o-linear-gradient(top, #6299D0, #2C5E9B);
+    background-image:         linear-gradient(to bottom, #6299D0, #2C5E9B);
+}
+
+/**
+ * Dropdown2 triggers in header
+ */
+.aui-header .aui-dropdown2-trigger.active,
+.aui-header a:focus,
+.aui-header a:hover,
+.aui-header a:active {
+    background-color: #3b73af;
+}
+
+/* Icons in Dropdown2 triggers and links in header */
+.aui-header .aui-dropdown2-trigger.active .aui-icon,
+.aui-header a:focus .aui-icon,
+.aui-header a:hover .aui-icon,
+.aui-header a:active .aui-icon {
+    opacity: 1;
+    filter: alpha(opacity=100);
+}
+
+/**
+ * Quick search for header
+ */
+.aui-header .aui-quicksearch {
+    padding: 0 10px;
+}
+.aui-header .aui-quicksearch input {
+    -moz-appearance: textfield;
+    -webkit-appearance: textfield;
+    background: #f5f5f5 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAb0lEQVR42p2RMQ7AIAhFWXsG1h7Gtffo6urqyJGpwyetomnwJ38BH/wgfZSaS7PABbVOqkqm3Fzx6IQTatlDb5PJi21YBy1iuNgjJIgzFXqyCcXj1Z1DXNGTiw01aP252DCCgH7Fk41h8KaAGMDxADnaOPucd/m3AAAAAElFTkSuQmCC) no-repeat 7px 6px;
+    border: none;
+    border-radius: 5em;
+    box-shadow: inset 1px 2px 3px rgba(0, 0, 0, 0.3);
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #333;
+    font-family: inherit;
+    font-size: inherit;
+    height: 1.71428571428571em; /* 24px effective - need height in ems so that user-specified font-sizes apply */
+    line-height: 1.71428571428571;
+    margin: 8px 0;
+    padding: 2px 10px 2px 25px;
+    vertical-align: baseline;
+    width: 170px;
+}
+.aui-header .aui-quicksearch input:focus {
+    background-color: #fff;
+    outline: none;
+}
+/* Placeholder styling
+ * - You have to use two rules, because user agents are required to ignore a rule with an unknown selector.
+ *   Since WebKit doesn’t know the proprietary Mozilla selector and vice versa, you have to include them separately.
+ *   See http://stackoverflow.com/questions/2610497/change-an-inputs-html5-placeholder-color-with-css#answer-2610741
+ */
+.aui-header .aui-quicksearch input::-webkit-input-placeholder {
+    color: #707070;
+}
+.aui-header .aui-quicksearch input:-moz-placeholder {
+    color: #707070;
+}
+
+/*! AUI Lozenge */
+.aui-lozenge {
+    background: #ccc;
+    border: 1px solid #ccc;
+    border-radius: 3px;
+    color: #333;
+    display: inline-block;
+    font-size: 11px;
+    font-weight: bold;
+    line-height: 1;
+    margin: 0;
+    padding: 2px 5px 1px 5px;
+    text-align: center;
+    text-decoration: none;
+    text-transform: uppercase;
+}
+.aui-lozenge.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #ccc;
+    color: #333;
+}
+.aui-lozenge-success {
+    background-color: #14892c;
+    border-color: #14892c;
+    color: #fff;
+}
+.aui-lozenge-success.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #b2d8b9;
+    color: #14892c;
+}
+.aui-lozenge-error {
+    background-color: #d04437;
+    border-color: #d04437;
+    color: #fff;
+}
+.aui-lozenge-error.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #f8d3d1;
+    color: #d04437;
+}
+.aui-lozenge-current {
+    background-color: #ffd351;
+    border-color: #ffd351;
+    color: #594300;
+}
+.aui-lozenge-current.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #ffe28c;
+    color: #594300;
+}
+.aui-lozenge-complete {
+    background-color: #4a6785;
+    border-color: #4a6785;
+    color: #fff;
+}
+.aui-lozenge-complete.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #e4e8ed;
+    color: #4a6785;
+}
+.aui-lozenge-moved {
+    background-color: #815b3a;
+    border-color: #815b3a;
+    color: #fff;
+}
+.aui-lozenge-moved.aui-lozenge-subtle {
+    background-color: #fff;
+    border-color: #ece7e2;
+    color: #815b3a;
+}
+/*! AUI Navigation */
+
+/* Nav defaults - put very little here!
+-------------------- */
+.aui-nav,
+.aui-nav > li {
+    margin: 0;
+