diff --git a/README.md b/README.md index bfe254fae1..c38c9a42b3 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Free Code Camp! We're a community of busy people learning to code by collaborating on projects for nonprofits. We learn, then use, the JavaScript MEAN stack - MongoDB, Express.js, Angular.js and Node.js. -This app is live at [FreeCodeCamp.com](http://www.FreeCodeCamp.com), and we have a [chat room](https://gitter.im/FreeCodeCamp/FreeCodeCamp), [blog](http://blog.freecodecamp.com) and [forum](http://forum.freecodecamp.com), too. Join us! +This app is live at [FreeCodeCamp.com](http://www.FreeCodeCamp.com), and we have a [chat room](https://gitter.im/FreeCodeCamp/FreeCodeCamp) and [blog](http://blog.freecodecamp.com), too. Join us! Prerequisites ------------- @@ -155,7 +155,7 @@ Contributing ------------ We welcome pull requests from Free Code Camp "campers" (our students) and seasoned JavaScript developers alike! -1) Check our [public Trello Board](https://trello.com/b/CW5AFr0v/free-code-camp-development) +1) Check our [public Waffle Board](https://waffle.io/freecodecamp/freecodecamp) 2) If your issue or feature isn't on the board, either open an issue on this GitHub repo or message Quincy Larson to request to be added to the Trello board. 3) Once your code is ready, submit the pull request. We'll do a quick code review and give you feedback, and iterate from there. diff --git a/app.js b/app.js index c88fd0b5e3..01e76fcd4c 100644 --- a/app.js +++ b/app.js @@ -213,6 +213,8 @@ app.use( express.static(path.join(__dirname, 'public'), {maxAge: 31557600000}) ); +app.use(express.static(__dirname + '/public', { maxAge: 86400000 })); + /** * Main routes. */ @@ -233,6 +235,9 @@ app.get('/control-shortcuts', resourcesController.deployAWebsite); app.get('/stats', function(req, res) { res.redirect(301, '/learn-to-code'); }); +app.get('/news', function(req, res) { + res.redirect(301, '/stories/hot'); +}); app.get('/learn-to-code', resourcesController.about); app.get('/about', function(req, res) { res.redirect(301, '/learn-to-code'); @@ -319,7 +324,7 @@ app.get( ); app.get( - '/stories/submit/:newStory', + '/stories/submit/new-story', storyController.preSubmit ); diff --git a/config/passport.js b/config/passport.js index 197bbfb0f6..a2cc694e33 100644 --- a/config/passport.js +++ b/config/passport.js @@ -67,7 +67,7 @@ passport.use(new FacebookStrategy(secrets.facebook, function(req, accessToken, r user.tokens.push({ kind: 'facebook', accessToken: accessToken }); user.profile.name = user.profile.name || profile.displayName; user.profile.gender = user.profile.gender || profile._json.gender; - user.profile.picture = user.profile.picture || 'https://graph.facebook.com/' + profile.id + '/picture?type=large'; + user.profile.picture = user.profile.picture || 'https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png'; user.save(function(err) { req.flash('info', { msg: 'Facebook account has been linked.' }); done(err, user); diff --git a/controllers/resources.js b/controllers/resources.js index 22efac5bb4..b15d25ef6b 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -4,7 +4,6 @@ var User = require('../models/User'), Story = require('./../models/Story'), Comment = require('./../models/Comment'), resources = require('./resources.json'), - questions = resources.questions, steps = resources.steps, secrets = require('./../config/secrets'), bonfires = require('../seed_data/bonfires.json'), @@ -38,7 +37,6 @@ module.exports = { debug('User err: ', err); next(err); } - console.log('user count', users.length); Challenge.find({}, function (err, challenges) { if (err) { debug('User err: ', err); @@ -49,13 +47,20 @@ module.exports = { debug('User err: ', err); next(err); } - res.header('Content-Type', 'application/xml'); - res.render('resources/sitemap', { - appUrl: appUrl, - now: now, - users: users, - challenges: challenges, - bonfires: bonfires + Story.find({}, function (err, stories) { + if (err) { + debug('User err: ', err); + next(err); + } + res.header('Content-Type', 'application/xml'); + res.render('resources/sitemap', { + appUrl: appUrl, + now: now, + users: users, + challenges: challenges, + bonfires: bonfires, + stories: stories + }); }); }); }); @@ -131,9 +136,7 @@ module.exports = { var githubHeaders = {headers: {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1521.3 Safari/537.36'}, port:80 }; request('https://api.github.com/repos/freecodecamp/freecodecamp/pulls?client_id=' + secrets.github.clientID + '&client_secret=' + secrets.github.clientSecret, githubHeaders, function(err, status1, pulls) { pulls = pulls ? Object.keys(JSON.parse(pulls)).length : "Can't connect to github"; - debug('pulls', pulls); request('https://api.github.com/repos/freecodecamp/freecodecamp/issues?client_id=' + secrets.github.clientID + '&client_secret=' + secrets.github.clientSecret, githubHeaders, function (err, status2, issues) { - debug('issues', issues); issues = ((pulls === parseInt(pulls)) && issues) ? Object.keys(JSON.parse(issues)).length - pulls : "Can't connect to GitHub"; res.send({"issues": issues, "pulls" : pulls}); }); @@ -150,7 +153,7 @@ module.exports = { }, bloggerCalls: function(req, res) { request('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function (err, status, blog) { - var blog = blog.length > 100 ? JSON.parse(blog) : ""; + blog = blog.length > 100 ? JSON.parse(blog) : ''; res.send({ blog1Title: blog ? blog["items"][0]["title"] : "Can't connect to Blogger", blog1Link: blog ? blog["items"][0]["url"] : "http://blog.freecodecamp.com", @@ -167,6 +170,15 @@ module.exports = { }, about: function(req, res) { + if (req.user) { + if (!req.user.picture) { + + req.user.picture = "https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png"; + req.user.save(); + } + } + + var date1 = new Date("10/15/2014"); var date2 = new Date(); var timeDiff = Math.abs(date2.getTime() - date1.getTime()); @@ -212,10 +224,6 @@ module.exports = { return compliments[Math.floor(Math.random() * compliments.length)]; }, - numberOfBonfires: function() { - return bonfires.length - 1; - }, - allBonfireIds: function() { return bonfires.map(function(elem) { return { @@ -277,15 +285,19 @@ module.exports = { return process.env.NODE_ENV; }, getURLTitle: function(url, callback) { - + debug('got url in meta scraping function', url); (function () { - var result = {title: ''}; + var result = {title: '', image: '', url: '', description: ''}; request(url, function (error, response, body) { if (!error && response.statusCode === 200) { var $ = cheerio.load(body); - var title = $('title').text(); - result.title = title; - debug('calling callback with', result); + var metaDescription = $("meta[name='description']"); + var metaImage = $("meta[property='og:image']"); + var urlImage = metaImage.attr('content') ? metaImage.attr('content') : ''; + var description = metaDescription.attr('content') ? metaDescription.attr('content') : ''; + result.title = $('title').text().length < 141 ? $('title').text() : $('title').text().slice(0, 137) + " ..."; + result.image = urlImage; + result.description = description; callback(null, result); } else { callback('failed'); @@ -293,7 +305,7 @@ module.exports = { }); })(); }, - updateUserStoryPictures: function(userId, picture) { + updateUserStoryPictures: function(userId, picture, username) { var counter = 0, foundStories, @@ -322,14 +334,14 @@ module.exports = { } R.forEach(function(comment) { comment.author.picture = picture; + comment.author.username = username; comment.markModified('author'); comment.save(); }, foundComments); R.forEach(function(story) { story.author.picture = picture; - debug('This is a story', story); - debug(story.author.picture); + story.author.username = username; story.markModified('author'); story.save(); }, foundStories); diff --git a/controllers/story.js b/controllers/story.js index 78ceda95d4..fea8f00a42 100644 --- a/controllers/story.js +++ b/controllers/story.js @@ -8,9 +8,9 @@ var R = require('ramda'), mongodb = require('mongodb'), MongoClient = mongodb.MongoClient, secrets = require('../config/secrets'), - User = require('./../models/User'); + sanitizeHtml = require('sanitize-html'); -function hotRank(timeValue, rank, headline) { +function hotRank(timeValue, rank) { /* * Hotness ranking algorithm: http://amix.dk/blog/post/19588 * tMS = postedOnDate - foundationTime; @@ -24,21 +24,20 @@ function hotRank(timeValue, rank, headline) { } -exports.hotJSON = function(req, res, next) { +exports.hotJSON = function(req, res) { var story = Story.find({}).sort({'timePosted': -1}).limit(1000); story.exec(function(err, stories) { if (err) { - throw err; + res.send(500); + return next(err); } var foundationDate = 1413298800000; var sliceVal = stories.length >= 100 ? 100 : stories.length; - var rankedStories = stories; - return res.json(rankedStories.map(function(elem) { + return res.json(stories.map(function(elem) { return elem; }).sort(function(a, b) { - debug('a rank and b rank', hotRank(a.timePosted - foundationDate, a.rank, a.headline), hotRank(b.timePosted - foundationDate, b.rank, b.headline)); return hotRank(b.timePosted - foundationDate, b.rank, b.headline) - hotRank(a.timePosted - foundationDate, a.rank, a.headline); }).slice(0, sliceVal)); @@ -49,48 +48,66 @@ exports.recentJSON = function(req, res, next) { var story = Story.find({}).sort({'timePosted': -1}).limit(100); story.exec(function(err, stories) { if (err) { - throw err; + res.status(500); + return next(err); } res.json(stories); }); }; -exports.hot = function(req, res, next) { +exports.hot = function(req, res) { res.render('stories/index', { + title: 'Hot stories currently trending on Camper News', page: 'hot' }); }; -exports.submitNew = function(req,res, next) { +exports.submitNew = function(req, res) { res.render('stories/index', { + title: 'Submit a new story to Camper News', page: 'submit' }); }; -exports.search = function(req, res, next) { +exports.search = function(req, res) { res.render('stories/index', { + title: 'Search the archives of Camper News', page: 'search' }); }; -exports.recent = function(req, res, next) { +exports.recent = function(req, res) { res.render('stories/index', { + title: 'Recently submitted stories on Camper News', page: 'recent' }); }; -exports.preSubmit = function(req, res, next) { +exports.preSubmit = function(req, res) { - var data = req.params.newStory; + var data = req.query; + var cleanData = sanitizeHtml(data.url); + if (data.url.replace(/&/g, '&') !== cleanData) { + debug('data and cleandata', data, cleanData, data.url === cleanData); + req.flash('errors', { + msg: 'The data for this post is malformed' + }); + return res.render('stories/index', { + page: 'stories/submit' + }); + } - data = data.replace(/url=/gi, '').replace(/&title=/gi, ',').split(','); - var url = data[0]; - var title = data[1]; - res.render('stories/index', { + var title = data.title || ''; + var image = data.image || ''; + var description = data.description || ''; + return res.render('stories/index', { + title: "Confirm your Camper News story submission", page: 'storySubmission', - storyURL: url, - storyTitle: title + storyURL: data.url, + storyTitle: title, + storyImage: image, + storyMetaDescription: description }); }; @@ -132,15 +149,15 @@ exports.returnIndividualStory = function(req, res, next) { user: req.user, timeAgo: moment(story.timePosted).fromNow(), image: story.image, - page: 'show' + page: 'show', + storyMetaDescription: story.metaDescription }); }); }; -exports.getStories = function(req, res, next) { +exports.getStories = function(req, res) { MongoClient.connect(secrets.db, function(err, database) { - var db = database; - db.collection('stories').find({ + database.collection('stories').find({ "$text": { "$search": req.body.data.searchValue } @@ -155,6 +172,7 @@ exports.getStories = function(req, res, next) { comments: 1, image: 1, storyLink: 1, + metaDescription: 1, textScore: { $meta: "textScore" } @@ -177,7 +195,8 @@ exports.upvote = function(req, res, next) { var data = req.body.data; Story.find({'_id': data.id}, function(err, story) { if (err) { - throw err; + res.status(500); + return next(err); } story = story.pop(); story.rank++; @@ -197,59 +216,68 @@ exports.comments = function(req, res, next) { var data = req.params.id; Comment.find({'_id': data}, function(err, comment) { if (err) { - throw err; + res.status(500); + return next(err); } comment = comment.pop(); return res.send(comment); }); }; -exports.newStory = function(req, res, next) { +exports.newStory = function(req, res) { var url = req.body.data.url; + var cleanURL = sanitizeHtml(url); + if (cleanURL !== url) { + req.flash('errors', { + msg: "The URL you submitted doesn't appear valid" + }); + return res.json({ + alreadyPosted: true, + storyURL: '/stories/submit' + }); + + } if (url.search(/^https?:\/\//g) === -1) { url = 'http://' + url; } - debug('In pre submit with a url', url); - Story.find({'link': url}, function(err, story) { - debug('Attempting to find a story'); if (err) { - debug('oops'); return res.status(500); } if (story.length) { - debug('Found a story already, here\'s the return from find', story); req.flash('errors', { msg: "Someone's already posted that link. Here's the discussion." }); - debug('Redirecting the user with', story[0].storyLink); return res.json({ alreadyPosted: true, - storyURL: story.pop().storyLink + storyURL: '/stories/' + story.pop().storyLink }); } resources.getURLTitle(url, processResponse); }); - function processResponse(err, storyTitle) { + function processResponse(err, story) { if (err) { res.json({ alreadyPosted: false, storyURL: url, - storyTitle: '' + storyTitle: '', + storyImage: '', + storyMetaDescription: '' }); } else { - storyTitle = storyTitle ? storyTitle : ''; res.json({ alreadyPosted: false, storyURL: url, - storyTitle: storyTitle.title + storyTitle: story.title, + storyImage: story.image, + storyMetaDescription: story.description }); } } }; -exports.storySubmission = function(req, res, next) { +exports.storySubmission = function(req, res) { var data = req.body.data; var storyLink = data.headline .replace(/\'/g, '') @@ -263,19 +291,20 @@ exports.storySubmission = function(req, res, next) { link = 'http://' + link; } var story = new Story({ - headline: data.headline, + headline: sanitizeHtml(data.headline), timePosted: Date.now(), link: link, - description: data.description, + description: sanitizeHtml(data.description), rank: 1, upVotes: data.upVotes, author: data.author, comments: [], image: data.image, - storyLink: storyLink + storyLink: storyLink, + metaDescription: data.storyMetaDescription }); - story.save(function(err, data) { + story.save(function(err) { if (err) { return res.status(500); } @@ -285,12 +314,22 @@ exports.storySubmission = function(req, res, next) { }); }; -exports.commentSubmit = function(req, res, next) { - debug('comment submit fired'); +exports.commentSubmit = function(req, res) { var data = req.body.data; + var sanitizedBody = sanitizeHtml(data.body, + { + allowedTags: [], + allowedAttributes: [] + }); + if (data.body !== sanitizedBody) { + req.flash('errors', { + msg: 'HTML is not allowed' + }); + return res.send(true); + } var comment = new Comment({ associatedPost: data.associatedPost, - body: data.body, + body: sanitizedBody, rank: 0, upvotes: 0, author: data.author, @@ -301,13 +340,22 @@ exports.commentSubmit = function(req, res, next) { commentSave(comment, Story, res); }; -exports.commentOnCommentSubmit = function(req, res, next) { - debug('comment on comment submit'); - var idToFind = req.params.id; +exports.commentOnCommentSubmit = function(req, res) { var data = req.body.data; + var sanitizedBody = sanitizeHtml(data.body, + { + allowedTags: [], + allowedAttributes: [] + }); + if (data.body !== sanitizedBody) { + req.flash('errors', { + msg: 'HTML is not allowed' + }); + return res.send(true); + } var comment = new Comment({ associatedPost: data.associatedPost, - body: data.body, + body: sanitizedBody, rank: 0, upvotes: 0, author: data.author, @@ -331,7 +379,7 @@ function commentSave(comment, Context, res) { associatedStory = associatedStory.pop(); if (associatedStory) { associatedStory.comments.push(data._id); - associatedStory.save(function (err, data) { + associatedStory.save(function (err) { if (err) { res.status(500); } diff --git a/controllers/user.js b/controllers/user.js index 569f418e33..07a0523d5f 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -7,10 +7,10 @@ var _ = require('lodash'), secrets = require('../config/secrets'), moment = require('moment'), Challenge = require('./../models/Challenge'), - debug = require('debug')('freecc:cntr:challenges') + debug = require('debug')('freecc:cntr:challenges'), resources = require('./resources'); -//TODO(Berks): Refactor to use module.exports = {} pattern. + /** * GET /signin @@ -18,10 +18,10 @@ var _ = require('lodash'), */ exports.getSignin = function(req, res) { - if (req.user) return res.redirect('/'); - res.render('account/signin', { - title: 'Free Code Camp Login' - }); + if (req.user) return res.redirect('/'); + res.render('account/signin', { + title: 'Free Code Camp Login' + }); }; /** @@ -30,28 +30,28 @@ exports.getSignin = function(req, res) { */ exports.postSignin = function(req, res, next) { - req.assert('email', 'Email is not valid').isEmail(); - req.assert('password', 'Password cannot be blank').notEmpty(); + req.assert('email', 'Email is not valid').isEmail(); + req.assert('password', 'Password cannot be blank').notEmpty(); - var errors = req.validationErrors(); + var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('/signin'); - } - - passport.authenticate('local', function(err, user, info) { - if (err) return next(err); - if (!user) { - req.flash('errors', { msg: info.message }); - return res.redirect('/signin'); + if (errors) { + req.flash('errors', errors); + return res.redirect('/signin'); } - req.logIn(user, function(err) { - if (err) return next(err); - req.flash('success', { msg: 'Success! You are logged in.' }); - res.redirect(req.session.returnTo || '/'); - }); - })(req, res, next); + + passport.authenticate('local', function(err, user, info) { + if (err) return next(err); + if (!user) { + req.flash('errors', { msg: info.message }); + return res.redirect('/signin'); + } + req.logIn(user, function(err) { + if (err) return next(err); + req.flash('success', { msg: 'Success! You are logged in.' }); + res.redirect(req.session.returnTo || '/'); + }); + })(req, res, next); }; /** @@ -60,8 +60,8 @@ exports.postSignin = function(req, res, next) { */ exports.signout = function(req, res) { - req.logout(); - res.redirect('/'); + req.logout(); + res.redirect('/'); }; /** @@ -70,10 +70,10 @@ exports.signout = function(req, res) { */ exports.getEmailSignin = function(req, res) { - if (req.user) return res.redirect('/'); - res.render('account/email-signin', { - title: 'Sign in to your Free Code Camp Account' - }); + if (req.user) return res.redirect('/'); + res.render('account/email-signin', { + title: 'Sign in to your Free Code Camp Account' + }); }; /** @@ -82,10 +82,10 @@ exports.getEmailSignin = function(req, res) { */ exports.getEmailSignup = function(req, res) { - if (req.user) return res.redirect('/'); - res.render('account/email-signup', { - title: 'Create Your Free Code Camp Account' - }); + if (req.user) return res.redirect('/'); + res.render('account/email-signup', { + title: 'Create Your Free Code Camp Account' + }); }; /** @@ -94,63 +94,93 @@ exports.getEmailSignup = function(req, res) { */ exports.postEmailSignup = function(req, res, next) { - var errors = req.validationErrors(); + var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('/email-signup'); - debug(errors); - } - - var user = new User({ - email: req.body.email.trim(), - password: req.body.password, - profile : { - username: req.body.username.trim() + if (errors) { + req.flash('errors', errors); + return res.redirect('/email-signup'); } - }); - User.findOne({ email: req.body.email }, function(err, existingUser) { - if (err) { return next(err); } + var possibleUserData = req.body; - if (existingUser) { - req.flash('errors', { - msg: 'Account with that email address already exists.' - }); - return res.redirect('/email-signup'); + if (possibleUserData.password.length < 8) { + req.flash('errors', { + msg: 'Your password is too short' + }); + return res.redirect('email-signup'); } - user.save(function(err) { - if (err) { return next(err); } - req.logIn(user, function(err) { - if (err) { return next(err); } - res.redirect('/email-signup'); - }); + if (possibleUserData.username.length < 5 || possibleUserData.length > 20) { + req.flash('errors', { + msg: 'Your username must be between 5 and 20 characters' + }); + return res.redirect('email-signup'); + } + + + var user = new User({ + email: req.body.email.trim(), + password: req.body.password, + profile : { + username: req.body.username.trim(), + picture: 'https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png' + } }); - var transporter = nodemailer.createTransport({ - service: 'Mandrill', - auth: { - user: secrets.mandrill.user, - pass: secrets.mandrill.password - } + + User.findOne({ email: req.body.email }, function(err, existingEmail) { + if (err) { + return next(err); + } + + if (existingEmail) { + req.flash('errors', { + msg: 'Account with that email address already exists.' + }); + return res.redirect('/email-signup'); + } + User.findOne({'profile.username': req.body.username }, function(err, existingUsername) { + if (err) { + return next(err); + } + if (existingUsername) { + req.flash('errors', { + msg: 'Account with that username already exists.' + }); + return res.redirect('/email-signup'); + } + + user.save(function(err) { + if (err) { return next(err); } + req.logIn(user, function(err) { + if (err) { return next(err); } + res.redirect('/email-signup'); + }); + }); + var transporter = nodemailer.createTransport({ + service: 'Mandrill', + auth: { + user: secrets.mandrill.user, + pass: secrets.mandrill.password + } + }); + var mailOptions = { + to: user.email, + from: 'Team@freecodecamp.com', + subject: 'Welcome to Free Code Camp!', + text: [ + 'Greetings from San Francisco!\n\n', + 'Thank you for joining our community.\n', + 'Feel free to email us at this address if you have any questions about Free Code Camp.\n', + "And if you have a moment, check out our blog: blog.freecodecamp.com.\n", + 'Good luck with the challenges!\n\n', + '- the Volunteer Camp Counselor Team' + ].join('') + }; + transporter.sendMail(mailOptions, function(err) { + if (err) { return err; } + }); + }); }); - var mailOptions = { - to: user.email, - from: 'Team@freecodecamp.com', - subject: 'Welcome to Free Code Camp!', - text: [ - 'Greetings from San Francisco!\n\n', - 'Thank you for joining our community.\n', - 'Feel free to email us at this address if you have any questions about Free Code Camp.\n', - "And if you have a moment, check out our blog: blog.freecodecamp.com.\n", - 'Good luck with the challenges!\n\n', - '- the Volunteer Camp Counselor Team' - ].join('') - }; - transporter.sendMail(mailOptions, function(err) { - if (err) { return err; } - }); - }); }; /** @@ -160,7 +190,7 @@ exports.postEmailSignup = function(req, res, next) { exports.getAccount = function(req, res) { res.render('account/account', { - title: 'Manage your Free Code Camp Account' + title: 'Manage your Free Code Camp Account' }); }; @@ -168,9 +198,9 @@ exports.getAccount = function(req, res) { * Angular API Call */ - exports.getAccountAngular = function(req, res) { +exports.getAccountAngular = function(req, res) { res.json({ - user: req.user + user: req.user }); }; @@ -179,13 +209,13 @@ exports.getAccount = function(req, res) { */ exports.checkUniqueUsername = function(req, res) { - User.count({'profile.username': req.params.username.toLowerCase()}, function (err, data) { - if (data == 1) { - return res.send(true); - } else { - return res.send(false); - } - }); + User.count({'profile.username': req.params.username.toLowerCase()}, function (err, data) { + if (data == 1) { + return res.send(true); + } else { + return res.send(false); + } + }); }; /** @@ -206,13 +236,13 @@ exports.checkExistingUsername = function(req, res) { */ exports.checkUniqueEmail = function(req, res) { - User.count({'email': decodeURIComponent(req.params.email).toLowerCase()}, function (err, data) { - if (data == 1) { - return res.send(true); - } else { - return res.send(false); - } - }); + User.count({'email': decodeURIComponent(req.params.email).toLowerCase()}, function (err, data) { + if (data == 1) { + return res.send(true); + } else { + return res.send(false); + } + }); }; @@ -222,44 +252,44 @@ exports.checkUniqueEmail = function(req, res) { */ exports.returnUser = function(req, res, next) { - User.find({'profile.username': req.params.username.toLowerCase()}, function(err, user) { - if (err) { debug('Username err: ', err); next(err); } - if (user[0]) { - var user = user[0]; - Challenge.find({}, null, {sort: {challengeNumber: 1}}, function (err, c) { - res.render('account/show', { - title: 'Camper: ', - username: user.profile.username, - name: user.profile.name, - location: user.profile.location, - githubProfile: user.profile.githubProfile, - linkedinProfile: user.profile.linkedinProfile, - codepenProfile: user.profile.codepenProfile, - twitterHandle: user.profile.twitterHandle, - bio: user.profile.bio, - picture: user.profile.picture, - points: user.points, - website1Link: user.portfolio.website1Link, - website1Title: user.portfolio.website1Title, - website1Image: user.portfolio.website1Image, - website2Link: user.portfolio.website2Link, - website2Title: user.portfolio.website2Title, - website2Image: user.portfolio.website2Image, - website3Link: user.portfolio.website3Link, - website3Title: user.portfolio.website3Title, - website3Image: user.portfolio.website3Image, - challenges: c, - ch: user.challengesHash, - moment: moment - }); - }); - } else { - req.flash('errors', { - msg: "404: We couldn't find a page with that url. Please double check the link." - }); - return res.redirect('/'); - } - }); + User.find({'profile.username': req.params.username.toLowerCase()}, function(err, user) { + if (err) { debug('Username err: ', err); next(err); } + if (user[0]) { + var user = user[0]; + Challenge.find({}, null, {sort: {challengeNumber: 1}}, function (err, c) { + res.render('account/show', { + title: 'Camper: ', + username: user.profile.username, + name: user.profile.name, + location: user.profile.location, + githubProfile: user.profile.githubProfile, + linkedinProfile: user.profile.linkedinProfile, + codepenProfile: user.profile.codepenProfile, + twitterHandle: user.profile.twitterHandle, + bio: user.profile.bio, + picture: user.profile.picture, + points: user.points, + website1Link: user.portfolio.website1Link, + website1Title: user.portfolio.website1Title, + website1Image: user.portfolio.website1Image, + website2Link: user.portfolio.website2Link, + website2Title: user.portfolio.website2Title, + website2Image: user.portfolio.website2Image, + website3Link: user.portfolio.website3Link, + website3Title: user.portfolio.website3Title, + website3Image: user.portfolio.website3Image, + challenges: c, + ch: user.challengesHash, + moment: moment + }); + }); + } else { + req.flash('errors', { + msg: "404: We couldn't find a page with that url. Please double check the link." + }); + return res.redirect('/'); + } + }); }; @@ -291,69 +321,70 @@ exports.updateProgress = function(req, res) { */ exports.postUpdateProfile = function(req, res, next) { - User.findById(req.user.id, function(err, user) { - if (err) return next(err); - var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('/account'); - } - User.findOne({ email: req.body.email }, function(err, existingEmail) { - if (err) { - return next(err); - } - var user = req.user; - if (existingEmail && existingEmail.email != user.email) { - req.flash('errors', { - msg: "An account with that email address already exists." - }); - return res.redirect('/account'); - } - User.findOne({ username: req.body.username }, function(err, existingUsername) { - if (err) { - return next(err); + // What does this do? + User.findById(req.user.id, function(err, user) { + if (err) return next(err); + var errors = req.validationErrors(); + if (errors) { + req.flash('errors', errors); + return res.redirect('/account'); } - var user = req.user; - if (existingUsername && existingUsername.profile.username !== user.profile.username) { - req.flash('errors', { - msg: 'An account with that username already exists.' - }); - return res.redirect('/account'); - } - var user = req.user; - user.email = req.body.email.trim() || ''; - user.profile.name = req.body.name.trim() || ''; - user.profile.username = req.body.username.trim() || ''; - user.profile.location = req.body.location.trim() || ''; - user.profile.githubProfile = req.body.githubProfile.trim() || ''; - user.profile.linkedinProfile = req.body.linkedinProfile.trim() || ''; - user.profile.codepenProfile = req.body.codepenProfile.trim() || ''; - user.profile.twitterHandle = req.body.twitterHandle.trim() || ''; - user.profile.bio = req.body.bio.trim() || ''; - user.profile.picture = req.body.picture.trim() || 'https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png'; - user.portfolio.website1Title = req.body.website1Title.trim() || ''; - user.portfolio.website1Link = req.body.website1Link.trim() || ''; - user.portfolio.website1Image = req.body.website1Image.trim() || ''; - user.portfolio.website2Title = req.body.website2Title.trim() || ''; - user.portfolio.website2Link = req.body.website2Link.trim() || ''; - user.portfolio.website2Image = req.body.website2Image.trim() || ''; - user.portfolio.website3Title = req.body.website3Title.trim() || ''; - user.portfolio.website3Link = req.body.website3Link.trim() || ''; - user.portfolio.website3Image = req.body.website3Image.trim() || ''; - - user.save(function (err) { + User.findOne({ email: req.body.email }, function(err, existingEmail) { if (err) { return next(err); } - req.flash('success', {msg: 'Profile information updated.'}); - res.redirect('/account'); - resources.updateUserStoryPictures(user._id.toString(), user.profile.picture); + var user = req.user; + if (existingEmail && existingEmail.email != user.email) { + req.flash('errors', { + msg: "An account with that email address already exists." + }); + return res.redirect('/account'); + } + User.findOne({ username: req.body.username }, function(err, existingUsername) { + if (err) { + return next(err); + } + var user = req.user; + if (existingUsername && existingUsername.profile.username !== user.profile.username) { + req.flash('errors', { + msg: 'An account with that username already exists.' + }); + return res.redirect('/account'); + } + user.email = req.body.email.trim() || ''; + user.profile.name = req.body.name.trim() || ''; + user.profile.username = req.body.username.trim() || ''; + user.profile.location = req.body.location.trim() || ''; + user.profile.githubProfile = req.body.githubProfile.trim() || ''; + user.profile.linkedinProfile = req.body.linkedinProfile.trim() || ''; + user.profile.codepenProfile = req.body.codepenProfile.trim() || ''; + user.profile.twitterHandle = req.body.twitterHandle.trim() || ''; + user.profile.bio = req.body.bio.trim() || ''; + user.profile.picture = req.body.picture.trim() || 'https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png'; + user.portfolio.website1Title = req.body.website1Title.trim() || ''; + user.portfolio.website1Link = req.body.website1Link.trim() || ''; + user.portfolio.website1Image = req.body.website1Image.trim() || ''; + user.portfolio.website2Title = req.body.website2Title.trim() || ''; + user.portfolio.website2Link = req.body.website2Link.trim() || ''; + user.portfolio.website2Image = req.body.website2Image.trim() || ''; + user.portfolio.website3Title = req.body.website3Title.trim() || ''; + user.portfolio.website3Link = req.body.website3Link.trim() || ''; + user.portfolio.website3Image = req.body.website3Image.trim() || ''; + + + user.save(function (err) { + if (err) { + return next(err); + } + req.flash('success', {msg: 'Profile information updated.'}); + res.redirect('/account'); + resources.updateUserStoryPictures(user._id.toString(), user.profile.picture, user.profile.username); + }); + }); }); - }); }); - }); }; /** @@ -362,29 +393,29 @@ exports.postUpdateProfile = function(req, res, next) { */ exports.postUpdatePassword = function(req, res, next) { - req.assert('password', 'Password must be at least 4 characters long').len(4); - req.assert('confirmPassword', 'Passwords do not match') - .equals(req.body.password); + req.assert('password', 'Password must be at least 4 characters long').len(4); + req.assert('confirmPassword', 'Passwords do not match') + .equals(req.body.password); - var errors = req.validationErrors(); + var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('/account'); - } + if (errors) { + req.flash('errors', errors); + return res.redirect('/account'); + } - User.findById(req.user.id, function(err, user) { - if (err) { return next(err); } + User.findById(req.user.id, function(err, user) { + if (err) { return next(err); } - user.password = req.body.password; + user.password = req.body.password; - user.save(function(err) { - if (err) { return next(err); } + user.save(function(err) { + if (err) { return next(err); } - req.flash('success', { msg: 'Password has been changed.' }); - res.redirect('/account'); + req.flash('success', { msg: 'Password has been changed.' }); + res.redirect('/account'); + }); }); - }); }; /** @@ -393,12 +424,12 @@ exports.postUpdatePassword = function(req, res, next) { */ exports.postDeleteAccount = function(req, res, next) { - User.remove({ _id: req.user.id }, function(err) { - if (err) { return next(err); } - req.logout(); - req.flash('info', { msg: 'Your account has been deleted.' }); - res.redirect('/'); - }); + User.remove({ _id: req.user.id }, function(err) { + if (err) { return next(err); } + req.logout(); + req.flash('info', { msg: 'Your account has been deleted.' }); + res.redirect('/'); + }); }; /** @@ -407,22 +438,22 @@ exports.postDeleteAccount = function(req, res, next) { */ exports.getOauthUnlink = function(req, res, next) { - var provider = req.params.provider; - User.findById(req.user.id, function(err, user) { - if (err) { return next(err); } + var provider = req.params.provider; + User.findById(req.user.id, function(err, user) { + if (err) { return next(err); } - user[provider] = undefined; - user.tokens = - _.reject(user.tokens, function(token) { - return token.kind === provider; - }); + user[provider] = undefined; + user.tokens = + _.reject(user.tokens, function(token) { + return token.kind === provider; + }); - user.save(function(err) { - if (err) { return next(err); } - req.flash('info', { msg: provider + ' account has been unlinked.' }); - res.redirect('/account'); + user.save(function(err) { + if (err) { return next(err); } + req.flash('info', { msg: provider + ' account has been unlinked.' }); + res.redirect('/account'); + }); }); - }); }; /** @@ -431,25 +462,25 @@ exports.getOauthUnlink = function(req, res, next) { */ exports.getReset = function(req, res) { - if (req.isAuthenticated()) { - return res.redirect('/'); - } - User - .findOne({ resetPasswordToken: req.params.token }) - .where('resetPasswordExpires').gt(Date.now()) - .exec(function(err, user) { - if (err) { return next(err); } - if (!user) { - req.flash('errors', { - msg: 'Password reset token is invalid or has expired.' + if (req.isAuthenticated()) { + return res.redirect('/'); + } + User + .findOne({ resetPasswordToken: req.params.token }) + .where('resetPasswordExpires').gt(Date.now()) + .exec(function(err, user) { + if (err) { return next(err); } + if (!user) { + req.flash('errors', { + msg: 'Password reset token is invalid or has expired.' + }); + return res.redirect('/forgot'); + } + res.render('account/reset', { + title: 'Password Reset', + token: req.params.token + }); }); - return res.redirect('/forgot'); - } - res.render('account/reset', { - title: 'Password Reset', - token: req.params.token - }); - }); }; /** @@ -458,72 +489,72 @@ exports.getReset = function(req, res) { */ exports.postReset = function(req, res, next) { - var errors = req.validationErrors(); + var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('back'); - } - - async.waterfall([ - function(done) { - User - .findOne({ resetPasswordToken: req.params.token }) - .where('resetPasswordExpires').gt(Date.now()) - .exec(function(err, user) { - if (err) { return next(err); } - if (!user) { - req.flash('errors', { - msg: 'Password reset token is invalid or has expired.' - }); - return res.redirect('back'); - } - - user.password = req.body.password; - user.resetPasswordToken = undefined; - user.resetPasswordExpires = undefined; - - user.save(function(err) { - if (err) { return done(err); } - req.logIn(user, function(err) { - done(err, user); - }); - }); - }); - }, - function(user, done) { - var transporter = nodemailer.createTransport({ - service: 'Mandrill', - auth: { - user: secrets.mandrill.user, - pass: secrets.mandrill.password - } - }); - var mailOptions = { - to: user.email, - from: 'Team@freecodecamp.com', - subject: 'Your Free Code Camp password has been changed', - text: [ - 'Hello,\n\n', - 'This email is confirming that you requested to', - 'reset your password for your Free Code Camp account.', - 'This is your email:', - user.email, - '\n' - ].join(' ') - }; - transporter.sendMail(mailOptions, function(err) { - if (err) { return done(err); } - req.flash('success', { - msg: 'Success! Your password has been changed.' - }); - done(); - }); + if (errors) { + req.flash('errors', errors); + return res.redirect('back'); } - ], function(err) { - if (err) { return next(err); } - res.redirect('/'); - }); + + async.waterfall([ + function(done) { + User + .findOne({ resetPasswordToken: req.params.token }) + .where('resetPasswordExpires').gt(Date.now()) + .exec(function(err, user) { + if (err) { return next(err); } + if (!user) { + req.flash('errors', { + msg: 'Password reset token is invalid or has expired.' + }); + return res.redirect('back'); + } + + user.password = req.body.password; + user.resetPasswordToken = undefined; + user.resetPasswordExpires = undefined; + + user.save(function(err) { + if (err) { return done(err); } + req.logIn(user, function(err) { + done(err, user); + }); + }); + }); + }, + function(user, done) { + var transporter = nodemailer.createTransport({ + service: 'Mandrill', + auth: { + user: secrets.mandrill.user, + pass: secrets.mandrill.password + } + }); + var mailOptions = { + to: user.email, + from: 'Team@freecodecamp.com', + subject: 'Your Free Code Camp password has been changed', + text: [ + 'Hello,\n\n', + 'This email is confirming that you requested to', + 'reset your password for your Free Code Camp account.', + 'This is your email:', + user.email, + '\n' + ].join(' ') + }; + transporter.sendMail(mailOptions, function(err) { + if (err) { return done(err); } + req.flash('success', { + msg: 'Success! Your password has been changed.' + }); + done(); + }); + } + ], function(err) { + if (err) { return next(err); } + res.redirect('/'); + }); }; /** @@ -532,12 +563,12 @@ exports.postReset = function(req, res, next) { */ exports.getForgot = function(req, res) { - if (req.isAuthenticated()) { - return res.redirect('/'); - } - res.render('account/forgot', { - title: 'Forgot Password' - }); + if (req.isAuthenticated()) { + return res.redirect('/'); + } + res.render('account/forgot', { + title: 'Forgot Password' + }); }; /** @@ -546,80 +577,80 @@ exports.getForgot = function(req, res) { */ exports.postForgot = function(req, res, next) { - var errors = req.validationErrors(); + var errors = req.validationErrors(); - if (errors) { - req.flash('errors', errors); - return res.redirect('/forgot'); - } - - async.waterfall([ - function(done) { - crypto.randomBytes(16, function(err, buf) { - if (err) { return done(err); } - var token = buf.toString('hex'); - done(null, token); - }); - }, - function(token, done) { - User.findOne({ - email: req.body.email.toLowerCase() - }, function(err, user) { - if (err) { return done(err); } - if (!user) { - req.flash('errors', { - msg: 'No account with that email address exists.' - }); - return res.redirect('/forgot'); - } - - user.resetPasswordToken = token; - user.resetPasswordExpires = Date.now() + 3600000; // 1 hour - - user.save(function(err) { - if (err) { return done(err); } - done(null, token, user); - }); - }); - }, - function(token, user, done) { - var transporter = nodemailer.createTransport({ - service: 'Mandrill', - auth: { - user: secrets.mandrill.user, - pass: secrets.mandrill.password - } - }); - var mailOptions = { - to: user.email, - from: 'Team@freecodecamp.com', - subject: 'Reset your Free Code Camp password', - text: [ - 'You are receiving this email because you (or someone else)\n', - 'requested we reset your Free Code Camp account\'s password.\n\n', - 'Please click on the following link, or paste this into your\n', - 'browser to complete the process:\n\n', - 'http://', - req.headers.host, - '/reset/', - token, - '\n\n', - 'If you did not request this, please ignore this email and\n', - 'your password will remain unchanged.\n' - ].join('') - }; - transporter.sendMail(mailOptions, function(err) { - if (err) { return done(err); } - req.flash('info', { - msg: 'An e-mail has been sent to ' + - user.email + - ' with further instructions.' - }); - done(null, 'done'); - }); + if (errors) { + req.flash('errors', errors); + return res.redirect('/forgot'); } - ], function(err) { - if (err) { return next(err); } - res.redirect('/forgot'); - }); + + async.waterfall([ + function(done) { + crypto.randomBytes(16, function(err, buf) { + if (err) { return done(err); } + var token = buf.toString('hex'); + done(null, token); + }); + }, + function(token, done) { + User.findOne({ + email: req.body.email.toLowerCase() + }, function(err, user) { + if (err) { return done(err); } + if (!user) { + req.flash('errors', { + msg: 'No account with that email address exists.' + }); + return res.redirect('/forgot'); + } + + user.resetPasswordToken = token; + user.resetPasswordExpires = Date.now() + 3600000; // 1 hour + + user.save(function(err) { + if (err) { return done(err); } + done(null, token, user); + }); + }); + }, + function(token, user, done) { + var transporter = nodemailer.createTransport({ + service: 'Mandrill', + auth: { + user: secrets.mandrill.user, + pass: secrets.mandrill.password + } + }); + var mailOptions = { + to: user.email, + from: 'Team@freecodecamp.com', + subject: 'Reset your Free Code Camp password', + text: [ + 'You are receiving this email because you (or someone else)\n', + 'requested we reset your Free Code Camp account\'s password.\n\n', + 'Please click on the following link, or paste this into your\n', + 'browser to complete the process:\n\n', + 'http://', + req.headers.host, + '/reset/', + token, + '\n\n', + 'If you did not request this, please ignore this email and\n', + 'your password will remain unchanged.\n' + ].join('') + }; + transporter.sendMail(mailOptions, function(err) { + if (err) { return done(err); } + req.flash('info', { + msg: 'An e-mail has been sent to ' + + user.email + + ' with further instructions.' + }); + done(null, 'done'); + }); + } + ], function(err) { + if (err) { return next(err); } + res.redirect('/forgot'); + }); }; diff --git a/models/Story.js b/models/Story.js index 76d95471a5..d5d163ccf1 100644 --- a/models/Story.js +++ b/models/Story.js @@ -14,6 +14,11 @@ var storySchema = new mongoose.Schema({ type: String, unique: false }, + metaDescription: { + type: String, + default: '', + unique: false + }, description: { type: String, unique: false @@ -41,18 +46,4 @@ var storySchema = new mongoose.Schema({ } }); -storySchema.pre('save', function(next) { - console.log('pre save test'); - next(); -}); - -module.exports = mongoose.model('Story', storySchema); - -/* - author: { - userId: { - type: mongoose.Schema.Types.ObjectId, - ref: 'User' - } - }, - */ +module.exports = mongoose.model('Story', storySchema); \ No newline at end of file diff --git a/package.json b/package.json index f44369004e..e18825f98f 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,10 @@ "express-flash": "^0.0.2", "express-session": "^1.9.2", "express-validator": "^2.8.0", + "font-awesome": "^4.3.0", "forever": "^0.14.1", "github-api": "^0.7.0", + "gulp-minify-css": "^0.5.1", "helmet": "^0.5.3", "jade": "^1.8.0", "less": "^1.7.5", @@ -59,6 +61,7 @@ "passport-twitter": "^1.0.2", "ramda": "^0.10.0", "request": "^2.53.0", + "sanitize-html": "^1.6.1", "sitemap": "^0.7.4", "uglify-js": "^2.4.15", "validator": "^3.22.1", @@ -71,6 +74,7 @@ "chai": "^1.10.0", "gulp": "^3.8.8", "gulp-inject": "^1.0.2", + "gulp-minify-css": "^0.5.1", "gulp-nodemon": "^1.0.4", "mocha": "^2.0.1", "multiline": "^1.0.1", diff --git a/public/css/lib/font-awesome-4.3.0/css/font-awesome.css b/public/css/lib/font-awesome-4.3.0/css/font-awesome.css new file mode 100644 index 0000000000..2dcdc22072 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/css/font-awesome.css @@ -0,0 +1,1801 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.3.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-genderless:before, +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} diff --git a/public/css/lib/font-awesome-4.3.0/css/font-awesome.min.css b/public/css/lib/font-awesome-4.3.0/css/font-awesome.min.css new file mode 100644 index 0000000000..24fcc04c4e --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/public/css/lib/font-awesome-4.3.0/fonts/FontAwesome.otf b/public/css/lib/font-awesome-4.3.0/fonts/FontAwesome.otf new file mode 100644 index 0000000000..f7936cc1e7 Binary files /dev/null and b/public/css/lib/font-awesome-4.3.0/fonts/FontAwesome.otf differ diff --git a/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.eot b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000..33b2bb8005 Binary files /dev/null and b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.eot differ diff --git a/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.svg b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..1ee89d4368 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.svg @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000..ed9372f8ea Binary files /dev/null and b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf differ diff --git a/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000..8b280b98fa Binary files /dev/null and b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff differ diff --git a/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..3311d58514 Binary files /dev/null and b/public/css/lib/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 differ diff --git a/public/css/lib/font-awesome-4.3.0/less/animated.less b/public/css/lib/font-awesome-4.3.0/less/animated.less new file mode 100644 index 0000000000..66ad52a5ba --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/public/css/lib/font-awesome-4.3.0/less/bordered-pulled.less b/public/css/lib/font-awesome-4.3.0/less/bordered-pulled.less new file mode 100644 index 0000000000..0c90eb5672 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/bordered-pulled.less @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/public/css/lib/font-awesome-4.3.0/less/core.less b/public/css/lib/font-awesome-4.3.0/less/core.less new file mode 100644 index 0000000000..f814f1e17e --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/core.less @@ -0,0 +1,13 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} diff --git a/public/css/lib/font-awesome-4.3.0/less/fixed-width.less b/public/css/lib/font-awesome-4.3.0/less/fixed-width.less new file mode 100644 index 0000000000..110289f2f4 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/public/css/lib/font-awesome-4.3.0/less/font-awesome.less b/public/css/lib/font-awesome-4.3.0/less/font-awesome.less new file mode 100644 index 0000000000..1f45c63d15 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/font-awesome.less @@ -0,0 +1,17 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; diff --git a/public/css/lib/font-awesome-4.3.0/less/icons.less b/public/css/lib/font-awesome-4.3.0/less/icons.less new file mode 100644 index 0000000000..c265de5a68 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/icons.less @@ -0,0 +1,596 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-genderless:before, +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } diff --git a/public/css/lib/font-awesome-4.3.0/less/larger.less b/public/css/lib/font-awesome-4.3.0/less/larger.less new file mode 100644 index 0000000000..c9d646770e --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/public/css/lib/font-awesome-4.3.0/less/list.less b/public/css/lib/font-awesome-4.3.0/less/list.less new file mode 100644 index 0000000000..0b440382f6 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/public/css/lib/font-awesome-4.3.0/less/mixins.less b/public/css/lib/font-awesome-4.3.0/less/mixins.less new file mode 100644 index 0000000000..c97f4604ca --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/mixins.less @@ -0,0 +1,27 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} + +.fa-icon-rotate(@degrees, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} diff --git a/public/css/lib/font-awesome-4.3.0/less/path.less b/public/css/lib/font-awesome-4.3.0/less/path.less new file mode 100644 index 0000000000..9211e66597 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); +// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/public/css/lib/font-awesome-4.3.0/less/rotated-flipped.less b/public/css/lib/font-awesome-4.3.0/less/rotated-flipped.less new file mode 100644 index 0000000000..f6ba81475b --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/public/css/lib/font-awesome-4.3.0/less/stacked.less b/public/css/lib/font-awesome-4.3.0/less/stacked.less new file mode 100644 index 0000000000..fc53fb0e7a --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/public/css/lib/font-awesome-4.3.0/less/variables.less b/public/css/lib/font-awesome-4.3.0/less/variables.less new file mode 100644 index 0000000000..d526064c84 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/less/variables.less @@ -0,0 +1,606 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.3.0"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-ambulance: "\f0f9"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-o: "\f133"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-credit-card: "\f09d"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f1db"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-html5: "\f13b"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map-marker: "\f041"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-openid: "\f19b"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f1a7"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-stop: "\f04d"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wifi: "\f1eb"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-yahoo: "\f19e"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/public/css/lib/font-awesome-4.3.0/scss/_animated.scss b/public/css/lib/font-awesome-4.3.0/scss/_animated.scss new file mode 100644 index 0000000000..8a020dbfff --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_bordered-pulled.scss b/public/css/lib/font-awesome-4.3.0/scss/_bordered-pulled.scss new file mode 100644 index 0000000000..9d3fdf3a0b --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_bordered-pulled.scss @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_core.scss b/public/css/lib/font-awesome-4.3.0/scss/_core.scss new file mode 100644 index 0000000000..5a2db9d561 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_core.scss @@ -0,0 +1,13 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_fixed-width.scss b/public/css/lib/font-awesome-4.3.0/scss/_fixed-width.scss new file mode 100644 index 0000000000..b221c98133 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_icons.scss b/public/css/lib/font-awesome-4.3.0/scss/_icons.scss new file mode 100644 index 0000000000..fbcfe81237 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_icons.scss @@ -0,0 +1,596 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-genderless:before, +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } diff --git a/public/css/lib/font-awesome-4.3.0/scss/_larger.scss b/public/css/lib/font-awesome-4.3.0/scss/_larger.scss new file mode 100644 index 0000000000..41e9a8184a --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/public/css/lib/font-awesome-4.3.0/scss/_list.scss b/public/css/lib/font-awesome-4.3.0/scss/_list.scss new file mode 100644 index 0000000000..7d1e4d54d6 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_mixins.scss b/public/css/lib/font-awesome-4.3.0/scss/_mixins.scss new file mode 100644 index 0000000000..6b7f160931 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_mixins.scss @@ -0,0 +1,27 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_path.scss b/public/css/lib/font-awesome-4.3.0/scss/_path.scss new file mode 100644 index 0000000000..bb457c23a8 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_rotated-flipped.scss b/public/css/lib/font-awesome-4.3.0/scss/_rotated-flipped.scss new file mode 100644 index 0000000000..a3558fd09c --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/public/css/lib/font-awesome-4.3.0/scss/_stacked.scss b/public/css/lib/font-awesome-4.3.0/scss/_stacked.scss new file mode 100644 index 0000000000..aef7403660 --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/public/css/lib/font-awesome-4.3.0/scss/_variables.scss b/public/css/lib/font-awesome-4.3.0/scss/_variables.scss new file mode 100644 index 0000000000..9b7210e23b --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/_variables.scss @@ -0,0 +1,606 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.3.0" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-ambulance: "\f0f9"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-ban: "\f05e"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-o: "\f133"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-credit-card: "\f09d"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edit: "\f044"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-square: "\f199"; +$fa-var-eraser: "\f12d"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f1db"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-html5: "\f13b"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map-marker: "\f041"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-openid: "\f19b"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f1a7"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-stop: "\f04d"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wifi: "\f1eb"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-yahoo: "\f19e"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/public/css/lib/font-awesome-4.3.0/scss/font-awesome.scss b/public/css/lib/font-awesome-4.3.0/scss/font-awesome.scss new file mode 100644 index 0000000000..388ac6b0cd --- /dev/null +++ b/public/css/lib/font-awesome-4.3.0/scss/font-awesome.scss @@ -0,0 +1,17 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; diff --git a/public/css/main.less b/public/css/main.less index 4af818a206..4f13e21270 100644 --- a/public/css/main.less +++ b/public/css/main.less @@ -4,10 +4,6 @@ @import "lib/animate.min.less"; @import "lib/bootstrap/variables"; -//fonts.googleapis.com/css?family=Lato:300); -@import url(http://fonts.googleapis.com/css?family=Lato:400); -@import url(http://fonts.googleapis.com/css?family=Inconsolata); - html,body,div,span,a,li,td,th { font-family: 'Lato', sans-serif; font-weight: 300; @@ -521,9 +517,9 @@ thead { .points-on-top { color: #eee; - font-size: 50px; + font-size: 35px; z-index: 2; - width: 50%; + width: 60%; margin: 0 auto; position: relative; top: 50%; @@ -755,7 +751,7 @@ iframe.iphone { margin-bottom: 50px; } -.btn-primary-ghost{ +.btn-primary-ghost { background: transparent; color: @brand-primary; @@ -801,6 +797,10 @@ iframe.iphone { text-align: center; } +.big-ion-up-arrow #upvote, #reply-to-main-post { + cursor: pointer; +} + .story-up-votes { padding-top: 0px; margin-left: -5px; @@ -825,6 +825,11 @@ iframe.iphone { height: 50px; } +.url-preview { + max-width: 250px; + max-height: 250px; +} + //.media ~ .media .media-body-wrapper:nth-child(odd) { // background-color: #e5e5e5; //} @@ -833,11 +838,19 @@ iframe.iphone { width: 100%; } -.comment-to-comment-formgroup { - width: 50%; - height: 35px; +.story-headline { + font-size: 20px; } +#reply-to-main-post, #upvote { + cursor: pointer; +} + +.btn-no-shadow { + -webkit-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0); + -moz-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0); + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0); +} //uncomment this to see the dimensions of all elements outlined in red //* { diff --git a/public/fonts/FontAwesome.otf b/public/fonts/FontAwesome.otf new file mode 100644 index 0000000000..f7936cc1e7 Binary files /dev/null and b/public/fonts/FontAwesome.otf differ diff --git a/public/fonts/fontawesome-webfont.eot b/public/fonts/fontawesome-webfont.eot index 84677bc0c5..33b2bb8005 100644 Binary files a/public/fonts/fontawesome-webfont.eot and b/public/fonts/fontawesome-webfont.eot differ diff --git a/public/fonts/fontawesome-webfont.svg b/public/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..1ee89d4368 --- /dev/null +++ b/public/fonts/fontawesome-webfont.svg @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/fontawesome-webfont.ttf b/public/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000..ed9372f8ea Binary files /dev/null and b/public/fonts/fontawesome-webfont.ttf differ diff --git a/public/fonts/fontawesome-webfont.woff b/public/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000..8b280b98fa Binary files /dev/null and b/public/fonts/fontawesome-webfont.woff differ diff --git a/public/fonts/fontawesome-webfont.woff2 b/public/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..3311d58514 Binary files /dev/null and b/public/fonts/fontawesome-webfont.woff2 differ diff --git a/public/js/main.js b/public/js/main.js index 6ae8098236..2bbd295da7 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,5 +1,5 @@ $(document).ready(function() { - challengeName = typeof challengeName !== undefined ? challengeName : 'Untitled'; + var challengeName = typeof challengeName !== undefined ? challengeName : 'Untitled'; if (challengeName) { ga('send', 'event', 'Challenge', 'load', challengeName); } @@ -149,8 +149,6 @@ $(document).ready(function() { .done(function (data, textStatus, xhr) { $('#storyRank').text(data.rank); }); - } else { - console.log('Can\'t upvote because you\'ve already upvoted'); } }; $('#upvote').on('click', upvoteHandler); @@ -160,7 +158,6 @@ $(document).ready(function() { var link = $('#story-url').val(); var headline = $('#story-title').val(); var description = $('#description-box').val(); - console.log(link, headline, description); var userDataForUpvote = { upVotedBy: user._id, upVotedByUsername: user.profile.username @@ -173,7 +170,7 @@ $(document).ready(function() { headline: headline, timePosted: Date.now(), description: description, - + storyMetaDescription: storyMetaDescription, rank: 1, upVotes: [userDataForUpvote], author: { @@ -182,7 +179,7 @@ $(document).ready(function() { username: user.profile.username }, comments: [], - image: '' + image: storyImage } }) .fail(function (xhr, textStatus, errorThrown) { @@ -199,7 +196,6 @@ $(document).ready(function() { var commentSubmitButtonHandler = function commentSubmitButtonHandler() { $('comment-button').unbind('click'); var data = $('#comment-box').val(); - console.log('comment clicked'); $('#comment-button').attr('disabled', 'disabled'); $.post('/stories/comment/', @@ -341,4 +337,4 @@ profileValidation.directive('uniqueEmail', ['$http', function($http) { }); } } -}]); \ No newline at end of file +}]); diff --git a/seed_data/bonfires.json b/seed_data/bonfires.json index 8b30d40bc3..c298c97db7 100644 --- a/seed_data/bonfires.json +++ b/seed_data/bonfires.json @@ -621,7 +621,7 @@ "name": "Cash Register", "difficulty": "4.02", "description": [ - "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument. cid is a 2d array listing available currency. Return the string \"Insufficient Funds\" if change due is less than the cash-in-drawer. Return the string \"Closed\" if cash-in-drawer is equal to the change due. Otherwise, return change in coin and bills, sorted in highest to lowest order." + "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", "cid is a 2d array listing available currency.", "Return the string \"Insufficient Funds\" if cash-in-drawer is less than the change due. Return the string \"Closed\" if cash-in-drawer is equal to the change due.", "Otherwise, return change in coin and bills, sorted in highest to lowest order." ], "challengeSeed": "function drawer(price, cash, cid) {\n var change;\r\n // Here is your change, ma'am.\r\n return change;\r\n}\r\n\r\n// Example cash-in-drawer array:\r\n// [['PENNY', 1.01],\r\n// ['NICKEL', 2.05],\r\n// ['DIME', 3.10],\r\n// ['QUARTER', 4.25],\r\n// ['ONE', 90.00],\r\n// ['FIVE', 55.00],\r\n// ['TEN', 20.00],\r\n// ['TWENTY', 60.00],\r\n// ['ONE HUNDRED', 100.00]]\n\ndrawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]);", "tests": [ diff --git a/seed_data/seed.js b/seed_data/seed.js index cbf537efa9..9387b55337 100644 --- a/seed_data/seed.js +++ b/seed_data/seed.js @@ -1,21 +1,17 @@ require('dotenv').load(); var Challenge = require('../models/Challenge.js'), Bonfire = require('../models/Bonfire.js'), - Comment = require('../models/Comment.js'), - Story = require('../models/Story.js'), Courseware = require('../models/Courseware.js'), mongoose = require('mongoose'), secrets = require('../config/secrets'), challenges = require('./challenges.json'), coursewares = require('./coursewares.json'), - stories = require('./stories.json'), - bonfires = require('./bonfires.json'), - comments = require('./comments.json'); + bonfires = require('./bonfires.json'); mongoose.connect(secrets.db); var counter = 0; -var offerings = 5; +var offerings = 3; var CompletionMonitor = function() { counter++; @@ -78,37 +74,3 @@ Courseware.remove({}, function(err, data) { }); console.log('coursewares'); }); - -Story.remove({}, function(err, data) { - if (err) { - console.error(err); - } else { - console.log('Deleted ', data); - } - Story.create(stories, function(err, data) { - if (err) { - console.log(err); - } else { - console.log('Saved ', data); - } - CompletionMonitor(); - }); - console.log('stories'); -}); - -Comment.remove({}, function(err, data) { - if (err) { - console.error(err); - } else { - console.log('Deleted ', data); - } - Comment.create(comments, function(err, data) { - if (err) { - console.log(err); - } else { - console.log('Saved ', data); - } - CompletionMonitor(); - }); - console.log('stories'); -}); \ No newline at end of file diff --git a/seed_data/stories.json b/seed_data/stories.json deleted file mode 100644 index b16ac0d19b..0000000000 --- a/seed_data/stories.json +++ /dev/null @@ -1,3082 +0,0 @@ -[ - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - }, - { - "headline": "Learn to Code and Become a Software Engineer | Free Code Camp", - "link": "http://www.freecodecamp.com", - "description": "The website we're building these \"forums\" for!", - "author": { - "username": "terakilobyte", - "userId": "54f6262394f355ce1d969d9f", - "picture": "https://pbs.twimg.com/profile_images/2563218307/67rpczkpeyo1xem5vto3.gif" - }, - "storyLink": "learn to code and become a software engineer free code camp", - "image": "", - "comments": [ - ], - "upVotes": [ - { - "upVotedByUsername": "terakilobyte", - "upVotedBy": "54f6262394f355ce1d969d9f" - } - ], - "rank": 1, - "timePosted": 1425806926395.0 - } -] \ No newline at end of file diff --git a/views/account/email-signup.jade b/views/account/email-signup.jade index ab3f821f95..9c4fe0e337 100644 --- a/views/account/email-signup.jade +++ b/views/account/email-signup.jade @@ -40,7 +40,7 @@ block content | Your usernames must be 20 characters or fewer. .form-group .col-sm-6.col-sm-offset-3 - input.form-control(type='password', ng-model='password', name='password', id='password', placeholder='password', required, ng-minlength=5) + input.form-control(type='password', ng-model='password', name='password', id='password', placeholder='password', required, ng-minlength=8) .col-sm-6.col-sm-offset-3(ng-cloak, ng-show="signupForm.password.$error.minlength && !signupForm.password.$pristine") alert(type='danger') span.ion-close-circled diff --git a/views/account/show.jade b/views/account/show.jade index 8194c4b107..20e9ef49cd 100644 --- a/views/account/show.jade +++ b/views/account/show.jade @@ -6,20 +6,17 @@ block content h1 #{username}'s portfolio .panel-body if (user && user.profile.username === username) - .col-xs-12 - .text-center - a.btn.btn-big.btn-primary(href="/account") Update my public portfolio - br + .col-xs-12 + .text-center + a.btn.btn-big.btn-primary(href="/account") Update my public portfolio + br .row .col-xs-12 .col-xs-12.col-sm-12.col-md-5 if picture img.img-center.img-responsive.public-profile-img(src=picture) else - if (user) - img.img-center.img-responsive.public-profile-img(src='#{user.gravatar(200)}') - else - img.img-center.img-responsive.public-profile-img(src='https://gravatar.com/avatar/d704cc72a5cd0bfa482ee71f4d557daa?s=200&d=retro') + img.img-center.img-responsive.public-profile-img(src='https://s3.amazonaws.com/freecodecamp/favicons/apple-touch-icon-180x180.png') h1.text-center.negative-5 - if (twitterHandle) a.ion-social-twitter.text-primary(title="@#{username}'s Twitter Profile", href="http://twitter.com/#{twitterHandle}", target='_blank') @@ -109,4 +106,4 @@ block content tr td= challenges[challenge.challengeNumber].name td= moment(ch[challenge.challengeNumber], 'X').format("MMM DD, YYYY") - br \ No newline at end of file + br diff --git a/views/bonfire/show.jade b/views/bonfire/show.jade index dda2c7712e..63e6be052e 100644 --- a/views/bonfire/show.jade +++ b/views/bonfire/show.jade @@ -80,7 +80,7 @@ block content br form.code .form-group.codeMirrorView - textarea#codeOutput + textarea#codeOutput(style='display: none;') br #testSuite br @@ -96,7 +96,7 @@ block content #mainEditorPanel form.code .form-group.codeMirrorView - textarea#codeEditor(autofocus=true) + textarea#codeEditor(autofocus=true, style='display: none;') script(src='/js/lib/bonfire/bonfireFramework_v0.1.2.js') diff --git a/views/coursewares/showHTML.jade b/views/coursewares/showHTML.jade index c094f534c3..4db63b544b 100644 --- a/views/coursewares/showHTML.jade +++ b/views/coursewares/showHTML.jade @@ -67,7 +67,7 @@ block content #mainEditorPanel form.code .form-group.codeMirrorView - textarea#codeEditor(autofocus=true) + textarea#codeEditor(autofocus=true, style='display: none;') .col-md-4.col-lg-3 .hidden-xs.hidden-sm img.iphone-position(src="https://s3.amazonaws.com/freecodecamp/iphone6-frame.png") diff --git a/views/coursewares/showJS.jade b/views/coursewares/showJS.jade index fe60338b8a..68a82cbfb1 100644 --- a/views/coursewares/showJS.jade +++ b/views/coursewares/showJS.jade @@ -38,7 +38,7 @@ block content br form.code .form-group.codeMirrorView - textarea#codeOutput + textarea#codeOutput(style='display: none;') br #testSuite br @@ -52,7 +52,7 @@ block content #mainEditorPanel form.code .form-group.codeMirrorView - textarea#codeEditor(autofocus=true) + textarea#codeEditor(autofocus=true, style='display: none;') script(src='/js/lib/coursewares/coursewaresJSFramework.js') #complete-courseware-dialog.modal(tabindex='-1') .modal-dialog.animated.zoomIn.fast-animation diff --git a/views/home.jade b/views/home.jade index 035e33483f..70da30cc7e 100644 --- a/views/home.jade +++ b/views/home.jade @@ -7,19 +7,19 @@ block content .row .col-xs-12.col-sm-12.col-md-3 h3.nowrap Get Connected - img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg', title='Get great references and connections to help you get a job') + img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', title='Get great references and connections to help you get a job') p.landing-p Join a community of busy, motivated professionals. .col-xs-12.col-sm-12.col-md-3 h3.nowrap Learn JavaScript - img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_learn.svg', title='Learn to code') + img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_learn.svg.gz', title='Learn to code') p.landing-p Work together on Full Stack JavaScript coding challenges. .col-xs-12.col-sm-12.col-md-3 h3.nowrap Build your Portfolio - img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg', title='Build a portfolio of apps for nonprofits') + img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', title='Build a portfolio of apps for nonprofits') p.landing-p Build apps that solve real problems for real people. .col-xs-12.col-sm-12.col-md-3 h3.nowrap Help Nonprofits - img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg', title='Help nonprofits') + img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', title='Help nonprofits') p.landing-p Give nonprofits a boost by empowering them with code. .big-break a.btn.btn-cta.signup-btn(href="/login") Start learning to code (it's free) diff --git a/views/layout-wide.jade b/views/layout-wide.jade index 89bfd95e5c..a320f210a5 100644 --- a/views/layout-wide.jade +++ b/views/layout-wide.jade @@ -2,8 +2,10 @@ doctype html html(ng-app='profileValidation', lang='en') head include partials/universal-head + != css('main') body.no-top-and-bottom-margins.full-screen-body-background + include partials/css-cdns include partials/navbar-wide include partials/flash block content diff --git a/views/layout.jade b/views/layout.jade index a1fcddc371..e50689c0a7 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -2,8 +2,9 @@ doctype html html(ng-app='profileValidation', lang='en') head include partials/universal-head - + != css('main') body.top-and-bottom-margins + include partials/css-cdns include partials/navbar-narrow .container include partials/flash diff --git a/views/partials/css-cdns.jade b/views/partials/css-cdns.jade new file mode 100644 index 0000000000..6f76033d43 --- /dev/null +++ b/views/partials/css-cdns.jade @@ -0,0 +1,35 @@ +script. + var cb = function() { + var l = document.createElement('link'); + l.rel = 'stylesheet'; + l.href = '//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css'; + var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h); + }; + var raf = requestAnimationFrame || mozRequestAnimationFrame || + webkitRequestAnimationFrame || msRequestAnimationFrame; + if (raf) raf(cb); + else window.addEventListener('load', cb); + + var cb = function () { + var l = document.createElement('link'); + l.rel = 'stylesheet'; + l.href = '//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css'; + var h = document.getElementsByTagName('head')[0]; + h.parentNode.insertBefore(l, h); + }; + var raf = requestAnimationFrame || mozRequestAnimationFrame || + webkitRequestAnimationFrame || msRequestAnimationFrame; + if (raf) raf(cb); + else window.addEventListener('load', cb); + + var cb = function () { + var l = document.createElement('link'); + l.rel = 'stylesheet'; + l.href = 'http://fonts.googleapis.com/css?family=Lato:400|Inconsolata'; + var h = document.getElementsByTagName('head')[0]; + h.parentNode.insertBefore(l, h); + }; + var raf = requestAnimationFrame || mozRequestAnimationFrame || + webkitRequestAnimationFrame || msRequestAnimationFrame; + if (raf) raf(cb); + else window.addEventListener('load', cb); \ No newline at end of file diff --git a/views/partials/navbar.jade b/views/partials/navbar.jade index c670c35e11..f457302b67 100644 --- a/views/partials/navbar.jade +++ b/views/partials/navbar.jade @@ -8,7 +8,7 @@ span.icon-bar span.icon-bar a.navbar-brand(href='/') - img.img-responsive.nav-logo(src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt='learn to code javascript at Free Code Camp logo') + img.img-responsive.nav-logo(src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz', alt='learn to code javascript at Free Code Camp logo') .collapse.navbar-collapse ul.nav.navbar-nav.navbar-right.hamburger-dropdown li diff --git a/views/partials/universal-head.jade b/views/partials/universal-head.jade index 4a959d3d2d..10308e0065 100644 --- a/views/partials/universal-head.jade +++ b/views/partials/universal-head.jade @@ -1,15 +1,12 @@ script(src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js") script(src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js") script(src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.12.0/ui-bootstrap-tpls.min.js") -link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css') -link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css') include meta title #{title} | Free Code Camp meta(charset='utf-8') meta(http-equiv='X-UA-Compatible', content='IE=edge') meta(name='viewport', content='width=device-width, initial-scale=1.0') meta(name='csrf-token', content=_csrf) -!= css('main') script. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), diff --git a/views/resources/chat.jade b/views/resources/chat.jade index e8dff714b0..6850041dc3 100644 --- a/views/resources/chat.jade +++ b/views/resources/chat.jade @@ -5,7 +5,7 @@ block content li Create a GitHub Account  a(href="http://github.com/join", target='_blank') here | . - li Download the chat room app on   + li Click "Login with GitHub" in the chat window below or download the chat room app for   a(href="https://update.gitter.im/win/latest") Windows | ,  a(href="https://update.gitter.im/osx/latest") Mac @@ -19,4 +19,4 @@ block content li Keep the chat room open while you code so that you can meet friends and ask for help. .col-xs-12 .embed-responsive.embed-responsive-16by9.gitter-imbed - iframe(src='http://www.gitter.im/freecodecamp/freecodecamp', frameborder='0', scrolling='no') \ No newline at end of file + iframe(src='https://www.gitter.im/freecodecamp/freecodecamp', frameborder='0', scrolling='no') \ No newline at end of file diff --git a/views/resources/learn-to-code.jade b/views/resources/learn-to-code.jade index 4391ea2209..9b8d36c6b7 100644 --- a/views/resources/learn-to-code.jade +++ b/views/resources/learn-to-code.jade @@ -37,7 +37,7 @@ block content .row .col-xs-12.col-sm-12.col-md-6 .panel.panel-info - .panel-heading.landing-panel-heading.text-center News + .panel-heading.landing-panel-heading.text-center Announcements .panel-body .landing-panel-body.text-center for announcement in announcements diff --git a/views/resources/sitemap.jade b/views/resources/sitemap.jade index 84839975bc..0fe1ab6da6 100644 --- a/views/resources/sitemap.jade +++ b/views/resources/sitemap.jade @@ -109,4 +109,20 @@ urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9") loc #{appUrl}/#{challenge.challengeNumber} lastmod= now changefreq weekly - priority= 0.5 \ No newline at end of file + priority= 0.5 + + //- Stories + each story in stories + url + loc #{appUrl}/#{story.storyLink} + lastmod= now + changefreq daily + priority= 0.9 + +//- Nonprofit + each nonprofit in nonprofits + url + loc #{appUrl}/#{nonprofit.nonprofitLink} + lastmod= now + changefreq daily + priority= 0.9 \ No newline at end of file diff --git a/views/stories/comments.jade b/views/stories/comments.jade index 83f9f9f75f..53ae1f12b3 100644 --- a/views/stories/comments.jade +++ b/views/stories/comments.jade @@ -7,14 +7,12 @@ var sentinel = 0; var renderComments = function renderComments(comments, containerSelector, level) { var commentDetails; - var backgroundColorForCommentNestingLevel = level % 2 !== 0 ? 'odd' : 'even'; R.forEach(function displayComments(comment) { $.ajax({ type: 'GET', url: '/stories/comments/' + comment, error: function (xhr, textStatus, errorThrown) { - console.log('got error'); commentDetails = { error: true, body: 'There seems to be a problem fetching this comment.' @@ -22,11 +20,10 @@ }, success: function (data, textStatus, xhr) { commentDetails = data; - console.log(commentDetails.commentOn); var div = document.createElement('div'); $(div) .html( - '
' + + '
' + '
' + "" + '' + commentDetails.author.username + '' + @@ -37,9 +34,9 @@ '

