diff --git a/.gitignore b/.gitignore
index 5b106cc..1c3a481 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,16 @@ node_modules/
*.sqlite-wal
*.pid
*.map
+state.sqlite
+master.cfg.sample
+
+# Builders
+workers
+linux_glibc219_i686_cmake
+linux_glibc219_x86_64_cmake
+mac_x86_64_10_6_cmake
+win32_cmake_vc2013
+win32_cmake_vc2015
+win64_cmake_vc2013
+win64_cmake_vc2015
+
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 6a4f770..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "public_html/assets_shared"]
- path = public_html/assets_shared
- url = git://git.blender.org/blender-web-assets.git
diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index 3b10ba4..0000000
--- a/Gruntfile.js
+++ /dev/null
@@ -1,31 +0,0 @@
-module.exports = function(grunt) {
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
-
- sass: {
- dist: {
- options: {
- style: 'compressed'
- },
- files: {
- 'public_html/assets/css/main.css': 'public_html/assets/sass/main.sass'
- }
- }
- },
-
- autoprefixer: {
- no_dest: { src: 'public_html/assets/css/main.css' }
- },
-
- watch: {
- files: ['public_html/assets/sass/main.sass'],
- tasks: ['sass', 'autoprefixer'],
- }
- });
-
- grunt.loadNpmTasks('grunt-contrib-sass');
- grunt.loadNpmTasks('grunt-autoprefixer');
- grunt.loadNpmTasks('grunt-contrib-watch');
-
- grunt.registerTask('default', ['sass', 'autoprefixer', 'watch']);
-};
diff --git a/master.cfg b/master.cfg
index ac75d48..7df5bd9 100644
--- a/master.cfg
+++ b/master.cfg
@@ -9,81 +9,40 @@ NIGHT_SCHEDULE_BRANCHES = [None, "blender2.7"]
# List of the branches available for force build
FORCE_SCHEDULE_BRANCHES = ["master", "blender2.7", "experimental-build"]
-"""
-Stock Twisted directory lister doesn't provide any information about last file
-modification time, we hack the class a bit in order to have such functionaliity
-:)
-"""
+# List of branches availble for addons branch selection.
+ADDONS_BRANCHES = ["master", "blender2.7"]
-from buildbot.status.web.base import DirectoryLister
-
-
-def get_files_and_directories(self, directory):
- from twisted.web.static import (getTypeAndEncoding,
- formatFileSize)
- import urllib
- import cgi
- import time
- import os
- files = []
- dirs = []
- for path in directory:
- url = urllib.quote(path, "/")
- escapedPath = cgi.escape(path)
- lastmodified = time.ctime(os.path.getmtime(
- os.path.join(self.path, path)))
- if os.path.isdir(os.path.join(self.path, path)):
- url = url + '/'
- dirs.append({'text': escapedPath + "/", 'href': url,
- 'size': '', 'type': '[Directory]',
- 'encoding': '',
- 'lastmodified': lastmodified})
- else:
- mimetype, encoding = getTypeAndEncoding(path, self.contentTypes,
- self.contentEncodings,
- self.defaultType)
- try:
- size = os.stat(os.path.join(self.path, path)).st_size
- except OSError:
- continue
- files.append({
- 'text': escapedPath, "href": url,
- 'type': '[%s]' % mimetype,
- 'encoding': (encoding and '[%s]' % encoding or ''),
- 'size': formatFileSize(size),
- 'lastmodified': lastmodified})
- return dirs, files
-DirectoryLister._getFilesAndDirectories = get_files_and_directories
+# List of branches availble for libraries branch selection.
+LIB_BRANCHES = ["trunk"]
# Dictionary that the buildmaster pays attention to.
c = BuildmasterConfig = {}
-# BUILD SLAVES
+# BUILD WORKERS
#
# We load the slaves and their passwords from a separator file, so we can have
# this one in SVN.
-from buildbot.buildslave import BuildSlave
+from buildbot.worker import Worker
import master_private
-c['slaves'] = []
-
+c['workers'] = []
for slave in master_private.slaves:
- c['slaves'].append(BuildSlave(slave['name'], slave['password']))
+ c['workers'].append(Worker(slave['name'], slave['password']))
# TCP port through which slaves connect
-
-c['slavePortnum'] = 9989
-
+c['protocols'] = {
+ "pb": {
+ "port": "tcp:{}".format(9989)
+ }
+}
# CHANGE SOURCES
from buildbot.changes.svnpoller import SVNPoller
from buildbot.changes.gitpoller import GitPoller
-c['change_source'] = GitPoller(
- 'git://git.blender.org/blender.git',
- pollinterval=1200)
-
+c['change_source'] = GitPoller('git://git.blender.org/blender.git',
+ pollinterval=1200)
# CODEBASES
#
@@ -102,6 +61,7 @@ all_repositories = {
def codebaseGenerator(chdict):
return all_repositories[chdict['repository']]
+
c['codebaseGenerator'] = codebaseGenerator
@@ -109,55 +69,121 @@ c['codebaseGenerator'] = codebaseGenerator
#
# Decide how to react to incoming changes.
-# from buildbot.scheduler import Scheduler
from buildbot.schedulers import timed, forcesched
c['schedulers'] = []
def schedule_force_build(name):
- c['schedulers'].append(forcesched.ForceScheduler(name='force ' + name,
+ """
+ Makes it possible to have "Force Build" for the given builder.
+ Makes sure only reasonabel subset of properties are exposed.
+ """
+ c['schedulers'].append(forcesched.ForceScheduler(
+ name='force_' + name,
+ buttonName="Force Build",
builderNames=[name],
codebases=[forcesched.CodebaseParameter(
codebase="blender",
branch=forcesched.ChoiceStringParameter(
- name="branch", choices=FORCE_SCHEDULE_BRANCHES, default="master"),
+ name="branch",
+ choices=FORCE_SCHEDULE_BRANCHES,
+ default="master"),
# Do not hide revision, can be handy!
- repository=forcesched.FixedParameter(name="repository", default="", hide=True),
- project=forcesched.FixedParameter(name="project", default="", hide=True)),
- # For now, hide other codebases.
- forcesched.CodebaseParameter(hide=True, codebase="blender-translations"),
- forcesched.CodebaseParameter(
- codebase="blender-addons",
- branch=forcesched.ChoiceStringParameter(
- name="branch", choices=["master", "blender2.7"], default="master"),
- repository=forcesched.FixedParameter(name="repository", default="", hide=True),
- project=forcesched.FixedParameter(name="project", default="", hide=True),
- revision=forcesched.FixedParameter(name="revision", default="", hide=True),
- ),
- forcesched.CodebaseParameter(hide=True, codebase="blender-addons-contrib"),
- forcesched.CodebaseParameter(hide=True, codebase="blender-dev-tools"),
- forcesched.CodebaseParameter(hide=True, codebase="lib svn")],
+ repository=forcesched.FixedParameter(
+ name="repository",
+ default="",
+ hide=True),
+ project=forcesched.FixedParameter(
+ name="project",
+ default="",
+ hide=True)),
+ # For now, hide other codebases.
+ forcesched.CodebaseParameter(
+ hide=True,
+ codebase="blender-translations"),
+ forcesched.CodebaseParameter(
+ codebase="blender-addons",
+ branch=forcesched.ChoiceStringParameter(
+ name="branch",
+ choices=ADDONS_BRANCHES,
+ default="master"),
+ repository=forcesched.FixedParameter(name="repository",
+ default="",
+ hide=True),
+ project=forcesched.FixedParameter(name="project",
+ default="",
+ hide=True),
+ revision=forcesched.FixedParameter(name="revision",
+ default="",
+ hide=True),
+ ),
+ forcesched.CodebaseParameter(
+ codebase="blender-addons-contrib",
+ branch=forcesched.ChoiceStringParameter(
+ name="branch",
+ choices=ADDONS_BRANCHES,
+ default="master"),
+ repository=forcesched.FixedParameter(name="repository",
+ default="",
+ hide=True),
+ project=forcesched.FixedParameter(name="project",
+ default="",
+ hide=True),
+ revision=forcesched.FixedParameter(name="revision",
+ default="",
+ hide=True),
+ ),
+ forcesched.CodebaseParameter(
+ hide=True,
+ codebase="blender-dev-tools"),
+ forcesched.CodebaseParameter(
+ codebase="lib svn",
+ branch=forcesched.ChoiceStringParameter(
+ name="branch",
+ choices=LIB_BRANCHES,
+ default="trunk"),
+ repository=forcesched.FixedParameter(name="repository",
+ default="",
+ hide=True),
+ project=forcesched.FixedParameter(name="project",
+ default="",
+ hide=True),
+ revision=forcesched.FixedParameter(name="revision",
+ default="",
+ hide=True),
+ ),
+ ],
properties=[]))
-def schedule_build(name, hour, minute=0):
+def schedule_nightly_build(name, hour, minute=0):
+ """
+ Creates scheduler for nightly builds for a given builder.
+ """
for current_branch in NIGHT_SCHEDULE_BRANCHES:
- scheduler_name = "nightly " + name
+ scheduler_name = "nightly_" + name
if current_branch:
scheduler_name += ' ' + current_branch
# Use special addons submodule branch when building blender2.7 branch.
addons_branch = "master"
if current_branch == "blender2.7":
addons_branch = "blender2.7"
- c['schedulers'].append(timed.Nightly(name=scheduler_name,
+ c['schedulers'].append(timed.Nightly(
+ name=scheduler_name,
codebases={
- "blender": {"repository": ""},
- "blender-translations": {"repository": "", "branch": "master"},
- "blender-addons": {"repository": "", "branch": addons_branch},
- "blender-addons-contrib": {"repository": "", "branch": "master"},
- "blender-dev-tools": {"repository": "", "branch": "master"},
- "lib svn": {"repository": "", "branch": "trunk"}},
+ "blender": {"repository": "",
+ "branch": current_branch},
+ "blender-translations": {"repository": "",
+ "branch": "master"},
+ "blender-addons": {"repository": "",
+ "branch": addons_branch},
+ "blender-addons-contrib": {"repository": "",
+ "branch": addons_branch},
+ "blender-dev-tools": {"repository": "",
+ "branch": "master"},
+ "lib svn": {"repository": "",
+ "branch": "trunk"}},
branch=current_branch,
builderNames=[name],
hour=hour,
@@ -170,16 +196,15 @@ def schedule_build(name, hour, minute=0):
# perform a build: what steps, and which slaves can execute them.
# Note that any particular build will only take place on one slave.
+from buildbot.config import BuilderConfig
+from buildbot.plugins import steps, util
from buildbot.process.factory import BuildFactory
from buildbot.process.properties import Interpolate
-from buildbot.steps.source import SVN
-from buildbot.steps.source import Git
from buildbot.steps.shell import ShellCommand
from buildbot.steps.shell import Compile
from buildbot.steps.shell import Test
from buildbot.steps.transfer import FileUpload
from buildbot.steps.master import MasterShellCommand
-from buildbot.config import BuilderConfig
# add builder utility
@@ -189,50 +214,50 @@ buildernames = []
def add_builder(c, name, libdir, factory, branch='',
rsync=False, hour=3, minute=0):
- slavenames = []
+ workernames = []
for slave in master_private.slaves:
if name in slave['builders']:
- slavenames.append(slave['name'])
+ workernames.append(slave['name'])
- if len(slavenames) > 0:
+ if workernames:
f = factory(name, libdir, branch, rsync)
c['builders'].append(BuilderConfig(name=name,
- slavenames=slavenames,
+ workernames=workernames,
factory=f,
- category='blender'))
+ tags=['blender']))
buildernames.append(name)
- schedule_build(name, hour, minute)
+ schedule_nightly_build(name, hour, minute)
schedule_force_build(name)
+
# common steps
-
def git_submodule_step(submodule):
- return Git(name=submodule + '.git',
- repourl='git://git.blender.org/' + submodule + '.git',
- mode='update',
- codebase=submodule,
- workdir=submodule + '.git')
+ return steps.Git(name=submodule + '.git',
+ repourl='git://git.blender.org/' + submodule + '.git',
+ mode='incremental',
+ codebase=submodule,
+ workdir=submodule + '.git')
def git_step(branch=''):
if branch:
- return Git(name='blender.git',
- repourl='git://git.blender.org/blender.git',
- mode='update',
- branch=branch,
- codebase='blender',
- workdir='blender.git',
- submodules=True)
+ return steps.Git(name='blender.git',
+ repourl='git://git.blender.org/blender.git',
+ mode='incremental',
+ branch=branch,
+ codebase='blender',
+ workdir='blender.git',
+ submodules=True)
else:
- return Git(name='blender.git',
- repourl='git://git.blender.org/blender.git',
- mode='update',
- codebase='blender',
- workdir='blender.git',
- submodules=True)
+ return steps.Git(name='blender.git',
+ repourl='git://git.blender.org/blender.git',
+ mode='incremental',
+ codebase='blender',
+ workdir='blender.git',
+ submodules=True)
def git_submodules_update():
@@ -245,12 +270,14 @@ def git_submodules_update():
def lib_svn_step(dir):
- return SVN(name='lib svn',
- baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir,
- codebase='lib svn',
- mode='update',
- defaultBranch='trunk',
- workdir='lib/' + dir)
+ # TODO(sergey): For some reason interpolation is always giving empty branch.
+ # lib_repo = 'https://svn.blender.org/svnroot/bf-blender/%(src::branch)s/lib/'
+ lib_repo = 'https://svn.blender.org/svnroot/bf-blender/trunk/lib/'
+ return steps.SVN(name='lib svn',
+ repourl=util.Interpolate(lib_repo + dir),
+ codebase='lib svn',
+ mode='incremental',
+ workdir='lib/' + dir)
def rsync_step(id, branch, rsync_script):
@@ -260,8 +287,8 @@ def rsync_step(id, branch, rsync_script):
descriptionDone='uploaded',
workdir='install')
-# generic builder
+# generic builder
def generic_builder(id, libdir='', branch='', rsync=False):
filename = 'uploaded/buildbot_upload_' + id + '.zip'
@@ -286,83 +313,106 @@ def generic_builder(id, libdir='', branch='', rsync=False):
f.addStep(Compile(command=['python', compile_script, id], timeout=3600))
f.addStep(Test(command=['python', test_script, id]))
- f.addStep(ShellCommand(name='package',
- command=['python', pack_script, id, branch or Interpolate('%(src:blender:branch)s')],
- description='packaging',
- descriptionDone='packaged'))
+ f.addStep(ShellCommand(
+ name='package',
+ command=['python',
+ pack_script,
+ id,
+ branch or Interpolate('%(src:blender:branch)s')],
+ description='packaging',
+ descriptionDone='packaged'))
if rsync:
f.addStep(rsync_step(id, branch, rsync_script))
else:
f.addStep(FileUpload(name='upload',
- slavesrc='buildbot_upload.zip',
+ workersrc='buildbot_upload.zip',
masterdest=filename,
maxsize=180 * 1024 * 1024,
workdir='install'))
f.addStep(MasterShellCommand(name='unpack',
- command=['python2.7', unpack_script, filename],
+ command=['python2.7',
+ unpack_script,
+ filename],
description='unpacking',
descriptionDone='unpacked'))
return f
+
# Builders
add_builder(c, 'mac_x86_64_10_9_cmake', 'darwin', generic_builder, hour=1)
-add_builder(c, 'linux_glibc219_i686_cmake', '', generic_builder, hour=2)
-add_builder(c, 'linux_glibc219_x86_64_cmake', '', generic_builder, hour=1)
-add_builder(c, 'win32_cmake_vc2013', 'windows_vc12', generic_builder, hour=1)
-add_builder(c, 'win64_cmake_vc2013', 'win64_vc12', generic_builder, hour=2)
-add_builder(c, 'win32_cmake_vc2015', 'windows_vc14', generic_builder, hour=3)
-add_builder(c, 'win64_cmake_vc2015', 'win64_vc14', generic_builder, hour=4)
+add_builder(c, 'linux_glibc224_i686_cmake', '', generic_builder, hour=2)
+add_builder(c, 'linux_glibc224_x86_64_cmake', '', generic_builder, hour=1)
+# NOTE: Visual Studio 2017 (vc15) is using libraries folder from
+# Visual Studio 2015 (vc14)
+add_builder(c, 'win32_cmake_vs2017', 'windows_vc14', generic_builder, hour=1)
+add_builder(c, 'win64_cmake_vs2017', 'win64_vc14', generic_builder, hour=2)
-# STATUS TARGETS
-#
-# 'status' is a list of Status Targets. The results of each build will be
-# pushed to these targets. buildbot/status/*.py has a variety to choose from,
-# including web pages, email senders, and IRC bots.
+# HORIZONS
+from datetime import timedelta
-c['status'] = []
+c['changeHorizon'] = 300
-from buildbot.status import html
-from buildbot.status.web import authz
-from buildbot.status.web import auth
+# Configure a janitor which will delete all logs older than one month,
+# and will run on sundays at noon.
+c['configurators'] = [util.JanitorConfigurator(
+ logHorizon=timedelta(weeks=4),
+ hour=12,
+ dayOfWeek=6)]
-users = []
-for slave in master_private.slaves:
- users += [(slave['name'], slave['password'])]
-authz_cfg = authz.Authz(
- auth=auth.BasicAuth(users),
- # change any of these to True to enable; see the manual for more
- # options
- gracefulShutdown=False,
- forceBuild=True, # use this to test your slave once it is set up
- forceAllBuilds=False,
- pingBuilder=False,
- stopBuild=True,
- stopAllBuilds=False,
- cancelPendingBuild=True,
-)
+# WWW
+c['www'] = dict(port=8010,
+ plugins={'console_view': {},
+ 'grid_view': {},
+ 'waterfall_view': {}})
-c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
-#c['status'].append(html.WebStatus(http_port=8010))
+# Access
+from buildbot.www.authz.roles import RolesFromOwner
+from buildbot.www.authz.roles import RolesFromBase
+
+class StrangerRoles(RolesFromBase):
+ def getRolesFromUser(self, userDetails):
+ return ['stranger']
+
+
+authz = util.Authz(
+ stringsMatcher=util.fnmatchStrMatcher, # simple matcher with '*' glob character
+ # stringsMatcher = util.reStrMatcher, # if you prefer regular expressions
+ allowRules=[
+ # admins can do anything,
+ # defaultDeny=False: if user does not have the admin role, we continue parsing rules
+ util.AnyEndpointMatcher(role="admins", defaultDeny=False),
+
+ # Defaulting old config, everyone can stop build.
+ util.StopBuildEndpointMatcher(role="stranger"),
+ util.ForceBuildEndpointMatcher(role="stranger"),
+ util.RebuildBuildEndpointMatcher(role="stranger"),
+ util.EnableSchedulerEndpointMatcher(role="admins"),
+
+ # if future Buildbot implement new control, we are safe with this last rule
+ # NOTE: This prevents us from cancelling queue, so disabled for now.
+ # util.AnyControlEndpointMatcher(role="admins")
+ ],
+ roleMatchers=[
+ RolesFromOwner(role="owner"),
+ StrangerRoles(),
+ ])
+c['www']['authz'] = authz
# PROJECT IDENTITY
-
c['projectName'] = "Blender"
-c['projectURL'] = "http://www.blender.org"
+c['projectURL'] = "https://www.blender.org"
-# the 'buildbotURL' string should point to the location where the buildbot's
-# internal web server (usually the html.WebStatus page) is visible. This
-# typically uses the port number set in the Waterfall 'status' entry, but
-# with an externally-visible host name which the buildbot cannot figure out
-# without some help.
-
-c['buildbotURL'] = "http://builder.blender.org/"
-
-# DB URL
-#
-# This specifies what database buildbot uses to store change and scheduler
-# state. You can leave this at its default for all but the largest
-# installations.
+# Buildbot information
+c['buildbotURL'] = "https://builder.blender.org/admin/"
+c['buildbotNetUsageData'] = 'basic'
+# Various
c['db_url'] = "sqlite:///state.sqlite"
+
+c['title'] = "Blender"
+c['titleURL'] = "https://builder.blender.org/"
+
+# Disable sending of 'buildbotNetUsageData' for now, to improve startup time.
+c['buildbotNetUsageData'] = None
diff --git a/master_unpack.py b/master_unpack.py
index 61c6309..394a101 100644
--- a/master_unpack.py
+++ b/master_unpack.py
@@ -119,12 +119,13 @@ if platform == '':
sys.exit(1)
# extract
+download_prefix = "/data/www/vhosts/builder.blender.org/webroot/download/"
if not branch or branch == 'master':
- directory = 'public_html/download'
+ directory = download_prefix
elif branch == 'experimental-build':
- directory = 'public_html/download/experimental'
+ directory = os.path.join(download_prefix, "experimental")
else:
- directory = 'public_html/download'
+ directory = download_prefix
try:
filename = os.path.join(directory, packagename)
diff --git a/package.json b/package.json
deleted file mode 100644
index 66507d8..0000000
--- a/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "blender-buildbot",
- "repository": {
- "type": "git",
- "url": "git://git.blender.org/blender-buildbot.git"
- },
- "author": "Blender Foundation",
- "license": "GPL",
- "devDependencies": {
- "grunt": "^0.4.5",
- "grunt-autoprefixer": "^1.0.1",
- "grunt-contrib-sass": "^0.8.1",
- "grunt-contrib-watch": "~0.6.1"
- }
-}
diff --git a/public_html/assets/css/main.css b/public_html/assets/css/main.css
deleted file mode 100644
index 805bcab..0000000
--- a/public_html/assets/css/main.css
+++ /dev/null
@@ -1,19 +0,0 @@
-@import url(//fonts.googleapis.com/css?family=Open+Sans);@import url(//fonts.googleapis.com/css?family=Open+Sans+Condensed:300);@import url(../../assets_shared/css/font-borg.css);/*!
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * Blender Web Assets
- * Design components for Blender.org websites
- *
- * Authors: Pablo Vazquez, Niklas Ravnsborg-Gjertsen
- *//*! 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{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;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}.media-debug{color:#444}@media (max-width: 767px){.media-debug{color:#e95d4f}}@-webkit-keyframes blink{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@-webkit-keyframes fade-in-pause-out /* Used for alerts */{0%{opacity:0}10%{opacity:1}90%{opacity:1}100%{opacity:0}}html,body{font-family:"Open Sans","Lucida Sans","Lucida Grande",sans-serif,sans-serif;font-size:14px;color:#444;cursor:default;width:100%;height:100%;margin:0;background-color:#dfdfdf;-webkit-font-smoothing:antialiased}body{padding:52px 0 0 0}body.dark{background-color:#b8b8b8}.dark{color:#fff}.container-main{background-color:#f0f0f0;padding-bottom:20px}a,a:visited,.link{color:#109df0}a:hover,.link:hover{color:#f84;text-decoration:none !important;cursor:pointer}a:active,.link,.link:active{text-decoration:underline}a:focus,.link:focus{text-decoration:none}a,button,button:focus,button::-moz-focus-inner{outline:none !important}header{width:100%;border-bottom:thin solid rgba(248,248,248,0.3)}header:nth-last-of-type(1){margin-bottom:20px}strong,b{font-weight:700}.container-fluid.bright{background-color:#f8f8f8;padding:0 0 1% 0 !important;height:100%;min-height:100%}h1,h2,h3,h4,h5,h6{font-family:"Open Sans Condensed","Lucida Sans","Lucida Grande",sans-serif,sans-serif !important;font-weight:normal;color:#2b2b2b}h1{font-size:265%}h2{font-size:220%}h3{font-size:180%;font-weight:lighter}h4{font-size:140%}h5{font-size:120%}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{text-shadow:none}p+h1{margin-top:32px}p+h2,p+h3,p+h4{margin-top:25px}.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,.dark h6{color:#fff}hr{clear:both;width:90%;height:1px;border:none;margin:15px auto 10px auto;background-color:#dfdfdf}hr.dark{background-color:rgba(184,184,184,0.4)}input,button,select,textarea{font-family:"Open Sans","Lucida Sans","Lucida Grande",sans-serif !important;font-weight:lighter;transition:background-color .1s ease-in;box-shadow:2px 2px 0 rgba(95,95,95,0.1);border-radius:3px !important}textarea{resize:vertical;padding:6px 6px 6px 10px !important;min-height:180px}blockquote{background-color:#f3f3f3;font-size:120%;margin:10px;padding:5px 15px;font-size:initial}blockquote p,.box blockquote p{margin:5px 15px 5px 0;padding:5px 15px 5px 0}fieldset{border:none;margin:0;padding:0}.flex{display:-ms-flexbox;display:flex}@media (max-width: 767px){.flex{display:block}}@media (min-width: 768px) and (max-width: 991px){.flex{display:block}}.flex [class^="col-"]{display:-ms-flexbox;display:flex}@media (max-width: 767px){.flex [class^="col-"]{display:block}}@media (min-width: 768px) and (max-width: 991px){.flex [class^="col-"]{display:block}}.flex [class^="col-"] .box{width:100%}.input-group{width:100%;position:relative}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{background-color:#fff;transition:background-color .1s ease-in}.form-control{top:0;color:#111;position:absolute;background-color:#fff !important;border:none;margin-top:30px;border:thin solid #c4c4c4 !important;border-radius:3px;box-shadow:2px 2px 0 rgba(95,95,95,0.1);transition:all .15s ease-in-out}.form-control:focus,.form-control:hover{background-color:#fff !important;border:thin solid #f8f8f8 !important;color:#0b6ea9;box-shadow:2px 2px 0 rgba(95,95,95,0.2)}.has-error .form-control{border:thin solid #ef877c !important}.has-error.input-group .input-group-addon,.has-error.input-group .control-label{color:#e95d4f !important}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:0px 4px 0px 10px;height:40px;font-size:120%}.input-group input.form-control[type=checkbox],.input-group.input-group-lg input.form-control[type=checkbox]{box-shadow:none !important}.input-group input.form-control[type=checkbox]{width:15px}.input-group.input-group-lg input.form-control[type=checkbox]{width:20px}.input-group input.form-control[type=checkbox]+label.control-label,.input-group.input-group-lg input.form-control[type=checkbox]+label.control-label{text-align:left;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .1s ease-out}.input-group input.form-control[type=checkbox]:hover+label.control-label,.input-group.input-group-lg input.form-control[type=checkbox]:hover+label.control-label{color:#f84}.input-group input.form-control[type=checkbox]:checked+label.control-label,.input-group.input-group-lg input.form-control[type=checkbox]:checked+label.control-label{color:#109df0}.input-group input.form-control[type=checkbox]:checked+label.control-label:hover,.input-group.input-group-lg input.form-control[type=checkbox]:checked+label.control-label:hover{color:#f84}.input-group input.form-control[type=checkbox]+label.control-label{padding-left:22px;padding-top:3px}.input-group.input-group-lg input.form-control[type=checkbox]+label.control-label{padding-left:30px;padding-top:6px}.input-group input.form-control[type=checkbox]+label.control-label,.input-group.input-group-lg input.form-control[type=checkbox]+label.control-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.input-group .input-group-addon{position:absolute;top:30px;z-index:3;padding:10px 15px 10px 12px !important;background:transparent;border:0;color:#777 !important}.input-group .input-group-addon+.form-control,.input-group .input-group-addon+select.form-control{padding-left:35px !important}.input-group .input-group-addon .bf-network{font-size:140% !important;position:absolute;left:8px;top:8px}.input-group .input-group-addon .bf-cloud{font-size:160% !important;position:absolute;left:8px;top:4px}.input-group.input-group-lg .input-group-addon .bf-cloud{top:6px}.input-group.input-group-lg .input-group-addon{top:28px}.form-control+.input-group-addon{float:right;right:10px}.form-control+.input-group-addon>button{position:relative;margin-top:-6px;right:8px;background-color:transparent;border:none;opacity:.5;transition:opacity .2s ease;box-shadow:none}.form-control:focus+.input-group-addon>button,.form-control:hover+.input-group-addon>button,.form-control+.input-group-addon>button:hover{opacity:1}.form-control+.input-group-addon.danger>button{color:#e95d4f}.error{color:#e95d4f}ul.error{margin:0 !important;padding:5px 0 0 0 !important;display:inline-block}ul.error li:after{content:"" !important}.box ul.error li,.box ul.error li:last-child{margin-bottom:0}.edit_box{background-color:#6cc2e7;float:right;color:#fff;padding:8px 10px;margin:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:3px;box-shadow:2px 2px 0 rgba(0,0,0,0.1)}.edit_box:hover{background-color:#56b9e4}.edit_box:focus,.edit_box:active{background-color:#f84}.panel{border-radius:3px;box-shadow:2px 2px 0 rgba(0,0,0,0.1)}.panel-default{border:none}.panel-default a:focus{text-decoration:none}.panel-default>.panel-heading{color:#444;margin:0;background-color:#ebebeb;border:none;border-bottom:2px solid #ddd}.panel-title{font-size:160%;text-shadow:1px 1px 0 rgba(255,255,255,0.5)}a.list-group-item,.panel>.list-group .list-group-item{background-color:#fff;color:#444;border:thin solid #eaeaea;border-left:2px solid #eaeaea;padding:5% 5% 5% 40px}a.list-group-item:hover,a.list-group-item:focus{background-color:#ebebeb;color:#109df0 !important;border:thin solid #ddd;border-left:2px solid #70c4f6 !important}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{background-color:transparent;color:#f84 !important;border:thin solid #ddd;border-left:2px solid #f84 !important}.list-group-with-icon a.list-group-item i,.panel>.list-group.list-group-with-icon .list-group-item i{padding:3px 15px 5px;position:absolute;float:left;left:0}.accordion .panel-heading{border-bottom:thin solid #dfdfdf;transition:border-bottom .2s ease-out}.accordion .collapsed .panel-heading{border-bottom:thin solid transparent}.accordion a .panel-title{color:#109df0;transition:color .1s ease-out}.accordion a:hover .panel-title{color:#f84 !important}.accordion a.collapsed .panel-title{color:#777}.panel-collapse-widget{font-family:"Open Sans","Lucida Sans","Lucida Grande",sans-serif;color:#aaa;display:block;float:right;-webkit-transform:rotate(45deg);transform:rotate(45deg);transition:all .25s ease-out}.panel-collapse-widget:after{content:"+"}.collapsed .panel-collapse-widget{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.accordion .panel-body{position:relative;-webkit-transform:translateY(-2px);transform:translateY(-2px);opacity:0;transition:opacity .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.accordion .collapse.in .panel-body{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);transition:opacity .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.accordion .collapsed+.collapsing .panel-body{opacity:0;transition:opacity .2s ease-out}.cke_chrome{font-family:"Open Sans","Lucida Sans","Lucida Grande",sans-serif !important;font-weight:lighter;color:#2b2b2b !important;border:thin solid #aaa !important;background-color:#fff !important;resize:vertical;margin:0 !important;box-shadow:2px 2px 0 rgba(95,95,95,0.1);border-radius:3px}span#cke_2_top{padding:5px !important;border:none;background-image:none;background-color:transparent !important;box-shadow:none}span.cke_toolgroup{border:none;border-bottom:2px solid transparent;background-image:none;background-color:#fff}a.cke_button_off{border-bottom:2px solid transparent !important;box-shadow:none}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{background-image:none !important;background-color:transparent !important;color:#fff !important;border-bottom:2px solid #109df0 !important}a.cke_button_on,a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-image:none !important;background-color:transparent !important;border-bottom:2px solid #f84 !important;color:#fff !important;box-shadow:none}::-webkit-input-placeholder{color:#aaa !important}:-moz-placeholder{color:#aaa !important;opacity:1}::-moz-placeholder{color:#aaa !important;opacity:1}:-ms-input-placeholder{color:#aaa !important}.input-group.input-checkbox{margin-top:25px;margin-bottom:25px}.input-group.input-checkbox .control-label{font-size:100%;text-align:left !important}.input-group.input-checkbox .btn-group{float:right}.input-group.input-checkbox .btn-group .btn{min-width:45px;font-weight:bolder;color:#fff;background-color:#109df0;border-bottom-color:#095f91}.input-group.input-checkbox .btn-group .btn.active{background-color:#f84;border-bottom-color:#dd5000}.input-group.input-checkbox .btn-group .btn:before{content:"";font-family:"FontAwesome"}.input-group.input-checkbox .btn-group .btn.active:before{content:"";font-family:"FontAwesome"}.input-group.input-checkbox .btn-group .btn{color:#fff;border-left-color:#fff !important;border-right-color:#fff !important}.input-group.input-checkbox .btn-group .btn.active{box-shadow:none}.input-group.input-checkbox .btn-group .btn:hover{color:#fff !important}.btn-group.open .dropdown-toggle{box-shadow:none}.btn-group ul.dropdown-menu{font-size:100%}label{font-weight:normal}.control-label{font-size:95%}.input-group-lg .control-label{font-size:100%}.input-group .control-label{position:absolute;left:0;top:8px}.form-horizontal .control-label{padding-top:0}.input-group select:focus{border:none;box-shadow:none}.input-group select{height:auto !important;padding:6px 7px 7px !important;text-transform:capitalize}.input-group select:hover,.input-group select:focus{color:inherit}.input-group option{margin:0 4px 0 8px !important}.input-group.disabled{opacity:.5;pointer-events:none}.input-group.disabled .form-control{border-color:transparent;background-color:#e9e9e9}.input-group .form-control[type='file']{padding-top:5px}.input-group.input-group-lg .form-control[type='file']{padding-top:6px}.disabled{opacity:.65 !important;pointer-events:none !important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.user-select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pointer-events-none{pointer-events:none}.top{position:absolute !important;top:0 !important}.bottom{position:absolute !important;bottom:0 !important}.left{float:left !important;left:0 !important}.right{float:right !important;right:0 !important}.text-align-center{text-align:center !important}.text-align-left{text-align:left !important}.text-align-right{text-align:right !important}.text-transform-uppercase{text-transform:uppercase !important}.text-transform-lowercase{text-transform:lowercase !important}.text-transform-capitalize{text-transform:capitalize !important}.text-size-100{font-size:100% !important}.text-size-120{font-size:120% !important}.content-margin-center{margin-left:auto !important;margin-right:auto !important}.margin-top-0{margin-top:0 !important}.margin-top-1{margin-top:1% !important}.margin-top-2{margin-top:2% !important}.margin-top-3{margin-top:3% !important}.margin-top-4{margin-top:4% !important}.margin-top-5{margin-top:5% !important}.margin-top-5px{margin-top:5px !important}.margin-top-10px{margin-top:10px !important}.margin-top-15px{margin-top:15px !important}.margin-top-20px{margin-top:20px !important}.margin-top-25px{margin-top:25px !important}.margin-bottom-0{margin-bottom:0 !important}.margin-bottom-1{margin-bottom:1% !important}.margin-bottom-2{margin-bottom:2% !important}.margin-bottom-3{margin-bottom:3% !important}.margin-bottom-4{margin-bottom:4% !important}.margin-bottom-5{margin-bottom:5% !important}.margin-bottom-5px{margin-bottom:5px !important}.margin-bottom-10px{margin-bottom:10px !important}.margin-bottom-15px{margin-bottom:15px !important}.margin-bottom-20px{margin-bottom:20px !important}.margin-bottom-25px{margin-bottom:25px !important}.margin-left-0{margin-left:0 !important}.margin-left-1{margin-left:1% !important}.margin-left-2{margin-left:2% !important}.margin-left-3{margin-left:3% !important}.margin-left-4{margin-left:4% !important}.margin-left-5{margin-left:5% !important}.margin-left-5px{margin-left:5px !important}.margin-left-10px{margin-left:10px !important}.margin-left-15px{margin-left:15px !important}.margin-left-20px{margin-left:20px !important}.margin-left-25px{margin-left:25px !important}.margin-right-0{margin-right:0 !important}.margin-right-1{margin-right:1% !important}.margin-right-2{margin-right:2% !important}.margin-right-3{margin-right:3% !important}.margin-right-4{margin-right:4% !important}.margin-right-5{margin-right:5% !important}.margin-right-5px{margin-right:5px !important}.margin-right-10px{margin-right:10px !important}.margin-right-15px{margin-right:15px !important}.margin-right-20px{margin-right:20px !important}.margin-right-25px{margin-right:25px !important}.padding-top-0{padding-top:0 !important}.padding-top-1{padding-top:1% !important}.padding-top-2{padding-top:2% !important}.padding-top-3{padding-top:3% !important}.padding-top-4{padding-top:4% !important}.padding-top-5{padding-top:5% !important}.padding-top-5px{padding-top:5px !important}.padding-top-10px{padding-top:10px !important}.padding-top-15px{padding-top:15px !important}.padding-top-20px{padding-top:20px !important}.padding-top-25px{padding-top:25px !important}.padding-bottom-0{padding-bottom:0 !important}.padding-bottom-1{padding-bottom:1% !important}.padding-bottom-2{padding-bottom:2% !important}.padding-bottom-3{padding-bottom:3% !important}.padding-bottom-4{padding-bottom:4% !important}.padding-bottom-5{padding-bottom:5% !important}.padding-bottom-5px{padding-bottom:5px !important}.padding-bottom-10px{padding-bottom:10px !important}.padding-bottom-15px{padding-bottom:15px !important}.padding-bottom-20px{padding-bottom:20px !important}.padding-bottom-25px{padding-bottom:25px !important}.padding-left-0{padding-left:0 !important}.padding-left-1{padding-left:1% !important}.padding-left-2{padding-left:2% !important}.padding-left-3{padding-left:3% !important}.padding-left-4{padding-left:4% !important}.padding-left-5{padding-left:5% !important}.padding-left-5px{padding-left:5px !important}.padding-left-10px{padding-left:10px !important}.padding-left-15px{padding-left:15px !important}.padding-left-20px{padding-left:20px !important}.padding-left-25px{padding-left:25px !important}.padding-right-0{padding-right:0 !important}.padding-right-1{padding-right:1% !important}.padding-right-2{padding-right:2% !important}.padding-right-3{padding-right:3% !important}.padding-right-4{padding-right:4% !important}.padding-right-5{padding-right:5% !important}.padding-right-5px{padding-right:5px !important}.padding-right-10px{padding-right:10px !important}.padding-right-15px{padding-right:15px !important}.padding-right-20px{padding-right:20px !important}.padding-right-25px{padding-right:25px !important}.width-full{width:100% !important;max-width:100% !important}.width-75{width:75% !important;max-width:75% !important}.width-half{width:50% !important;max-width:50% !important}.width-25{width:25% !important;max-width:25% !important}.opacity-full{opacity:1 !important}.opacity-75{opacity:.75 !important}.opacity-half{opacity:.5 !important}.opacity-25{opacity:.25 !important}.opacity-0{opacity:0 !important}.relative{position:relative !important}.absolute{position:absolute !important}.inline-block{display:inline-block !important}.block{display:block !important}.height-full{height:100% !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.text-overflow-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.text-overflow-clip{overflow:hidden;white-space:nowrap;text-overflow:clip}.vertical-align{position:relative;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.cursor-hover-pointer{cursor:pointer !important}.background-default{background-color:#f8f8f8 !important}.background-bright{background-color:#fff !important}.background-dark{background-color:#b8b8b8 !important;color:#fff}.background-info{background-color:#40b0e0 !important;color:#fff}.background-success{background-color:#d5d644 !important;text-shadow:1px 1px 0 rgba(255,255,255,0.4)}.background-warning{background-color:#faaf40 !important}.background-danger{background-color:#e95d4f !important;color:#fff}.background-info h1,.background-info h2,.background-info h3,.background-info h4,.background-danger h1,.background-danger h2,.background-danger h3,.background-danger h4,.background-dark h1,.background-dark h2,.background-dark h3,.background-dark h4{color:#fff}.background-success h1,.background-success h2,.background-success h3,.background-success h4,.background-success h5,.background-success h6{text-shadow:1px 1px 0 rgba(255,255,255,0.4)}.background-info a,.background-danger a,.background-dark a{color:#fff !important;font-weight:bold}.background-info .disabled label,.background-danger .disabled label,.background-dark .disabled label{color:#fff}input.form-control.background-danger{color:#fff !important;border-color:#d12b1a !important}input.form-control:hover.background-danger,input.form-control:focus.background-danger{color:#fff !important;background-color:#d12b1a !important;border-color:#a42215 !important}.color-bright{color:#fff !important}.table-row-link:hover .background-info,.table-row-link:hover .background-danger,.table-row-link:hover .background-dark{color:#fff !important;font-weight:bold}.z-index-2{z-index:2}.list-margin-bottom-1 li{margin-bottom:1%}.list-margin-bottom-2 li{margin-bottom:2%}.list-margin-bottom-3 li{margin-bottom:3%}.list-margin-bottom-4 li{margin-bottom:4%}.list-margin-bottom-5 li{margin-bottom:5%}.border-left{border-left:thin solid #d0d0d0}.border-left.dark{border-left-color:#eaeaea}.border-left.bright{border-left-color:#b7b7b7}.border-right{border-right:thin solid #d0d0d0}.border-right.dark{border-right-color:#eaeaea}.border-right.bright{border-right-color:#b7b7b7}.border-top{border-top:thin solid #d0d0d0}.border-top.dark{border-top-color:#eaeaea}.border-top.bright{border-top-color:#b7b7b7}.border-bottom{border-bottom:thin solid #d0d0d0}.border-bottom.dark{border-bottom-color:#eaeaea}.border-bottom.bright{border-bottom-color:#b7b7b7}.border-none{border:none !important}.border-radius-3{border-radius:3px}.border-radius-none{border-radius:0}.navbar{color:#444;border:none;z-index:9 !important;margin-bottom:0;font-size:140%;min-height:44px}.navbar.navbar-secondlevel:nth-last-of-type(1),.navbar.navbar-thirdlevel:nth-last-of-type(1){box-shadow:2px 2px 0 rgba(95,95,95,0.1)}@media (max-width: 767px){.navbar-nav{margin:0 -15px}}.navbar.dark{color:#fff}.navbar li:after,.navbar-nav li:after{content:""}.navbar-nav>li>a{color:#444;font-family:"Open Sans Condensed","Lucida Sans","Lucida Grande",sans-serif !important;border-bottom:2px solid transparent;text-shadow:1px 1px 2px #f8f8f8;transition:border-color .1s ease-out}.navbar-default.dark .nav>li>a{color:#fff;text-shadow:1px 1px 2px #f8f8f8}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#109df0;border-color:#109df0}.navbar-default.dark .navbar-nav>li>a:hover{color:#fff}.navbar-default{background-color:#fff}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{font-weight:normal;color:#f75a00;background-color:transparent;border-bottom-color:#ff9558}.navbar-brand{color:#444 !important}.navbar-brand:hover{opacity:.9;transition:opacity .1s ease}.navbar li.current_page_item a,.navbar li.current-page-parent a,.navbar li.current-page-ancestor a,.navbar li.current_page_parent a{font-weight:normal;color:#ff782b;border-bottom-color:rgba(255,136,68,0.8)}.navbar li.current_page_item a:hover,.navbar li.current-page-parent a:hover,.navbar li.current-page-ancestor a:hover,.navbar li.current_page_parent a:hover,.navbar li.current_page_ancestor a:hover{color:#f84;border-bottom-color:rgba(255,136,68,0.8);cursor:default}.navbar li.current-page-ancestor a,.navbar li.current_page_ancestor a{color:rgba(255,136,68,0.85)}.navbar li.current-page-ancestor a:hover,.navbar li.current_page_ancestor a:hover{cursor:pointer}.navbar-secondlevel.navbar{z-index:8 !important}.navbar-secondlevel.navbar,.navbar-thirdlevel.navbar{background-color:#fff;min-height:41px}.navbar-secondlevel .navbar-nav>li>a,.navbar-thirdlevel .navbar-nav>li>a{padding:10px 15px 8px 15px;position:relative;top:3px}.navbar-thirdlevel{z-index:7 !important;border-top:1px solid #f0f0f0;font-size:140%}@media (min-width: 768px) and (max-width: 991px){ul.nav.navbar-nav.navbar-left{max-width:105%;margin-bottom:0}}@media (min-width: 768px) and (max-width: 991px){ul.nav.navbar-nav.navbar-left .dropdown-menu li{margin:10px 0 10px -15px;font-size:110%}}.navbar-toggle{font-size:1em}.dropdown-menu{border:0;min-width:130px;background:#fff;font-size:70%;padding:0;border-radius:0;box-shadow:2px 2px 0 rgba(0,0,0,0.1);transition:opacity .1s ease}.dropdown-menu>li>a{padding:6% 8% 6% 6%;padding-right:45px;font-weight:normal;line-height:1.42857;color:#444;transition:border-color .05s ease}.dropdown-menu>li>a:hover{background:transparent;color:#40b1f3}.dropdown-menu>.active>a{background:transparent;color:#f84}.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus,.dropdown-menu>li>a:active{background:transparent;color:#ff6811;cursor:default}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:active,.dropdown-menu>.active>a:focus,.dropdown-menu>li>a:active{background:transparent;color:#109df0}.dropdown-menu .divider{height:1px;margin:0;background:#f8f8f8}.dropdown-menu i{float:left;width:22px;margin:3px 0 0 2px}.navbar-nav .open .dropdown-menu{border-bottom-left-radius:3px !important;border-bottom-right-radius:3px !important}@media (min-width: 768px) and (max-width: 991px){.navbar-nav .open .dropdown-menu{float:left !important;width:100%}}@media (min-width: 768px) and (max-width: 991px){li.dropdown.absolute.right{position:relative !important;float:left !important;width:100%}}img.alignright{float:right;margin:10px 0 10px 10px}img.alignleft{float:right;margin:10px 10px 10px 0}.backicon{z-index:0;position:absolute;font-size:1400%;bottom:-50px;right:-35px;color:rgba(68,68,68,0.08);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.divider{margin:20px auto;width:100%;height:2px;border-top:thin solid #ebebeb}.title{position:relative;margin:5px 0;padding:10px 0;color:#fff;text-shadow:2px 2px 0 rgba(43,43,43,0.3)}i.title-icon{position:relative;float:right;margin:0 3%;bottom:.1em;font-size:116%;opacity:.2}.info{color:#40b0e0 !important}.warning{color:#faaf40 !important}.danger{color:#e95d4f !important}.success{color:#bcbd2a !important}.text-color-brand-main{color:#109df0 !important}.text-color-brand-secondary{color:#f84 !important}.info h1,.info h2,.info h3,.info h4,.info h5,.info h6{color:#40b0e0 !important}.danger h1,.danger h2,.danger h3,.danger h4,.danger h5,.danger h6{color:#e95d4f !important}.warning h1,.warning h2,.warning h3,.warning h4,.warning h5,.warning h6{color:#faaf40 !important}.success h1,.success h2,.success h3,.success h4,.success h5,.success h6{color:#d5d644 !important}ul{margin:0}ul li{margin-left:0;list-style-type:none;position:relative;transition:all .1s ease-out}ul li:after{content:"";position:absolute;left:-10px;top:-2px;text-align:right;font-size:120%;color:rgba(68,68,68,0.5);transition:all .15s ease-in}ul.list-bullets-check li:after{content:"";font-size:75%;top:4px;left:-15px;font-family:"FontAwesome"}ul.list-bullets-none li:after{content:""}li [class^="fa-"]{text-align:left}ul.list-margin-none{padding:0 10px 0 28px}ul ul{padding-left:10px}ul li ul li:after{content:"";font-size:85%;top:2px;left:-11px;font-family:"FontAwesome"}.pagination{margin:30px auto 0px auto;width:100%;text-align:center}.pagination .active span{background-color:#f84}a.btn,.btn,button{background-color:#f1f1f1;color:#444;font-family:"Open Sans Condensed","Lucida Sans","Lucida Grande",sans-serif !important;font-size:130%;text-shadow:0 1px 1px rgba(255,255,255,0.06);border:thin solid #eaeaea;border-bottom:1px solid #d8d8d8;border-radius:3px;transition:all .1s ease-in-out}a.btn:hover,.btn:hover,button:hover{background-color:#f7f7f7;border-color:#eaeaea;border-bottom:1px solid #8dd0f8;color:#109df0 !important}a.btn:active,a.btn:focus,.btn:active,.btn:focus,button:active,button:focus{background-color:#f7f7f7;color:#f84 !important;border-color:#eaeaea;border-bottom-color:#f84;outline:none !important;box-shadow:1px 1px 0 rgba(0,0,0,0.1)}a.btn.btn-squishy,.btn.btn-squishy{position:relative;top:0;margin-bottom:8px;font-weight:600;border-radius:3px;box-shadow:0 3px 0 #d8d8d8}a.btn.btn-squishy:hover,.btn.btn-squishy:hover{background-color:#f7f7f7;top:2px;box-shadow:0 1px 0 #d8d8d8}a.btn.btn-squishy:active,a.btn.btn-squishy:focus,.btn.btn-squishy:active,.btn.btn-squishy:focus{border-bottom-color:#f84;color:#f84 !important;background-color:#f7f7f7;border-top-color:#f7f7f7}.btn-group.open .dropdown-toggle{border:thin solid #eaeaea}a.btn.btn-outline,.btn.btn-outline{background-color:transparent;color:#fff;border:1px solid #fff;padding:5px 20px;box-shadow:none}a.btn.btn-outline:hover,.btn.btn-outline:hover{color:#fff !important;border:1px solid #fff;background-color:rgba(255,255,255,0.25)}a.btn.btn-outline:active,a.btn.btn-outline:focus,.btn.btn-outline:active,.btn.btn-outline:focus{color:#fff !important;border:1px solid #fff;background-color:rgba(255,255,255,0.5)}.box a.btn.btn-outline,.box .btn.btn-outline{color:#444;border:1px solid #aaa}.box a.btn.btn-outline:hover,.box .btn.btn-outline:hover{color:#000 !important;border:1px solid #777;background-color:rgba(255,255,255,0.25)}.box a.btn.btn-outline:active,.box a.btn.btn-outline:focus,.box .btn.btn-outline:active,.box .btn.btn-outline:focus{color:#000 !important;border:1px solid #444;background-color:rgba(255,255,255,0.5)}a.btn-success,.btn-success{background-color:#d5d644;color:#40400e;border-color:#d0d12f;text-shadow:1px 1px 0 rgba(255,255,255,0.6)}a.btn-success:hover,.btn-success:hover{color:#444 !important;background-color:#e3e483;border-color:#d0d12f}a.btn.btn-squishy.btn-success,.btn.btn-squishy.btn-success{background-color:#d5d644;border-color:#d0d12f;border-bottom-color:#c5c62b;box-shadow:0 3px 0 #c5c62b}a.btn.btn-squishy.btn-success:hover,.btn.btn-squishy.btn-success:hover{background-color:#dadb59;box-shadow:0 1px 0 #c5c62b}a.btn-success:focus,.btn-success:focus,a.btn-success:active,.btn-success:active,a.btn.btn-squishy.btn-success:focus,.btn.btn-squishy.btn-success:focus,a.btn.btn-squishy.btn-success:active,.btn.btn-squishy.btn-success:active{color:#444 !important;background-color:#bcbd2a;border-bottom-color:#bcbd2a}a.btn-danger,.btn-danger{color:#fff !important;background-color:#ea6558;border-color:#e64838;text-shadow:1px 1px 0 rgba(0,0,0,0.4)}a.btn-danger:hover,.btn-danger:hover{color:#fff !important;background-color:#ec766a;border-color:#e64838;border-bottom-color:#e33322}a.btn.btn-squishy.btn-danger,.btn.btn-squishy.btn-danger{background-color:#ea6558;border-bottom-color:#e33322;box-shadow:0 3px 0 #d64739}a.btn.btn-squishy.btn-danger:hover,.btn.btn-squishy.btn-danger:hover{border-color:#e74c3d;background-color:#ec7266;box-shadow:0 1px 0 #d12b1a}a.btn-danger:focus,.btn-danger:focus,a.btn-danger:active,.btn-danger:active,a.btn.btn-squishy.btn-danger:focus,.btn.btn-squishy.btn-danger:focus,a.btn.btn-squishy.btn-danger:active,.btn.btn-squishy.btn-danger:active{color:#fff !important;background-color:#e33322;border-bottom-color:#df2e1c}a.btn-warning,.btn-warning{color:#523202;background-color:#fbbb5e;border-color:#faab36;text-shadow:1px 1px 1px rgba(255,255,255,0.5)}a.btn-warning:hover,.btn-warning:hover{color:#2b2b2b !important;background-color:#fcc87c;border-color:#faab36;border-bottom-color:#e78d06}a.btn.btn-squishy.btn-warning,.btn.btn-squishy.btn-warning{background-color:#fbbb5e;border-bottom-color:#f69606;box-shadow:0 3px 0 #e68e0c}a.btn.btn-squishy.btn-warning:hover,.btn.btn-squishy.btn-warning:hover{background-color:#fcc87c;box-shadow:0 1px 0 #e78d06}a.btn-warning:focus,.btn-warning:focus,a.btn-warning:active,.btn-warning:active,a.btn.btn-squishy.btn-warning:focus,.btn.btn-squishy.btn-warning:focus,a.btn.btn-squishy.btn-warning:active,.btn.btn-squishy.btn-warning:active{color:#444 !important;background-color:#f99a0e}a.btn-info,.btn-info{color:#fff !important;background-color:#52b7e3;border-color:#37acdf;text-shadow:1px 1px 0 rgba(0,0,0,0.4)}a.btn-info:hover,.btn-info:hover{color:#fff !important;background-color:#6cc2e7;border-color:#37acdf;border-bottom-color:#1e88b6}a.btn.btn-squishy.btn-info,.btn.btn-squishy.btn-info{background-color:#52b7e3;border-bottom-color:#2092c3;box-shadow:0 3px 0 #239fd5}a.btn.btn-squishy.btn-info:hover,.btn.btn-squishy.btn-info:hover{background-color:#6cc2e7;box-shadow:0 1px 0 #2aa7dc}a.btn-info:focus,.btn-info:focus,a.btn-info:active,.btn-info:active,a.btn.btn-squishy.btn-info:focus,.btn.btn-squishy.btn-info:focus,a.btn.btn-squishy.btn-info:active,.btn.btn-squishy.btn-info:active{color:#fff !important;background-color:#2199cc;border-bottom-color:#2092c3}a.btn.external{border-bottom:2px solid rgba(255,136,68,0.2)}a.btn.external:after{content:"";float:right;font-size:75%;color:rgba(68,68,68,0.6);position:absolute;top:6px;right:8px;font-family:"FontAwesome"}.btn-xs{font-size:90%}.nav-tabs li:after{content:""}.nav-tabs>li>a{color:#444;border-color:transparent;cursor:pointer;transition:color .1s,opacity .1s}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus,.nav-tabs.nav-justified>li>a:hover,.nav-tabs.nav-justified>li>a:focus{border:none;background-color:transparent;color:#0c7ec1;border-color:transparent;border-bottom:2px solid #40b1f3 !important}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus,.nav-tabs.nav-justified>li.active>a,.nav-tabs.nav-justified>li.active>a:hover,.nav-tabs.nav-justified>li.active>a:focus{border:none;background-color:transparent;color:#109df0;border-color:transparent;border-bottom:2px solid #109df0 !important;cursor:default}.nav-tabs.nav-justified>li>a{border-bottom:2px solid #dfdfdf !important}.tab-content{position:relative;height:100%;background-color:#fff;border:none;overflow:hidden;border-radius:3px;box-shadow:2px 2px 0 rgba(95,95,95,0.1)}.tab-content p{padding:10px}.label{padding:.2em .7em .3em;font-size:90%;font-weight:normal;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,0.2);box-shadow:1px 1px 0 rgba(0,0,0,0.1);border-radius:3px}.label.label-2x{font-size:100%}.label-info{background-color:#40b0e0;color:#fff;font-weight:bold;text-shadow:1px 1px 0 rgba(0,0,0,0.2);border:thin solid #2aa7dc}.label-danger{background-color:#e95d4f;color:#fff;font-weight:bold;text-shadow:1px 1px 0 rgba(0,0,0,0.2);border:thin solid #e64838}.label-warning{background-color:#faaf40;color:#523202;text-shadow:1px 1px 0 rgba(255,255,255,0.5);border:thin solid #f9a527}.label-success{background-color:#d5d644;color:#40400e;text-shadow:1px 1px 0 rgba(255,255,255,0.5);border:thin solid #d0d12f}.disabled label{color:#515151}.flip{-webkit-perspective:1170px;-o-perspective:1170px;perspective:1170px;position:relative;clear:both}.flip .card{height:100%;-webkit-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d;transition:.3s}.flip .card .face{-webkit-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;z-index:3}.flip .card .front{position:absolute;width:100%;z-index:2;-webkit-backface-visibility:hidden !important;-o-backface-visibility:hidden !important;backface-visibility:hidden !important;transition:opacity .15s ease-in-out}.flip .card .back{-webkit-transform:rotatey(-180deg);transform:rotatey(-180deg)}.flip .face>h1,.flip .face>h2,.flip .face>h3,.flip .face>h4{margin-top:0}.flip .card.flipped{-webkit-transform:rotatey(-180deg);transform:rotatey(-180deg)}.flipped .front{opacity:0;-webkit-backface-visibility:hidden !important;-o-backface-visibility:hidden !important;backface-visibility:hidden !important}.flip_toggle{display:block;position:absolute;right:0;top:5px;padding:2px;min-width:40px;min-height:40px;z-index:2;transition:color .15s ease-in-out}.flip_toggle:hover{cursor:pointer;color:#40b1f3}.flip_toggle:before{content:"";font-family:"FontAwesome";right:12px;position:absolute}.box,.breadcrumb{position:relative;background-color:#fff;border:thin solid #f1f1f1;overflow:hidden;word-break:break-word;border-radius:3px;box-shadow:2px 2px 0 rgba(95,95,95,0.1)}@media (max-width: 767px){.box{margin-bottom:14px}}@media (min-width: 768px) and (max-width: 991px){.box{margin-bottom:14px}}.box p{position:relative;margin:15px}.box p+ul{margin-top:-7px}.box a{text-shadow:none}.box h1{margin:10px 10px 0 15px;text-shadow:none}.box h2{margin:10px 10px 0 15px;text-shadow:none}.box h3,.box h4,.box h5,.box h6{margin:10px 0 0 15px;text-shadow:none}.box h2+p{margin-top:10px}.box h3+p,.box h4+p,.box h5+p{margin-top:5px}.box hr{width:95%;opacity:.8}.box ul{margin-top:10px;margin-left:0;padding-left:30px}.box ul li{margin-bottom:10px;padding-right:15px}.box ul li:after{content:"·";top:-1px;left:-13px;color:#aaa}.box ul li:last-child{margin-bottom:35px}.box .bottom{width:100%}.box+.box{margin-top:20px}.box ul.nav.nav-tabs{margin:0;padding:0;list-style:none}.box ul.nav.nav-tabs li{margin:0;padding:0;background-color:#ebebeb;text-shadow:1px 1px 1px rgba(255,255,255,0.8)}.box ul.nav.nav-tabs li:first-child{border-top-left-radius:3px}.box ul.nav.nav-tabs li:last-child{border-top-right-radius:3px}.box ul.nav.nav-tabs li:after{content:""}.box ul.nav.nav-tabs li.active{background-color:#fff}.box ul.nav.nav-tabs li a{border:none;border-right-color:#fff;border-bottom-color:#fff;text-shadow:1px 1px 1px rgba(255,255,255,0.8)}.featured{height:350px;overflow:hidden;position:relative;background-color:#fff;border:none;border-bottom:thin solid #eaeaea;background-image:url(https://www.blender.org/wp-content/themes/bthree/assets/images/placeholder_background.jpg);background-size:cover;box-shadow:2px 2px 0 rgba(95,95,95,0.1)}@media (max-width: 767px){.featured{height:160px}}.featured-xs{height:100px}.featured-sm{height:160px}.featured-md{height:250px}.featured-lg{height:350px}.featured-xl{height:450px}.featured h1,.featured h2,.featured h3,.featured h4,.featured h5,.featured h6{color:#fff}.featured h1{font-size:360%}@media (max-width: 767px){.featured h1{font-size:200%;padding:0;margin:0}}.featured h3{font-size:180%}@media (max-width: 767px){.featured h3{font-size:130%;padding:0;margin:0}}.featured .backicon{font-size:2500%;top:116.66667px}.featured-xs .backicon{top:-50px}.featured-sm .backicon{top:-40px}.featured-md .backicon{top:31.25px}.featured-lg .backicon{top:116.66667px}.featured-xl .backicon{top:180px}.thumbnail{padding:4px;border:none;background-color:#fff;box-shadow:1px 1px 0 rgba(68,68,68,0.25);transition:all .1s ease-out}a img.thumbnail:hover{opacity:.9}.soyadmin{float:right;color:#444;font-size:150%;position:fixed;right:17px;top:12px;z-index:10;opacity:.3}.soyadmin:hover{color:#109df0;opacity:1}.alert{margin-bottom:0;border:none;position:fixed;z-index:9;width:100%;border-radius:0;text-align:center;color:#2b2b2b;font-size:110%;padding:0;-webkit-animation:fade-in-pause-out 6s;-webkit-animation-fill-mode:both;-moz-animation:fade-in-pause-out 6s;-moz-animation-fill-mode:both;-o-animation:fade-in-pause-out 6s;-o-animation-fill-mode:both;-ms-animation:fade-in-pause-out 6s;-ms-animation-fill-mode:both}.alert .container{padding:.5em 0}.alert-info,.alert-warning,.alert-danger,.alert-success{box-shadow:0 2px 2px rgba(0,0,0,0.1)}.alert-info{background-color:rgba(64,176,224,0.9);color:#fff;text-shadow:1px 1px 1px rgba(0,0,0,0.2)}.alert-warning{background-color:#ff9b08;color:#fff;text-shadow:1px 1px 1px rgba(0,0,0,0.4)}.alert-warning .close{color:#444}.alert-warning .close:hover{color:#2b2b2b !important}.alert-danger{background-color:rgba(233,93,79,0.9);color:#fff;text-shadow:1px 1px 1px rgba(0,0,0,0.2)}.alert-success{background-color:rgba(239,240,83,0.9);text-shadow:1px 1px 1px rgba(255,255,255,0.5)}.alert-success .close{color:#444}.alert-success .close:hover{color:#2b2b2b !important}.alert button.close{font-size:90%;padding:.2em .5em 0 0}.alert-info h1,.alert-info h2,.alert-info h3,.alert-info h4,.alert-danger h1,.alert-danger h2,.alert-danger h3,.alert-danger h4{color:#fff}.close{color:#fff;text-shadow:none;opacity:.5}.close:hover{color:#fff !important;background-color:transparent;opacity:1}.alert button.close{box-shadow:none}.alert button.close:hover{border:none;box-shadow:none}.table{border-collapse:initial}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:thin solid transparent;border-bottom:thin solid transparent}.table tr:hover td{border-top:thin solid #d8d8d8 !important;border-bottom:thin solid #d8d8d8 !important}.table-striped>tbody>tr:nth-child(2n+1)>td,.table-striped>tbody>tr:nth-child(2n+1)>th{background-color:#f0f0f0}.table-striped>tbody>tr:nth-child(2n+1):hover>td,.table-striped>tbody>tr:nth-child(2n+1):hover>th,.table-striped>tbody>tr:nth-child(2n):hover>td,.table-striped>tbody>tr:nth-child(2n):hover>th{background-color:#eee}.table .table-row-link:hover>tr,.table .table-row-link:hover>td{color:#109df0;cursor:pointer}tbody>tr.danger>td a,tbody>tr.info>td a,tbody>tr.warning>td a,tbody>tr.success>td a{font-weight:bold}tbody>tr.danger>td a:hover,tbody>tr.info>td a:hover,tbody>tr.warning>td a:hover,tbody>tr.success>td a:hover{text-decoration:underline !important}tbody>tr.danger>td a,tbody>tr.info>td a{color:#fff}tbody>tr.warning>td a,tbody>tr.success>td a{color:#444}.table tr.info:hover td{background-color:#2199cc !important;border-top:thin solid #2199cc !important;border-bottom:thin solid #2199cc !important}.table tr.danger:hover td{background-color:#e64838 !important;border-top:thin solid #e95d4f !important;border-bottom:thin solid #e95d4f !important}.table tr.warning:hover td{background-color:#f9a527 !important;border-top:thin solid #faaf40 !important;border-bottom:thin solid #faaf40 !important}.table tr.success:hover td{background-color:#d0d12f !important;border-top:thin solid #d5d644 !important;border-bottom:thin solid #d5d644 !important}.table-striped>tbody>tr.danger:nth-child(2n)>td,.table-striped>tbody>tr.danger:nth-child(2n)>th,.table-striped>tbody>tr.danger:nth-child(2n+1)>td,.table-striped>tbody>tr.danger:nth-child(2n+1)>th,.table-striped>tbody>tr.info:nth-child(2n)>td,.table-striped>tbody>tr.info:nth-child(2n)>th,.table-striped>tbody>tr.info:nth-child(2n+1)>td,.table-striped>tbody>tr.info:nth-child(2n+1)>th{color:#fff}.table>tbody>tr.success>td,.table-striped>tbody>tr.success:nth-child(2n)>td,.table-striped>tbody>tr.success:nth-child(2n)>th,.table-striped>tbody>tr.success:nth-child(2n+1)>td,.table-striped>tbody>tr.success:nth-child(2n+1)>th,.table-striped>tbody>tr.warning:nth-child(2n)>td,.table-striped>tbody>tr.warning:nth-child(2n)>th,.table-striped>tbody>tr.warning:nth-child(2n+1)>td,.table-striped>tbody>tr.warning:nth-child(2n+1)>th{color:#444}.table-striped>tbody>tr.danger:nth-child(2n)>td,.table-striped>tbody>tr.danger:nth-child(2n)>th{background-color:#ec7266}.table-striped>tbody>tr.danger:nth-child(2n+1)>td,.table-striped>tbody>tr.danger:nth-child(2n+1)>th{background-color:#e95d4f}.table-striped>tbody>tr.success:nth-child(2n)>td,.table-striped>tbody>tr.success:nth-child(2n)>th{background-color:#d0d12f}.table>tbody>tr.success>td,.table-striped>tbody>tr.success:nth-child(2n+1)>td,.table-striped>tbody>tr.success:nth-child(2n+1)>th{background-color:#d5d644}.table-striped>tbody>tr.warning:nth-child(2n)>td,.table-striped>tbody>tr.warning:nth-child(2n)>th{background-color:#fbc472}.table-striped>tbody>tr.warning:nth-child(2n+1)>td,.table-striped>tbody>tr.warning:nth-child(2n+1)>th{background-color:#faaf40}.table-striped>tbody>tr.info:nth-child(2n)>td,.table-striped>tbody>tr.info:nth-child(2n)>th{background-color:#6cc2e7}.table-striped>tbody>tr.info:nth-child(2n+1)>td,.table-striped>tbody>tr.info:nth-child(2n+1)>th{background-color:#40b0e0}.dataTable .group{font-size:200%;font-family:"Open Sans Condensed","Lucida Sans","Lucida Grande",sans-serif;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.dataTable .group td,.dataTable .group td:hover{background-color:#40b0e0 !important;color:#fff !important;border:none !important;border-bottom:2px solid #2199cc !important;padding-top:7px;padding-bottom:0}.dataTable .sorting{position:relative}.dataTable .fa-sort{font-size:80%;position:absolute;color:#aaa;top:12px;right:2px}header a.logo{display:block;position:relative;float:left;height:36px;font-family:"Open Sans Condensed","Lucida Sans","Lucida Grande",sans-serif !important;color:#515151;text-align:right;font-size:120%;background:url(https://www.blender.org/wp-content/themes/bthree/assets/images/logo.png) no-repeat;font-weight:lighter;line-height:180%;width:123px;opacity:1;margin:8px 0 0 0;background-size:123px 36px;transition:opacity .2s ease-in}@media (max-width: 767px){header a.logo{margin:12px 0 0 15px}}header a.logo:hover{color:#444;opacity:.8}footer{font-size:80%}footer a{color:#777 !important}footer a:hover{color:#109df0 !important}#footer-navigation{font-size:85%;margin-bottom:5px;color:#6a6a6a;border-top:thick solid #ddd}#footer-navigation ul{position:relative;margin:0;padding:0 0 10px 16px;list-style-type:none}#footer-navigation li{position:relative}#footer-navigation a{color:#6a6a6a}#footer-navigation a:hover{color:#109df0}#footer-navigation i{font-size:80%;position:absolute;left:-14px;top:20%}#footer-navigation h4{color:#585858;margin-bottom:5px}.breadcrumb>li+li:before{content:"";font-family:"FontAwesome"}.breadcrumb>.active{color:#919191}.well{overflow:hidden}.tooltip{font-size:14px;position:absolute}.tooltip.in{opacity:1}.tooltip-inner{margin:0 auto;background-color:#f8f8f8;color:#444;border-radius:3px;box-shadow:2px 2px 0 rgba(95,95,95,0.2)}.tooltip.bottom .tooltip-arrow{border-bottom-color:#f8f8f8;border-radius:6px}.tooltip.top .tooltip-arrow{border-top-color:#f8f8f8}.tooltip.bottom .tooltip-arrow{border-bottom-color:#f8f8f8}.tooltip.left .tooltip-arrow{border-left-color:#f8f8f8}.tooltip.right .tooltip-arrow{border-left-color:#f8f8f8}.popover .arrow{display:none}.popover{min-width:250px;background-color:transparent;border:none;border-radius:3px}.popover-title{background-color:#f8f8f8;font-size:110%;border-radius:0;display:none}.popover-content{font-size:14px;border-radius:3px;background-color:#f8f8f8;box-shadow:2px 2px 0 rgba(95,95,95,0.2)}.blink{transition:all 2s ease-in-out;-webkit-animation:blink 2s infinite ease-in-out;animation:blink 2s infinite ease-in-out;-webkit-animation-name:blink;animation-name:blink;-moz-animation-name:blink;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.blink.slowest{-webkit-animation-duration:12s;animation-duration:12s}.blink.slow{-webkit-animation-duration:6s;animation-duration:6s}.blink.fast{-webkit-animation-duration:1s;animation-duration:1s}.blink.fastest{-webkit-animation-duration:.5s;animation-duration:.5s}.table td.success{background-color:#dff0d8 !important}table.builders{width:100%}table.builders td.LastBuild{padding:0.5ex 2ex}table.builders td.Activity{padding-left:2ex}table.builders td a{display:block;padding:0.5ex 2ex}
diff --git a/public_html/assets/sass/main.sass b/public_html/assets/sass/main.sass
deleted file mode 100644
index 5845f75..0000000
--- a/public_html/assets/sass/main.sass
+++ /dev/null
@@ -1,20 +0,0 @@
-@import url(//fonts.googleapis.com/css?family=Open+Sans)
-@import url(//fonts.googleapis.com/css?family=Open+Sans+Condensed:300)
-@import url(../../assets_shared/css/font-borg.css)
-@import ../../assets_shared/sass/main.sass
-
-.table td.success
- background-color: #dff0d8 !important
-
-table.builders
- width: 100%
-
-table.builders td.LastBuild
- padding: 0.5ex 2ex
-
-table.builders td.Activity
- padding-left: 2ex
-
-table.builders td a
- display: block
- padding: 0.5ex 2ex
diff --git a/public_html/assets_shared b/public_html/assets_shared
deleted file mode 160000
index 98b8939..0000000
--- a/public_html/assets_shared
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 98b8939012674c043cf0f52909eaef85a5f9ba7a
diff --git a/public_html/bg_gradient.jpg b/public_html/bg_gradient.jpg
deleted file mode 100644
index 677b254..0000000
Binary files a/public_html/bg_gradient.jpg and /dev/null differ
diff --git a/public_html/default.css b/public_html/default.css
deleted file mode 100644
index 87c2ae5..0000000
--- a/public_html/default.css
+++ /dev/null
@@ -1,621 +0,0 @@
-
-.auth {
-position:absolute;
-top:5px;
-right:40px;
-}
-
-.alert {
- color: #c30000;
- background-color: #f2dcdc;
- padding: 5px 5px 5px 25px;
- margin-bottom: 20px;
- border-top:1px solid #ccc;
- border-bottom:1px solid #ccc;
- border-color: #c30000;
- font-size: 20px;
-}
-a:link,a:visited,a:active {
- color: #444;
-}
-
-.Project {
- min-width: 6em;
-}
-
-.LastBuild,.Activity {
- padding: 0 0 0 4px;
-}
-
-.LastBuild,.Activity,.Builder,.BuildStep {
- min-width: 5em;
-}
-
-/* Chromium Specific styles */
-div.BuildResultInfo {
- color: #444;
-}
-
-div.Announcement {
- margin-bottom: 1em;
-}
-
-div.Announcement>a:hover {
- color: black;
-}
-
-div.Announcement>div.Notice {
- background-color: #afdaff;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Open {
- border: 3px solid #8fdf5f;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Closed {
- border: 5px solid #e98080;
- padding: 0.5em;
- font-size: 24px;
- font-weight: bold;
- text-align: center;
-}
-
-td.Time {
- color: #000;
- border-bottom: 1px solid #aaa;
- background-color: #eee;
-}
-
-td.Activity,td.Change,td.Builder {
- color: #333333;
- background-color: #CCCCCC;
-}
-
-td.Change {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Event {
- color: #777;
- background-color: #ddd;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Activity {
- border-top-left-radius: 10px;
- -webkit-border-top-left-radius: 10px;
- -moz-border-radius-topleft: 10px;
- min-height: 20px;
- padding: 2px 0 2px 0;
-}
-
-td.idle,td.waiting,td.offline,td.building {
- border-top-left-radius: 0px;
- -webkit-border-top-left-radius: 0px;
- -moz-border-radius-topleft: 0px;
-}
-
-.LastBuild {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-/* Console view styles */
-td.DevStatus > table {
- table-layout: fixed;
-}
-
-td.DevRev {
- padding: 4px 8px 4px 8px;
- color: #333333;
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- background-color: #eee;
- width: 1%;
-}
-
-td.DevRevCollapse {
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.DevName {
- padding: 4px 8px 4px 8px;
- color: #333333;
- background-color: #eee;
- width: 1%;
- text-align: left;
-}
-
-td.DevStatus {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.DevSlave {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.first {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
-}
-
-td.last {
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-td.DevStatusCategory {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-width: 1px;
- border-style: solid;
-}
-
-td.DevStatusCollapse {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
-}
-
-td.DevDetails {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevDetails li a {
- padding-right: 5px;
-}
-
-td.DevComment {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevBottom {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.Alt {
- background-color: #ddd;
-}
-
-.legend {
- border-radius: 5px !important;
- -webkit-border-radius: 5px !important;
- -moz-border-radius: 5px !important;
- width: 100px;
- max-width: 100px;
- text-align: center;
- padding: 2px 2px 2px 2px;
- height: 14px;
- white-space: nowrap;
-}
-
-.DevStatusBox {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevStatusBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 20px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-.DevStatusBox a.notinbuilder {
- border-style: none;
-}
-
-.DevSlaveBox {
- text-align: center;
- height: 10px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevSlaveBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 10px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-a.noround {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- position: relative;
- margin-top: -8px;
- margin-bottom: -8px;
- height: 36px;
- border-top-width: 0;
- border-bottom-width: 0;
-}
-
-a.begin {
- border-top-width: 1px;
- position: relative;
- margin-top: 0px;
- margin-bottom: -7px;
- height: 27px;
- border-top-left-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
-}
-
-a.end {
- border-bottom-width: 1px;
- position: relative;
- margin-top: -7px;
- margin-bottom: 0px;
- height: 27px;
- border-bottom-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
-}
-
-.center_align {
- text-align: center;
-}
-
-.right_align {
- text-align: right;
-}
-
-.left_align {
- text-align: left;
-}
-
-div.BuildWaterfall {
- border-radius: 7px;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- position: absolute;
- left: 0px;
- top: 0px;
- background-color: #FFFFFF;
- padding: 4px 4px 4px 4px;
- float: left;
- display: none;
- border-width: 1px;
- border-style: solid;
-}
-
-/* LastBuild, BuildStep states /
-.success {
- background-color: #D5D644;
- color: #40400E;
- text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.5);
- border: thin solid #D0D12F;
-}
-
-.failure {
- color: #000;
- background-color: #e88;
- border-color: #A77272;
-}
-
-.failure-again {
- color: #000;
- background-color: #eA9;
- border-color: #A77272;
-}
-
-.warnings {
- color: #FFFFFF;
- background-color: #fa3;
- border-color: #C29D46;
-}
-
-.skipped {
- color: #000;
- background: #AADDEE;
- border-color: #AADDEE;
-}
-
-.exception,.retry {
- color: #FFFFFF;
- background-color: #c6c;
- border-color: #ACA0B3;
-}
-
-.start {
- color: #000;
- background-color: #ccc;
- border-color: #ccc;
-}
-
-.running,.waiting,td.building {
- color: #000;
- background-color: #fd3;
- border-color: #C5C56D;
-}
-
-.paused {
- color: #FFFFFF;
- background-color: #8080FF;
- border-color: #dddddd;
-}
-
-.offline,td.offline {
- color: #FFFFFF;
- background-color: #777777;
- border-color: #dddddd;
-}
-
-
-.start {
- border-bottom-left-radius: 10px;
- -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- border-bottom-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
- -moz-border-radius-bottomright: 10px;
-}
-
-.notstarted {
- border-width: 1px;
- border-style: solid;
- border-color: #aaa;
- background-color: #fff;
-}
-
-.closed {
- background-color: #ff0000;
-}
-
-.closed .large {
- font-size: 1.5em;
- font-weight: bolder;
-}
-
-*/
-td.Project a:hover,td.start a:hover {
- color: #000;
-}
-
-.mini-box {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.mini-box a {
- border-radius: 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- display: block;
- width: 100%;
- height: 20px;
- line-height: 20px;
- margin-top: -30px;
-}
-
-.mini-closed {
- -box-sizing: border-box;
- -webkit-box-sizing: border-box;
- border: 4px solid red;
-}
-
-/* grid styles */
-table.Grid {
- border-collapse: collapse;
-}
-
-table.Grid tr td {
- padding: 0.2em;
- margin: 0px;
- text-align: center;
-}
-
-table.Grid tr td.title {
- font-size: 90%;
- border-right: 1px gray solid;
- border-bottom: 1px gray solid;
-}
-
-table.Grid tr td.sourcestamp {
- font-size: 90%;
-}
-
-table.Grid tr td.builder {
- text-align: right;
- font-size: 90%;
-}
-
-table.Grid tr td.build {
- border: 1px gray solid;
-}
-
-/* column container/
-div.column {
- margin: 0 2em 2em 0;
- float: left;
-}
-*/
-/* info tables */
-table.info {
- border-spacing: 1px;
-}
-
-table.info td {
- padding: 0.1em 1em 0.1em 1em;
- text-align: center;
-}
-
-table.info th {
- padding: 0.2em 1.5em 0.2em 1.5em;
- text-align: center;
-}
-
-table.info td.left {
- text-align: left
-}
-
-table.info td .reason {
- display:block;
- font-weight: bold;
-}
-
-.alt {
- background-color: #f6f6f6;
-}
-
-li {
- padding: 0.1em 1em 0.1em 1em;
-}
-
-.result {
- padding: 0.3em 1em 0.3em 1em;
-}
-
-/* log view */
-.log * {
- vlink: #800080;
-}
-
-span.stdout {
- color: black;
-}
-
-span.stderr {
- color: red;
-}
-
-span.header {
- color: blue;
-}
-span.ansi30 {
- color: black;
-}
-span.ansi31 {
- color: red;
-}
-span.ansi32 {
- color: green;
-}
-span.ansi33 {
- color: orange;
-}
-span.ansi34 {
- color: yellow;
-}
-span.ansi35 {
- color: purple;
-}
-span.ansi36 {
- color: blue;
-}
-span.ansi37 {
- color: white;
-}
-
-/* revision & email */
-.revision .full {
- display: none;
-}
-
-.user .email {
- display: none;
-}
-
-pre {
- white-space: pre-wrap;
-}
-
-/* change comments (use regular colors here) */
-pre.comments>a:link,pre.comments>a:visited {
- color: blue;
-}
-
-pre.comments>a:active {
- color: purple;
-}
-
-form.command_forcebuild {
- border-top: 1px solid black;
- padding: .5em;
- margin: .5em;
-}
-
-form.command_forcebuild > .row {
- border-top: 1px dotted gray;
- padding: .5em 0;
-}
-
-form.command_forcebuild .force-textarea > .label {
- display: block;
-}
-
-form.command_forcebuild .force-nested > .label {
- font-weight: bold;
- display: list-item;
-}
-
-form.command_forcebuild .force-any .force-text {
- display: inline;
-}
diff --git a/public_html/default.css.new b/public_html/default.css.new
deleted file mode 100644
index 14f206d..0000000
--- a/public_html/default.css.new
+++ /dev/null
@@ -1,641 +0,0 @@
-body.interface {
- margin-left: 30px;
- margin-right: 30px;
- margin-top: 20px;
- margin-bottom: 50px;
- padding: 0;
- background: url(bg_gradient.jpg) repeat-x;
- font-family: Verdana, sans-serif;
- font-size: 10px;
- background-color: #fff;
- color: #333;
-}
-
-.auth {
-position:absolute;
-top:5px;
-right:40px;
-}
-
-.alert {
- color: #c30000;
- background-color: #f2dcdc;
- padding: 5px 5px 5px 25px;
- margin-bottom: 20px;
- border-top:1px solid #ccc;
- border-bottom:1px solid #ccc;
- border-color: #c30000;
- font-size: 20px;
-}
-a:link,a:visited,a:active {
- color: #444;
-}
-
-table {
- border-spacing: 1px 1px;
-}
-
-table td {
- padding: 3px 4px 3px 4px;
- text-align: center;
-}
-
-.Project {
- min-width: 6em;
-}
-
-.LastBuild,.Activity {
- padding: 0 0 0 4px;
-}
-
-.LastBuild,.Activity,.Builder,.BuildStep {
- min-width: 5em;
-}
-
-/* Chromium Specific styles */
-div.BuildResultInfo {
- color: #444;
-}
-
-div.Announcement {
- margin-bottom: 1em;
-}
-
-div.Announcement>a:hover {
- color: black;
-}
-
-div.Announcement>div.Notice {
- background-color: #afdaff;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Open {
- border: 3px solid #8fdf5f;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Closed {
- border: 5px solid #e98080;
- padding: 0.5em;
- font-size: 24px;
- font-weight: bold;
- text-align: center;
-}
-
-td.Time {
- color: #000;
- border-bottom: 1px solid #aaa;
- background-color: #eee;
-}
-
-td.Activity,td.Change,td.Builder {
- color: #333333;
- background-color: #CCCCCC;
-}
-
-td.Change {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Event {
- color: #777;
- background-color: #ddd;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Activity {
- border-top-left-radius: 10px;
- -webkit-border-top-left-radius: 10px;
- -moz-border-radius-topleft: 10px;
- min-height: 20px;
- padding: 2px 0 2px 0;
-}
-
-td.idle,td.waiting,td.offline,td.building {
- border-top-left-radius: 0px;
- -webkit-border-top-left-radius: 0px;
- -moz-border-radius-topleft: 0px;
-}
-
-.LastBuild {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-/* Console view styles */
-td.DevStatus > table {
- table-layout: fixed;
-}
-
-td.DevRev {
- padding: 4px 8px 4px 8px;
- color: #333333;
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- background-color: #eee;
- width: 1%;
-}
-
-td.DevRevCollapse {
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.DevName {
- padding: 4px 8px 4px 8px;
- color: #333333;
- background-color: #eee;
- width: 1%;
- text-align: left;
-}
-
-td.DevStatus {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.DevSlave {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.first {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
-}
-
-td.last {
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-td.DevStatusCategory {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-width: 1px;
- border-style: solid;
-}
-
-td.DevStatusCollapse {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
-}
-
-td.DevDetails {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevDetails li a {
- padding-right: 5px;
-}
-
-td.DevComment {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevBottom {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.Alt {
- background-color: #ddd;
-}
-
-.legend {
- border-radius: 5px !important;
- -webkit-border-radius: 5px !important;
- -moz-border-radius: 5px !important;
- width: 100px;
- max-width: 100px;
- text-align: center;
- padding: 2px 2px 2px 2px;
- height: 14px;
- white-space: nowrap;
-}
-
-.DevStatusBox {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevStatusBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 20px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-.DevStatusBox a.notinbuilder {
- border-style: none;
-}
-
-.DevSlaveBox {
- text-align: center;
- height: 10px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevSlaveBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 10px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-a.noround {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- position: relative;
- margin-top: -8px;
- margin-bottom: -8px;
- height: 36px;
- border-top-width: 0;
- border-bottom-width: 0;
-}
-
-a.begin {
- border-top-width: 1px;
- position: relative;
- margin-top: 0px;
- margin-bottom: -7px;
- height: 27px;
- border-top-left-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
-}
-
-a.end {
- border-bottom-width: 1px;
- position: relative;
- margin-top: -7px;
- margin-bottom: 0px;
- height: 27px;
- border-bottom-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
-}
-
-.center_align {
- text-align: center;
-}
-
-.right_align {
- text-align: right;
-}
-
-.left_align {
- text-align: left;
-}
-
-div.BuildWaterfall {
- border-radius: 7px;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- position: absolute;
- left: 0px;
- top: 0px;
- background-color: #FFFFFF;
- padding: 4px 4px 4px 4px;
- float: left;
- display: none;
- border-width: 1px;
- border-style: solid;
-}
-
-/* LastBuild, BuildStep states */
-.success {
- color: #000;
- background-color: #8d4;
- border-color: #4F8530;
-}
-
-.failure {
- color: #000;
- background-color: #e88;
- border-color: #A77272;
-}
-
-.failure-again {
- color: #000;
- background-color: #eA9;
- border-color: #A77272;
-}
-
-.warnings {
- color: #FFFFFF;
- background-color: #fa3;
- border-color: #C29D46;
-}
-
-.skipped {
- color: #000;
- background: #AADDEE;
- border-color: #AADDEE;
-}
-
-.exception,.retry {
- color: #FFFFFF;
- background-color: #c6c;
- border-color: #ACA0B3;
-}
-
-.start {
- color: #000;
- background-color: #ccc;
- border-color: #ccc;
-}
-
-.running,.waiting,td.building {
- color: #000;
- background-color: #fd3;
- border-color: #C5C56D;
-}
-
-.paused {
- color: #FFFFFF;
- background-color: #8080FF;
- border-color: #dddddd;
-}
-
-.offline,td.offline {
- color: #FFFFFF;
- background-color: #777777;
- border-color: #dddddd;
-}
-
-
-.start {
- border-bottom-left-radius: 10px;
- -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- border-bottom-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
- -moz-border-radius-bottomright: 10px;
-}
-
-.notstarted {
- border-width: 1px;
- border-style: solid;
- border-color: #aaa;
- background-color: #fff;
-}
-
-.closed {
- background-color: #ff0000;
-}
-
-.closed .large {
- font-size: 1.5em;
- font-weight: bolder;
-}
-
-td.Project a:hover,td.start a:hover {
- color: #000;
-}
-
-.mini-box {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.mini-box a {
- border-radius: 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- display: block;
- width: 100%;
- height: 20px;
- line-height: 20px;
- margin-top: -30px;
-}
-
-.mini-closed {
- -box-sizing: border-box;
- -webkit-box-sizing: border-box;
- border: 4px solid red;
-}
-
-/* grid styles */
-table.Grid {
- border-collapse: collapse;
-}
-
-table.Grid tr td {
- padding: 0.2em;
- margin: 0px;
- text-align: center;
-}
-
-table.Grid tr td.title {
- font-size: 90%;
- border-right: 1px gray solid;
- border-bottom: 1px gray solid;
-}
-
-table.Grid tr td.sourcestamp {
- font-size: 90%;
-}
-
-table.Grid tr td.builder {
- text-align: right;
- font-size: 90%;
-}
-
-table.Grid tr td.build {
- border: 1px gray solid;
-}
-
-/* column container */
-div.column {
- margin: 0 2em 2em 0;
- float: left;
-}
-
-/* info tables */
-table.info {
- border-spacing: 1px;
-}
-
-table.info td {
- padding: 0.1em 1em 0.1em 1em;
- text-align: center;
-}
-
-table.info th {
- padding: 0.2em 1.5em 0.2em 1.5em;
- text-align: center;
-}
-
-table.info td.left {
- text-align: left
-}
-
-table.info td .reason {
- display:block;
- font-weight: bold;
-}
-
-.alt {
- background-color: #f6f6f6;
-}
-
-li {
- padding: 0.1em 1em 0.1em 1em;
-}
-
-.result {
- padding: 0.3em 1em 0.3em 1em;
-}
-
-/* log view */
-.log * {
- vlink: #800080;
- font-family: "Courier New", courier, monotype, monospace;
-}
-
-span.stdout {
- color: black;
-}
-
-span.stderr {
- color: red;
-}
-
-span.header {
- color: blue;
-}
-span.ansi30 {
- color: black;
-}
-span.ansi31 {
- color: red;
-}
-span.ansi32 {
- color: green;
-}
-span.ansi33 {
- color: orange;
-}
-span.ansi34 {
- color: yellow;
-}
-span.ansi35 {
- color: purple;
-}
-span.ansi36 {
- color: blue;
-}
-span.ansi37 {
- color: white;
-}
-
-/* revision & email */
-.revision .full {
- display: none;
-}
-
-.user .email {
- display: none;
-}
-
-pre {
- white-space: pre-wrap;
-}
-
-/* change comments (use regular colors here) */
-pre.comments>a:link,pre.comments>a:visited {
- color: blue;
-}
-
-pre.comments>a:active {
- color: purple;
-}
-
-form.command_forcebuild {
- border-top: 1px solid black;
- padding: .5em;
- margin: .5em;
-}
-
-form.command_forcebuild > .row {
- border-top: 1px dotted gray;
- padding: .5em 0;
-}
-
-form.command_forcebuild .force-textarea > .label {
- display: block;
-}
-
-form.command_forcebuild .force-nested > .label {
- font-weight: bold;
- display: list-item;
-}
-
-form.command_forcebuild .force-any .force-text {
- display: inline;
-}
diff --git a/public_html/favicon.ico b/public_html/favicon.ico
deleted file mode 100644
index f125d24..0000000
Binary files a/public_html/favicon.ico and /dev/null differ
diff --git a/public_html/lin.png b/public_html/lin.png
deleted file mode 100644
index c666762..0000000
Binary files a/public_html/lin.png and /dev/null differ
diff --git a/public_html/osx.png b/public_html/osx.png
deleted file mode 100644
index 2ffe7e0..0000000
Binary files a/public_html/osx.png and /dev/null differ
diff --git a/public_html/robots.txt b/public_html/robots.txt
deleted file mode 100644
index b139ade..0000000
--- a/public_html/robots.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-User-agent: *
-Disallow: /waterfall
-Disallow: /builders
-Disallow: /changes
-Disallow: /buildslaves
-Disallow: /schedulers
-Disallow: /one_line_per_build
-Disallow: /builders
-Disallow: /grid
-Disallow: /tgrid
diff --git a/public_html/win.png b/public_html/win.png
deleted file mode 100644
index 912aebb..0000000
Binary files a/public_html/win.png and /dev/null differ
diff --git a/state.sqlite b/state.sqlite
deleted file mode 100644
index 76047ad..0000000
Binary files a/state.sqlite and /dev/null differ
diff --git a/templates/build.html b/templates/build.html
deleted file mode 100644
index 5a80533..0000000
--- a/templates/build.html
+++ /dev/null
@@ -1,253 +0,0 @@
-{% extends "layout.html" %}
-{% import 'forms.html' as forms %}
-{% from "change_macros.html" import change with context %}
-
-{% block content %}
-
-
-
-
-{% if not b.isFinished() %}
-
Build In Progress:
-
- {% if when_time %}
-
ETA: {{ when_time }} [{{ when }}]
- {% endif %}
-
- {{ current_step }}
-
- {% if authz.advertiseAction('stopBuild', request) %}
-
Stop Build
- {{ forms.stop_build(build_url+"/stop", authz, on_all=False, short=False, label='This Build') }}
- {% endif %}
-{% else %}
-
Results:
-
-
-
- {{ b.getText()|join(' ')|capitalize }}
-
-
-
- {% if b.getTestResults() %}
-
- {% endif %}
-{% endif %}
-
-
-{% if sourcestamps|count == 1 %}
-SourceStamp:
-{% else %}
-SourceStamps:
-{% endif %}
-
-
-{% for sourcestamps_row in sourcestamps | batch(3, ' ') %}
-
-{% for ss in sourcestamps_row %}
-
-
-
{{ ss }}
-
- {% set ss_class = cycler('alt','') %}
-
- {% if ss.project %}
- Project {{ ss.project|projectlink }}
- {% endif %}
-
- {% if ss.repository %}
- Repository {{ ss.repository|repolink }}
- {% endif %}
-
- {% if ss.branch %}
- Branch {{ ss.branch|e }}
- {% endif %}
-
- {% if ss.revision %}
- Revision {{ ss.revision|revlink(ss.repository) }}
- {% endif %}
-
- {% if got_revisions[ss] %}
- Got Revision {{ got_revisions[ss.codebase]|revlink(ss.repository) }}
- {% endif %}
-
- {% if ss.patch %}
- Patch YES
- {% endif %}
-
- {% if ss.changes %}
- Changes {{ ss.changes|count }} change{{ 's' if ss.changes|count > 1 else '' }}
- {% endif %}
-
- {% if not ss.branch and not ss.revision and not ss.patch and not ss.changes %}
- Build of most recent revision
- {% endif %}
-
-
-{% endfor %}
-
-{% endfor %}
-
-{#
- # TODO: turn this into a table, or some other sort of definition-list
- # that doesn't take up quite so much vertical space
- #}
-
-
BuildSlave:
-
-{% if slave_url %}
-
{{ b.getSlavename()|e }}
-{% else %}
- {{ b.getSlavename()|e }}
-{% endif %}
-
-
Reason:
-
-{{ b.getReason()|e }}
-
-
-
Steps and Logfiles:
-
-{#
- # TODO:
- # urls = self.original.getURLs()
- # ex_url_class = "BuildStep external"
- # for name, target in urls.items():
- # text.append('[
%s ]' %
- # (target, ex_url_class, html.escape(name)))
- #}
-
-{# TODO(sergey): Move hardcoded span with inline-block into a CSS class. #}
-
-
-{% for s in steps %}
-
- {{ s.name }}
-
- {{ s.text }} {{ '( ' + s.time_to_run + ' )' if s.time_to_run else '' }}
-
-
-
- {% set item_class = cycler('alt', '') %}
- {% for l in s.logs %}
- {{ l.name }}
- {% else %}
- - no logs -
- {% endfor %}
- {% for u in s.urls %}
- {{ u.logname }}
- {% endfor %}
-
-
-
-{% endfor %}
-
-
-
-
-
-
Build Properties:
-
-
-Name Value Source
-
-{% for p in properties %}
-{% if p.source != "Force Build Form" %}
-
- {{ p.name|e }}
- {% if p.short_value %}
- {{ p.short_value|e }} .. [property value too long]
- {% else %}
- {% if p.value is not mapping %}
- {{ p.value|e }}
- {% else %}
-
-
- {%- for key, value in p.value.items() recursive %}
- {{ key|e }} {{ value|e }}
- {% endfor %}
-
-
- {% endif %}
- {% endif %}
- {{ p.source|e }}
-
-{% endif %}
-{% endfor %}
-
-
Forced Build Properties:
-
-Name Label Value
-
-{% for p in properties %}
- {% if p.source == "Force Build Form" %}
-
- {{ p.name|e }}
-
- {% if p.label %}
- {{ p.label }}
- {% endif %}
-
- {% if p.text %}
-
- {% else %}
- {{ p.value|e }}
- {% endif %}
-
- {% endif %}
-{% endfor %}
-
-
-
Responsible Users:
-
-{% if responsible_users %}
-
- {% for u in responsible_users %}
- {{ u|user }}
- {% endfor %}
-
-{% else %}
-
no responsible users
-{% endif %}
-
-
-
Timing:
-
- Start {{ start }}
-{% if end %}
- End {{ end }}
-{% endif %}
- Elapsed {{ elapsed }}
-
-
- {% if authz.advertiseAction('forceBuild', request) %}
-
Resubmit Build:
- {{ forms.rebuild_build(build_url+"/rebuild", authz, sourcestamps[0]) }}
- {% endif %}
-
-
-
-
-
-{% if has_changes %}
-
-
All Changes:
- {% for ss in sourcestamps %}
- {% if ss.changes %}
-
{{ ss.codebase }}:
-
- {% for c in ss.changes %}
- Change #{{ c.number }}
- {{ change(c.asDict()) }}
-
- {% endfor %}
-
- {% endif %}
- {% endfor %}
-
-{% endif %}
-
-{% endblock %}
diff --git a/templates/build_line.html b/templates/build_line.html
deleted file mode 100644
index 63d2117..0000000
--- a/templates/build_line.html
+++ /dev/null
@@ -1,61 +0,0 @@
-{% macro build_line(b, include_builder=False) %}
- ({{ b.time }})
- Rev: {% if b.multiple_revs -%}
- multiple rev
- {%- else -%}
- {{ b.rev_list[0]['rev']|shortrev(b.rev_list[0]['repo']) }}
- {%- endif %}
- {{ b.results }}
- {% if include_builder %}
- {{ b.builder_name }}
- {% endif %}
- #{{ b.buildnum }} -
- {{ b.text|capitalize }}
-{% endmacro %}
-
-{% macro build_tr(b, include_builder=False, loop=None) %}
-
- {{ b.time }}
- {%- for rev in b.rev_list -%}
- {%- if not loop.first %} {% endif -%}
- {%- if rev.get('codebase', '') %}{{ rev['codebase'] }} : {% endif -%}
- {{ rev['rev']|shortrev(rev['repo']) }}
- {%- endfor -%}
-
- {{ b.results }}
- {%- if include_builder %}
- {{ b.builder_name }}
- {% endif %}
- #{{ b.buildnum }}
- {{ b.reason|e }}
- {%- for user in (b.interested_users or []) -%}
- {%- if not loop.first %}, {% endif -%}
- {{ user|e }}
- {%- endfor -%}
-
- {{ b.text|capitalize }}
-
-{% endmacro %}
-
-{% macro build_table(builds, include_builder=False) %}
-{% if builds %}
-
-
- Time
- Revision
- Result
- {%- if include_builder %}
- Builder
- {% endif %}
- Build #
- Reason
- Info
-
- {% for b in builds %}
- {{ build_tr(b, include_builder, loop) }}
- {% endfor %}
-
-{% else %}
- No matching builds found
-{% endif %}
-{% endmacro %}
diff --git a/templates/builder.html b/templates/builder.html
deleted file mode 100644
index e9e2e16..0000000
--- a/templates/builder.html
+++ /dev/null
@@ -1,124 +0,0 @@
-{% from 'build_line.html' import build_table %}
-{% import 'forms.html' as forms %}
-
-{% extends "layout.html" %}
-{% block content %}
-
-Builder {{ name }}
-
-(view in waterfall )
-
-{% if description %}
- {{ description }}
-{% endif %}
-
-
-
-{% if current %}
-
Current Builds:
-
- {% for b in current %}
- {{ b.num }}
- {% if b.when %}
- ETA: {{ b.when_time }} [{{ b.when }}]
- {% endif %}
-
- {{ b.current_step }}
-
- {% if authz.advertiseAction('stopBuild', request) %}
- {{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
- {% endif %}
-
- {% endfor %}
-
-{% else %}
-
No current builds
-{% endif %}
-
-{% if pending %}
-
Pending build requests:
-
- {% for b in pending %}
- ({{ b.when }}, waiting {{ b.delay }})
-
- {% if authz.advertiseAction('cancelPendingBuild', request) %}
- {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=True, id=b.id) }}
- {% endif %}
-
- {% if b.num_changes < 4 %}
- {% for c in b.changes %}{{ c.revision|shortrev(c.repo) }}
- ({{ c.who|email }} ){% if not loop.last %},{% endif %}
- {% endfor %}
- {% else %}
- ({{ b.num_changes }} changes)
- {% endif %}
-
- {% if 'owner' in b.properties %}
- Forced build
- by {{b.properties['owner'][0]}}
- {% if 'reason' in b.properties %}
- {{b.properties['reason'][0]}}
- {% endif %}
- {% endif %}
-
- {% endfor %}
-
-
- {% if authz.advertiseAction('cancelPendingBuild', request) %}
- {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
- {% endif %}
-
-{% else %}
-
No pending build requests
-{% endif %}
-
-
Recent builds:
-
-{{ build_table(recent) }}
-
-
Show more
-
-
-
-
-
Buildslaves:
-
-{% if slaves %}
-
- Name
- Status
- Admin
-
-{% endif %}
-{% for s in slaves %}
-
- {{ s.name|e }}
- {% if s.connected %}
- {% if s.paused %}
- paused
- {% else %}
- connected
- {% endif %}
- {% else %}
- offline
- {% endif %}
- {{ s.admin|email if s.admin else ""}}
-
-{% else %}
- no slaves attached
-{% endfor %}
-
-
-{% if authz.advertiseAction('pingBuilder', request) %}
-
Ping slaves
- {{ forms.ping_builder(builder_url+"/ping", authz) }}
-{% endif %}
-
-{% if authz.advertiseAction('forceBuild', request) and force_schedulers != {} %}
-
Force build
- {{ forms.force_build(builder_url+"/force", authz, request, False, force_schedulers=force_schedulers,default_props=default_props) }}
-{% endif %}
-
-
-
-{% endblock %}
diff --git a/templates/builders.html b/templates/builders.html
deleted file mode 100644
index 6e627a9..0000000
--- a/templates/builders.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% extends 'layout.html' %}
-{% import 'forms.html' as forms %}
-{% from "box_macros.html" import box %}
-
-{% block content %}
-Builders: {{ branches|join(', ')|e }}
-
-
-{% for b in builders %}
-
- {{ b.name|e }}
- {% if b.build_url %}
-
- {{ b.build_label }}
- {{ b.build_text }}
-
- {% else %}
- no build
- {% endif %}
- {# Sybren: The following removes the last 'next in', because it's always duplicated,
- # and removes some newlines (box() adds a after every list item). #}
- {{ box(text=' next in '.join(' '.join(b.current_box['text']).split('next in')[:-1]), class_=b.current_box['class']) }}
-
-{% endfor %}
-
-
-{% if num_building > 0 %}
- {% if authz.advertiseAction('stopAllBuilds', request) or authz.advertiseAction('stopBuild', request) %}
- Stop selected builds
- {{ forms.stop_build(path_to_root+"builders/_selected/stopselected", authz, on_selected=True, builders=builders, label='Selected Builds') }}
- Stop all builds
- {{ forms.stop_build(path_to_root+"builders/_all/stopall", authz, on_all=True, label='All Builds') }}
- {% endif %}
-{% endif %}
-
-{% if authz.advertiseAction('cancelAllPendingBuilds', request) %}
- Cancel selected pending builds
- {{ forms.cancel_build(path_to_root+"builders/_selected/cancelpendingselected", authz, on_selected=True, builders=builders, label='Selected Pending Builds') }}
- Cancel All Pending Builds
- {{ forms.cancel_build(path_to_root+"builders/_all/cancelpendingall", authz, on_all=True, label='All Pending Builds') }}
-{% endif %}
-
-{% if num_online > 0 %}
- {% if authz.advertiseAction('forceAllBuilds', request) or authz.advertiseAction('forceBuild', request) %}
- Force selected builds
- {{ forms.force_build(path_to_root+"builders/_selected/forceselected", authz, request, on_selected=True, builders=builders, force_schedulers=force_schedulers, default_props=default_props) }}
- Force all builds
- {{ forms.force_build(path_to_root+"builders/_all/forceall", authz,request, on_all=True, force_schedulers=force_schedulers, default_props=default_props) }}
- {% endif %}
-{% endif %}
-
-{% endblock %}
diff --git a/templates/buildslave.html b/templates/buildslave.html
deleted file mode 100644
index c53cab0..0000000
--- a/templates/buildslave.html
+++ /dev/null
@@ -1,94 +0,0 @@
-{% from 'build_line.html' import build_table, build_line %}
-{% import 'forms.html' as forms %}
-
-{% extends "layout.html" %}
-{% block content %}
-Buildslave: {{ slavename|e }}
-
-
-
-{% if current %}
-
Currently building:
-
- {% for b in current %}
- {{ build_line(b, True) }}
-
-
- {% endfor %}
-
-{% else %}
-
No current builds
-{% endif %}
-
-
Recent builds
-{{ build_table(recent, True) }}
-
-
-
-{% if access_uri %}
-
Click to Access Slave
-{% endif %}
-
-{% if admin %}
-
Administrator
-
{{ admin|email }}
-{% endif %}
-
-{% if host or info %}
-
Slave information
-
-{% if host %}
- Buildbot-Slave {{ slave_version }}
-
-{% endif %}
-
-{% if info %}
-
-Name Value
-
-{% for info_name, info_val in info.iteritems() %}
-
- {{ info_name|e }}
- {% if info_val is not mapping %}
- {{ info_val|e }}
- {% else %}
-
-
- {%- for key, value in info_val.items() recursive %}
- {{ key|e }} {{ value|e }}
- {% endfor %}
-
-
- {% endif %}
-
-{% endfor %}
-
-{% endif %}
-{% endif %}
-
-
Connection Status
-
-{{ connect_count }} connection(s) in the last hour
-{% if not slave.isConnected() %}
-(not currently connected)
-{% else %}
-
- {% if authz.advertiseAction('gracefulShutdown', request) %}
-
Graceful Shutdown
- {% if slave.getGraceful() %}
-
Slave will shut down gracefully when it is idle.
- {% else %}
- {{ forms.graceful_shutdown(shutdown_url, authz) }}
- {% endif %}
- {% endif %}
- {% if authz.advertiseAction('pauseSlave', request) %}
-
Pause Slave
- {{ forms.pause_slave(pause_url, authz, slave.isPaused()) }}
- {% endif %}
-{% endif %}
-
-
-{% endblock %}
diff --git a/templates/buildslaves.html b/templates/buildslaves.html
deleted file mode 100644
index 167966e..0000000
--- a/templates/buildslaves.html
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "layout.html" %}
-
-{% block content %}
-
-Buildslaves
-
-
-
-
-
-
- Name
- {%- if show_builder_column %}
- Builders
- {%- endif %}
- BuildBot
- Admin
- Last heard from
- Connects/Hour
- Status
-
-
-{% for s in slaves %}
-
- {{ s.name }}
-
- {%- if show_builder_column %}
-
- {%- if s.builders %}
- {%- for b in s.builders %}
- {{ b.name }}
- {%- endfor %}
- {%- else %}
- no builders
- {%- endif -%}
-
- {%- endif %}
-
-
- {{ (s.version or '-')|e }}
-
- {%- if s.admin -%}
- {{ s.admin|email }}
- {%- else -%}
- -
- {%- endif -%}
-
-
- {%- if s.last_heard_from_age -%}
- {{ s.last_heard_from_age }} ({{ s.last_heard_from_time }})
- {%- endif -%}
-
-
- {{ s.connectCount }}
-
-
- {% if s.connected %}
- {% if s.running_builds %}
- Running {{ s.running_builds }} build(s)
- {% elif s.paused %}
- Paused
- {% else %}
- Idle
- {% endif %}
-
- {% else %}
- Not connected
- {% endif %}
-
-
-{% endfor %}
-
-
-
-
-{% endblock %}
diff --git a/templates/directory.html b/templates/directory.html
deleted file mode 100644
index 51b9e6b..0000000
--- a/templates/directory.html
+++ /dev/null
@@ -1,245 +0,0 @@
-{% extends "layout.html" %}
-
-{% block content %}
-
-{% if path == "download/" %}
-Directory listing for {{ path }}
-{% else %}
-Download Latest Builds
-
-If you are interested to help developers improve an area of Blender you are experienced, mail bf-committers .
-
-
-
-
-
These builds are not as stable as releases, use at your own risk.
-
-{% endif %}
-
-{% if path == "/download/experimental/" %}
-
-
These builds are for developer use only!
-
They contain highly experimental patches, which might ruin your day!
-
If you're NOT a developer, please leave this page IMMEDIATELY!
-
-{% endif %}
-
-{% set row_class = cycler('alt', '') %}
-
-
-
-
-Operating System
-Variation
-Name
-Size
-Built On
-
-
-{% for d in directories %}
- {% if not ("experimental" in d,text) %}
-
-
-
- {{ d.text }}
- {{ d.size }}
- {{ d.lastmodified }}
-
- {% endif %}
-{% endfor %}
-
-{% for f in files|sort %}
- {% if ("mingw" in f.text) or ("vc1" in f.text) or ("blender-2.8" in f.text) or ("experimental" in f.text) %}
- {% else %}
-
- {% if "mingw32" in f.text %}
- Windows 32 bit
- {% elif "win32" in f.text %}
- Windows 32 bit
- {% elif "mingw64" in f.text %}
- Windows 64 bit
- {% elif "win64" in f.text %}
- Windows 64 bit
- {% elif "OSX" in f.text %}
- {% if "x86_64" in f.text %}
- Mac OS X 64 bit
- {% else %}
- Mac OS X 32 bit
- {% endif %}
- {% elif "linux" in f.text %}
- {% if "x86_64" in f.text %}
- Linux 64 bit
- {% else %}
- Linux 32 bit
- {% endif %}
- {% endif %}
-
-
-
- Official
-
-
- {{ f.text }}
- {{ f.size }}
-
- {{ f.lastmodified }}
-
-
- {% endif %}
-{% endfor %}
-
-{% for f in files|sort %}
-{% if ("experimental" in f.text) %}
-
- {% if "mingw32" in f.text %}
- Windows 32 bit
- {% elif "win32" in f.text %}
- Windows 32 bit
- {% elif "mingw64" in f.text %}
- Windows 64 bit
- {% elif "win64" in f.text %}
- Windows 64 bit
- {% elif "OSX" in f.text %}
- {% if "x86_64" in f.text %}
- Mac OS X 64 bit
- {% else %}
- Mac OS X 32 bit
- {% endif %}
- {% elif "linux" in f.text %}
- {% if "x86_64" in f.text %}
- Linux 64 bit
- {% else %}
- Linux 32 bit
- {% endif %}
- {% endif %}
-
-
- Experimental Build Branch
- {{ f.text }}
- {{ f.size }}
- {{ f.lastmodified }}
-
-{% endif %}
-{% endfor %}
-
-
-
-
-
These builds are done by new compilers which are aiming to become official.
-
-
-
-
-
-{% for f in files|sort %}
- {% if (not (("mingw" in f.text) or ("vc1" in f.text))) or ("blender-2.8" in f.text) %}
- {% else %}
-
- {% if "mingw32" in f.text %}
- Windows 32 bit
- {% elif "win32" in f.text %}
- Windows 32 bit
- {% elif "mingw64" in f.text %}
- Windows 64 bit
- {% elif "win64" in f.text %}
- Windows 64 bit
- {% elif "OSX" in f.text %}
- {% if "x86_64" in f.text %}
- Mac OS X 64 bit
- {% else %}
- Mac OS X 32 bit
- {% endif %}
- {% elif "linux" in f.text %}
- {% if "x86_64" in f.text %}
- Linux 64 bit
- {% else %}
- Linux 32 bit
- {% endif %}
- {% endif %}
-
-
-
- {% if "mingw" in f.text %}
- Experimental MinGW
- {% elif "vc14" in f.text %}
- Experimental Build Branch by VS 2015(Windows Vista/7/8/10)
- {% else %}
- Official
- {% endif %}
-
-
- {{ f.text }}
- {{ f.size }}
- {{ f.lastmodified }}
-
- {% endif %}
-{% endfor %}
-
-
-
-
These builds are from the Blender 2.8 project. Do not use in production nor save important files with it.
-
-
-Currently we are aware of many issues in 2.8 and actively working to fix them.
-Since replying to reports takes time, we have decided to limit bug reports to module team members
-
-
-
-
-
-{% for f in files|sort %}
- {% if ("blender-2.8" in f.text) %}
-
- {% if "mingw32" in f.text %}
- Windows 32 bit
- {% elif "win32" in f.text %}
- Windows 32 bit
- {% elif "mingw64" in f.text %}
- Windows 64 bit
- {% elif "win64" in f.text %}
- Windows 64 bit
- {% elif "OSX" in f.text %}
- {% if "x86_64" in f.text %}
- Mac OS X 64 bit
- {% else %}
- Mac OS X 32 bit
- {% endif %}
- {% elif "linux" in f.text %}
- {% if "x86_64" in f.text %}
- Linux 64 bit
- {% else %}
- Linux 32 bit
- {% endif %}
- {% endif %}
-
-
-
- {% if "mingw" in f.text %}
- Experimental MinGW
- {% elif "vc14" in f.text %}
- {% if "blender-2.8" in f.text %}
- Blender 2.8 Branch by VS 2015(Windows Vista/7/8/10)
- {% else %}
- Experimental VS 2015(Windows Vista/7/8/10)
- {% endif %}
- {% elif "win32-vc12" in f.text %}
- Official Preview VS 2013(Windows XP/Vista/7/8/10)
- {% elif "win64-vc12" in f.text %}
- Official Preview VS 2013(Windows Vista/7/8/10)
- {% elif "blender-2.8" in f.text %}
- Blender 2.8 Branch
- {% else %}
- Official
- {% endif %}
-
-
- {{ f.text }}
- {{ f.size }}
- {{ f.lastmodified }}
-
- {% endif %}
-{% endfor %}
-
-
-
-{% endblock %}
diff --git a/templates/forms.html b/templates/forms.html
deleted file mode 100644
index d59a7af..0000000
--- a/templates/forms.html
+++ /dev/null
@@ -1,283 +0,0 @@
-
-{% macro cancel_pending_build(cancel_url, authz, short=False, id='all') %}
-
-{% endmacro %}
-
-{% macro stop_change_builds(stopchange_url, changenum, authz) %}
- {% if not changenum %}
-
- {% endif %}
-{% endmacro %}
-
-{% macro stop_build(stop_url, authz, on_all=False, on_selected=False, builders=[], short=False, label="Build") %}
- {% if not short %}
-
- {% endif %}
-{% endmacro %}
-
-{% macro cancel_build(cancel_url, authz, on_all=False, on_selected=False, builders=[], short=False, label="Build") %}
- {% if not short %}
-
- {% endif %}
-{% endmacro %}
-
-{# TODO(sergey): Move hardcoded span with inline-block into a CSS class. #}
-
-{% macro force_build_scheduler_parameter(f, authz, request, sch, default_props) %}
- {% if f and not f.hide and (f.fullName != "username" or not authz.authenticated(request)) %}
-
- {% endif %}
-{% endmacro %}
-
-{% macro force_build_one_scheduler(force_url, authz, request, on_all, on_selected, builders, sch, default_props) %}
-
-{% endmacro %}
-{% macro force_build(force_url, authz, request, on_all=False, on_selected=False, builders=[], force_schedulers={},default_props={}) %}
-
- {% for name, sch in force_schedulers.items() | sort %}
- {{ force_build_one_scheduler(force_url, authz, request, on_all, on_selected, builders, sch, default_props=default_props) }}
- {% endfor %}
-
-{% endmacro %}
-
-{% macro graceful_shutdown(shutdown_url, authz) %}
-
-{% endmacro %}
-
-{% macro pause_slave(pause_url, authz, paused) %}
-
-{% endmacro %}
-
-{% macro clean_shutdown(shutdown_url, authz) %}
-
-{% endmacro %}
-
-{% macro cancel_clean_shutdown(cancel_shutdown_url, authz) %}
-
-{% endmacro %}
-
-{% macro ping_builder(ping_url, authz) %}
-
-{% endmacro %}
-
-{% macro rebuild_build(rebuild_url, authz, ss) %}
-
-{% endmacro %}
-
-{% macro show_users(users_url, authz) %}
-
-{% endmacro %}
diff --git a/templates/grid.html b/templates/grid.html
deleted file mode 100644
index 2540fde..0000000
--- a/templates/grid.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "layout.html" %}
-{% import 'grid_macros.html' as grid with context %}
-
-{% block content %}
-
-Grid View
-
-
-
-
- {{ title }}
- {{ grid.tag_title() }}
-
-
- {% for s in stamps %}
- {{ grid.stamp_td(s) }}
- {% endfor %}
-
-
-{% for builder in builders %}
-
- {{ grid.builder_td(builder) }}
- {% for build in builder.builds %}
- {{ grid.build_td(build) }}
- {% endfor %}
-
-{% endfor %}
-
-
-
-{% endblock %}
diff --git a/templates/grid_transposed.html b/templates/grid_transposed.html
deleted file mode 100644
index 5e48d5e..0000000
--- a/templates/grid_transposed.html
+++ /dev/null
@@ -1,30 +0,0 @@
-{% extends "layout.html" %}
-{% import 'grid_macros.html' as grid with context %}
-
-{% block content %}
-
-Transposed Grid View
-
-
-
-
- {{ title }}
- {{ grid.tag_title() }}
-
- {% for builder in builders %}
- {{ grid.builder_td(builder) }}
- {% endfor %}
-
-
-{% for i in range %}
-
- {{ grid.stamp_td(stamps[i]) }}
- {% for b in builder_builds %}
- {{ grid.build_td(b[i]) }}
- {% endfor %}
-
-{% endfor %}
-
-
-
-{% endblock %}
diff --git a/templates/layout.html b/templates/layout.html
deleted file mode 100644
index 66bfd88..0000000
--- a/templates/layout.html
+++ /dev/null
@@ -1,205 +0,0 @@
-{%- block doctype -%}
-
-{% endblock %}
-
-
- {% block head %}
-
- {% if metatags %}
- {{ metatags }}
- {% endif %}
- {% if refresh %}
-
- {% endif %}
- {{ title|e }}
-
-
-
-
-
-
-
-
- {% endblock %}
-
-
-
- {% block header -%}
-
-
-
-
-
-
-
-
-
-
-
- {% set title = request.path.split("/")[1] %}
-
-
-
-
-
-
-
-
-
-
-
-
- {% endblock %}
-
- {%- block barecontent -%}
-
-
-
- {%- block content -%}
- {%- endblock -%}
-
-
-
- {%- endblock -%}
-
-
- {%- block footer -%}
-
-
-
-
- BuildBot ({{version}}) - Page built: {{ time }} ({{ tz }})
- {% if project_name -%}
- working for the
- {%- if project_url -%}
- {{ project_name }}
- {%- else -%}
- {{ project_name }}
- {%- endif -%}
- project.
- {%- endif -%}
-
-
- Blender.org
-
-
-
-
-
-
-
- {% endblock -%}
-
-
-
-
diff --git a/templates/root.html b/templates/root.html
deleted file mode 100644
index d352206..0000000
--- a/templates/root.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends 'layout.html' %}
-{% import 'forms.html' as forms %}
-
-{% block content %}
-
-Blender Buildbot
-
-
-
-{% endblock %}
-
diff --git a/templates/waterfall.html b/templates/waterfall.html
deleted file mode 100644
index d8738db..0000000
--- a/templates/waterfall.html
+++ /dev/null
@@ -1,66 +0,0 @@
-{% extends "layout.html" %}
-{% from "box_macros.html" import box %}
-
-{% block content %}
-
-
-
-
-
-
-
- last build
-
-
-{% for b in builders %}
-
- {{ b.name }}
- {{ " ".join(b.top) }}
-
-{% endfor %}
-
-
-
-current activity
-
-{% for b in builders %}
-
- {{ " ".join(b.status) }}
-
-{% endfor %}
-
-
-
-{{ tz }}
-changes
-
-{% for b in builders %}
- {{ b.name }}
-{% endfor %}
-
-
-{# waterfall contents goes here #}
-{% for i in range(gridlen) -%}
-
- {% for strip in grid -%}
- {%- if strip[i] -%}{{ box(**strip[i]) }}
- {%- elif no_bubble -%}{{ box() }}
- {%- endif -%}
- {%- endfor -%}
-
-{% endfor %}
-
-
-
-{% if nextpage %}
- next page
-{% endif %}
-
-{% if no_reload_page %}
- Stop Reloading
-{% endif %}
-
-{% endblock %}