' + commentDetails.body + '

' + '
' + '
' + + "Reply · " + "commented " + moment(commentDetails.commentOn).fromNow() + " by " + - "@" + commentDetails.author.username + " · " + - "Reply" + + "@" + commentDetails.author.username + "" + '
' + '
' + '
' + @@ -60,26 +57,33 @@ $('.comment-a-comment').on('click', 'a', function () { $(this).unbind('click'); $('.comment-to-comment-formgroup').empty(); + $('#initial-comment-submit').addClass('hidden-element'); var div = document.createElement('div'); var commentId = $(this).attr('id'); $(div).html( - "
" + - "" + - '
' + - '' + - "" + - '
' + - - "
" + "
" + + '
' + + "
" + + "" + + "" + + "" + + "" + + "
" + + "
" + + "
" + + "
" ) .addClass('row') .appendTo($(this).closest('.media-body-wrapper')); var text_max = 140; - $('#textarea_feedback').html(text_max + ' characters remaining'); - $('#comment-to-comment-textarea').keyup(function () { - var text_length = $('#comment-to-comment-textarea').val().length; + $('#textarea-comment-feedback').html(text_max + ' characters remaining'); + $('#comment-to-comment-textinput').keyup(function (e) { + if (e.which === 13 || e === 13) { + $('#submit-comment-to-comment').click(); + } + var text_length = $('#comment-to-comment-textinput').val().length; var text_remaining = text_max - text_length; - $('#textarea_feedback').html(text_remaining + ' characters remaining'); + $('#textarea-comment-feedback').html(text_remaining + ' characters remaining'); }); var submitCommentToCommentHandler = function submitCommentToCommentHandler() { $('#submit-comment-to-comment').unbind('click'); @@ -87,7 +91,7 @@ { data: { associatedPost: commentId, - body: $('#comment-to-comment-textarea').val(), + body: $('#comment-to-comment-textinput').val(), author: { picture: user.profile.picture, userId: user._id, diff --git a/views/stories/hot-stories.jade b/views/stories/hot-stories.jade index 9949b3deb6..a7d96781bf 100644 --- a/views/stories/hot-stories.jade +++ b/views/stories/hot-stories.jade @@ -22,22 +22,25 @@ $(div) .html( "
" + - "
" + + "

" + (i + 1) + - "

" + + "" + "
" + - "" + + "" + + "" + + "" + "
" + "
" + "
" + - "
" + - "" - + data[i].storyLink + + "
" + + "" + + data[i].headline + "" + "
" + "
" + "" + - rank + " points, posted " + + "discuss · " + + rank + (rank > 1 ? " points" : " point") + " · posted " + moment(data[i].timePosted).fromNow() + " by @" + data[i].author.username + " " + "" + diff --git a/views/stories/new-stories.jade b/views/stories/new-stories.jade index 93b9b25e58..97a6aa02d6 100644 --- a/views/stories/new-stories.jade +++ b/views/stories/new-stories.jade @@ -22,24 +22,27 @@ $(div) .html( "
" + - "
" + + "

" + (i + 1) + - "

" + + "" + "
" + - "" + + "" + + "" + + "" + "
" + "
" + "
" + - "
" + - "" - + data[i].storyLink + + "
" + + "" + + data[i].headline + "" + "
" + "
" + "" + - rank + " points, posted " + + "discuss · " + + rank + (rank > 1 ? " points" : " point") + " · posted " + moment(data[i].timePosted).fromNow() + - " by @" + data[i].author.username + " " + + " by @" + data[i].author.username + " " +" " + "" + "
" + "
" + diff --git a/views/stories/preliminary-submit.jade b/views/stories/preliminary-submit.jade index 293445f2c5..31ef779fcd 100644 --- a/views/stories/preliminary-submit.jade +++ b/views/stories/preliminary-submit.jade @@ -15,14 +15,12 @@ script. $('#story-url').on('keypress', function(e) { if (e.which === 13 || e === 13) { - console.log('enter pressed'); $('#preliminary-story-submit').click(); } }); var preliminaryStorySubmit = function preliminaryStorySubmit() { var storyURL = $('#story-url').val(); - console.log(storyURL); $('#preliminary-story-submit').attr('disabled', 'disabled'); $.post('/stories/preliminary', @@ -36,11 +34,13 @@ }) .done(function (data, textStatus, xhr) { if (data.alreadyPosted) { - window.location = '/stories/' + data.storyURL; + window.location = data.storyURL; } else { - window.location = '/stories/submit/url=' + + window.location = '/stories/submit/new-story?url=' + encodeURIComponent(data.storyURL) + - '&title=' + encodeURIComponent(data.storyTitle); + '&title=' + encodeURIComponent(data.storyTitle) + + '&image=' + encodeURIComponent(data.storyImage) + + '&description=' + encodeURIComponent(data.storyMetaDescription); } }); } diff --git a/views/stories/search-stories.jade b/views/stories/search-stories.jade index 8a56a0664d..9574bf4b9f 100644 --- a/views/stories/search-stories.jade +++ b/views/stories/search-stories.jade @@ -1,9 +1,10 @@ .col-xs-12 .spacer + h1.text-center Search is coming soon .input-group input#searchArea.big-text-field.field-responsive.form-control(type='text', placeholder='Search our stories', autofocus) span.input-group-btn - button#searchbutton.btn.btn-big.btn-primary.btn-responsive(type='button') Search + button.disabled#searchbutton.btn.btn-big.btn-primary.btn-responsive(type='button') Search .spacer #story-list @@ -21,7 +22,6 @@ script. }); function executeSearch() { $('#stories').empty(); - console.log('clicked or enter button'); var searchTerm = $('#searchArea').val(); var getLinkedName = function getLinkedName(name) { return name.toLowerCase().replace(/\s/g, '-'); @@ -33,7 +33,6 @@ script. } }) .fail(function (xhr, textStatus, errorThrown) { - console.log('failure'); }) .done(function (data, textStatus, xhr) { for (var i = 0; i < data.length; i++) { diff --git a/views/stories/show.jade b/views/stories/show.jade index b6c99affef..2d02ff0077 100644 --- a/views/stories/show.jade +++ b/views/stories/show.jade @@ -5,6 +5,7 @@ var comments = !{JSON.stringify(comments)}; var upVotes = !{JSON.stringify(upVotes)}; var user = !{JSON.stringify(user)}; + var image = !{JSON.stringify(image)}; .spacer h3.row.col-xs-12 @@ -22,34 +23,53 @@ .col-xs-7.col-sm-10 .col-xs-12.negative-28 - a(href="#{link}") + a(href="#{link} target='_blank") h3= title h6 - .col-xs-12.negative-28 + .col-xs-12.positive-15.hidden-element#image-display + .media + .media-left + img.url-preview.media-object(src="#{image}", alt="#{storyMetaDescription}") + .media-body + .col-xs-12.col-sm-12.col-md-6 + h4= storyMetaDescription + .col-xs-12 h4= description .negative-5 + a#reply-to-main-post.btn.btn-no-shadow.btn-primary.btn-xs.btn-primary-ghost Reply + |  ·  span Posted #{timeAgo} span  by  - a(href="/" + author.username)@#{author.username} - |  ·  - a#reply-to-main-post Reply + a(href="/" + author.username) @#{author.username} + + .col-xs-12#reply-area - - - .hidden-element#initial-comment-submit form.form-horizontal.control-label-story-submission - .col-xs-12 - .form-group - h3.row - textarea#comment-box.form-control(name="comment-box", rows=5) - h3.row.text-center - .col-xs-6.col-xs-offset-3 - button.btn.btn-block.btn-primary#comment-button Comment + .col-xs-12 + .input-group + input#comment-box.big-text-field.field-responsive.form-control(type='text', placeholder='Enter your reply', autofocus) + span.input-group-btn + button#comment-button.btn.btn-big.btn-primary.btn-responsive(type='button') Send + span.spacer.pull-left#textarea_feedback script. + if (image) { + $('#image-display').removeClass('hidden-element') + } $('#reply-to-main-post').on('click', function() { $('#initial-comment-submit').removeClass('hidden-element'); $(this).unbind('click'); + $('.comment-to-comment-formgroup').empty(); + }); + var text_max = 140; + $('#textarea_feedback').html(text_max + ' characters remaining'); + $('#comment-box').keyup(function (e) { + if (e.which === 13 || e === 13) { + $('#comment-button').click(); + } + var text_length = $('#comment-box').val().length; + var text_remaining = text_max - text_length; + $('#textarea_feedback').html(text_remaining + ' characters remaining'); }); include ./comments diff --git a/views/stories/submit-story.jade b/views/stories/submit-story.jade index cd67e38cd3..6e9e8f8b7b 100644 --- a/views/stories/submit-story.jade +++ b/views/stories/submit-story.jade @@ -3,6 +3,8 @@ script. var storyURL = !{JSON.stringify(storyURL)}; var storyTitle = !{JSON.stringify(storyTitle)}; + var storyImage = !{JSON.stringify(storyImage)}; + var storyMetaDescription = !{JSON.stringify(storyMetaDescription)}; form.form-horizontal.control-label-story-submission#story-submission-form .col-xs-12 .form-group @@ -14,16 +16,39 @@ .col-xs-12.col-md-1 label.control-label.control-label-story-submission(for='name') Title .col-xs-12.col-md-11 - input#story-title.form-control(placeholder='Type a headline for your link here', name='Title', autofocus) + input#story-title.form-control(placeholder='Type a headline for your link here', name='Title', maxlength='90' autofocus) .form-group .col-xs-12.col-md-1 label.control-label.control-label-story-submission(for='name') Description .col-xs-12.col-md-11 - textarea#description-box.form-control(name="comment-box", rows=5, placeholder="Start off the discussion with a description of your post") - - .spacer + input#description-box.form-control(name="comment-box", placeholder="Start off the discussion with a description of your post" maxlength='140') .form-group - button.btn.btn-big.btn-block.btn-primary#story-submit Submit + .col-xs-12.col-md-offset-1 + span.pull-left#textarea_feedback + .form-group + .col-xs-11.col-md-offset-1 + .hidden-element#image-display + .media + .media-left + img.url-preview.media-object(src="#{storyImage}", alt="#{storyMetaDescription}") + .media-body + .col-xs-12 + p= storyMetaDescription + .spacer + .row + .form-group + + button.btn.btn-big.btn-block.btn-primary#story-submit Submit script. $('#story-url').val(storyURL).attr('disabled', 'disabled'); - $('#story-title').val(storyTitle); \ No newline at end of file + $('#story-title').val(storyTitle); + if (storyImage) { + $('#image-display').removeClass('hidden-element'); + } + var text_max = 140; + $('#textarea_feedback').html(text_max + ' characters remaining'); + $('#description-box').keyup(function () { + var text_length = $('#description-box').val().length; + var text_remaining = text_max - text_length; + $('#textarea_feedback').html(text_remaining + ' characters remaining'); + });