diff --git a/bower.json b/bower.json
index 701e6ad2..162dc0f9 100644
--- a/bower.json
+++ b/bower.json
@@ -16,11 +16,11 @@
"tests"
],
"dependencies": {
- "fetch": "~0.11.0",
+ "fetch": "~1.0",
"alertify.js": "alertifyjs#~1.0.5",
"store2": "~2.3.2",
- "Autolinker.js": "~0.24.0",
+ "Autolinker.js": "^0.27.0",
"marked": "~0.3.5",
- "sanitize-css": "^3.2.0"
+ "sanitize-css": "^4.1.0"
}
}
diff --git a/gulpfile.js b/gulpfile.js
index f6077a1c..edd1af0b 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,47 +1,22 @@
+'use strict';
+
var gulp = require('gulp');
+var sass = require('gulp-sass');
var zopfli = require('gulp-zopfli');
var brotli = require('gulp-brotli');
-var elixir = require('laravel-elixir');
-/*
- |--------------------------------------------------------------------------
- | Elixir Asset Management
- |--------------------------------------------------------------------------
- |
- | Elixir provides a clean, fluent API for defining some basic Gulp tasks
- | for your Laravel application. By default, we are compiling the Sass
- | file for our application, as well as publishing vendor resources.
- |
- */
-
-elixir(function(mix) {
- mix.sass('global.scss', 'public/assets/css');
- mix.copy('resources/assets/js', 'public/assets/js');
- mix.version([
- //hand-made css
- 'assets/css/global.css',
- 'assets/css/projects.css',
- //hand-made js
- 'assets/js/form-save.js',
- 'assets/js/links.js',
- 'assets/js/maps.js',
- 'assets/js/newplace.js',
- 'assets/js/newnote.js',
- //bower components
- 'assets/bower/alertify.css',
- 'assets/bower/sanitize.css',
- 'assets/bower/fetch.js',
- 'assets/bower/alertify.js',
- 'assets/bower/store2.min.js',
- 'assets/bower/Autolinker.min.js',
- 'assets/bower/marked.min.js',
- //prism
- 'assets/prism/prism.js',
- 'assets/prism/prism.css',
- ]);
+gulp.task('sass', function () {
+ return gulp.src('./resources/assets/sass/global.scss')
+ .pipe(sass().on('error', sass.logError))
+ .pipe(gulp.dest('./public/assets/css'));
});
-gulp.task('bower', function() {
+gulp.task('js-assets', function () {
+ return gulp.src(['resources/assets/js/**/*'])
+ .pipe(gulp.dest('./public/assets/js'));
+});
+
+gulp.task('bower', function () {
//copy JS files
gulp.src([
'bower_components/fetch/fetch.js',
@@ -61,43 +36,43 @@ gulp.task('bower', function() {
gulp.task('compress', function () {
//hand-made css
- gulp.src('public/build/assets/css/*.css')
+ gulp.src('public/assets/css/*.css')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/css/'));
- gulp.src('public/build/assets/css/*.css')
+ .pipe(gulp.dest('public/assets/css/'));
+ gulp.src('public/assets/css/*.css')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/css/'));
+ .pipe(gulp.dest('public/assets/css/'));
//hand-made js
- gulp.src('public/build/assets/js/*.js')
+ gulp.src('public/assets/js/*.js')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/js/'));
- gulp.src('public/build/assets/js/*.js')
+ .pipe(gulp.dest('public/assets/js/'));
+ gulp.src('public/assets/js/*.js')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/js/'));
+ .pipe(gulp.dest('public/assets/js/'));
//bower components
- gulp.src('public/build/assets/bower/*.css')
+ gulp.src('public/assets/bower/*.css')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/bower/'));
- gulp.src('public/build/assets/bower/*.js')
+ .pipe(gulp.dest('public/assets/bower/'));
+ gulp.src('public/assets/bower/*.js')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/bower/'));
- gulp.src('public/build/assets/bower/*.css')
+ .pipe(gulp.dest('public/assets/bower/'));
+ gulp.src('public/assets/bower/*.css')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/bower/'));
- gulp.src('public/build/assets/bower/*.js')
+ .pipe(gulp.dest('public/assets/bower/'));
+ gulp.src('public/assets/bower/*.js')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/bower/'));
+ .pipe(gulp.dest('public/assets/bower/'));
//prism
- gulp.src('public/build/assets/prism/*.css')
+ gulp.src('public/assets/prism/*.css')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/prism/'));
- gulp.src('public/build/assets/prism/*.js')
+ .pipe(gulp.dest('public/assets/prism/'));
+ gulp.src('public/assets/prism/*.js')
.pipe(zopfli({ format: 'gzip', append: true }))
- .pipe(gulp.dest('public/build/assets/prism/'));
- gulp.src('public/build/assets/prism/*.css')
+ .pipe(gulp.dest('public/assets/prism/'));
+ gulp.src('public/assets/prism/*.css')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/prism/'));
- gulp.src('public/build/assets/prism/*.js')
+ .pipe(gulp.dest('public/assets/prism/'));
+ gulp.src('public/assets/prism/*.js')
.pipe(brotli.compress({mode: 1, quality: 11}))
- .pipe(gulp.dest('public/build/assets/prism/'));
+ .pipe(gulp.dest('public/assets/prism/'));
});
diff --git a/package.json b/package.json
index f7ba2e4d..615c9c2c 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,8 @@
"devDependencies": {
"gulp": "~3.9",
"gulp-brotli": "^1.0.1",
+ "gulp-sass": "^2.3.2",
"gulp-zopfli": "^1.0.0",
- "laravel-elixir": "^6.0.0-2",
"lint-staged": "^1.0.1",
"pre-commit": "^1.1.3",
"stylelint": "^6.6.0",
@@ -15,8 +15,6 @@
},
"private": true,
"scripts": {
- "prod": "gulp --production",
- "dev": "gulp watch",
"lint-staged": "lint-staged",
"stylelint-staged": "stylelint --syntax=scss"
},
diff --git a/public/assets/bower/Autolinker.min.js b/public/assets/bower/Autolinker.min.js
index 4e73c279..0f875b64 100644
--- a/public/assets/bower/Autolinker.min.js
+++ b/public/assets/bower/Autolinker.min.js
@@ -1,10 +1,10 @@
/*!
* Autolinker.js
- * 0.24.1
+ * 0.27.0
*
* Copyright(c) 2016 Gregory Jacobs
* MIT License
*
* https://github.com/gregjacobs/Autolinker.js
*/
-!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Autolinker=e()}(this,function(){var t=function(t){t=t||{},this.urls=this.normalizeUrlsCfg(t.urls),this.email="boolean"==typeof t.email?t.email:!0,this.twitter="boolean"==typeof t.twitter?t.twitter:!0,this.phone="boolean"==typeof t.phone?t.phone:!0,this.hashtag=t.hashtag||!1,this.newWindow="boolean"==typeof t.newWindow?t.newWindow:!0,this.stripPrefix="boolean"==typeof t.stripPrefix?t.stripPrefix:!0;var e=this.hashtag;if(e!==!1&&"twitter"!==e&&"facebook"!==e&&"instagram"!==e)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||"",this.replaceFn=t.replaceFn||null,this.htmlParser=null,this.matchers=null,this.tagBuilder=null};return t.prototype={constructor:t,normalizeUrlsCfg:function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"==typeof t.schemeMatches?t.schemeMatches:!0,wwwMatches:"boolean"==typeof t.wwwMatches?t.wwwMatches:!0,tldMatches:"boolean"==typeof t.tldMatches?t.tldMatches:!0}},normalizeTruncateCfg:function(e){return"number"==typeof e?{length:e,location:"end"}:t.Util.defaults(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})},parse:function(t){for(var e=this.getHtmlParser(),r=e.parse(t),n=0,s=[],i=0,a=r.length;a>i;i++){var o=r[i],h=o.getType();if("element"===h&&"a"===o.getTagName())o.isClosing()?n=Math.max(n-1,0):n++;else if("text"===h&&0===n){var c=this.parseText(o.getText(),o.getOffset());s.push.apply(s,c)}}return s=this.compactMatches(s),this.hashtag||(s=s.filter(function(t){return"hashtag"!==t.getType()})),this.email||(s=s.filter(function(t){return"email"!==t.getType()})),this.phone||(s=s.filter(function(t){return"phone"!==t.getType()})),this.twitter||(s=s.filter(function(t){return"twitter"!==t.getType()})),this.urls.schemeMatches||(s=s.filter(function(t){return"url"!==t.getType()||"scheme"!==t.getUrlMatchType()})),this.urls.wwwMatches||(s=s.filter(function(t){return"url"!==t.getType()||"www"!==t.getUrlMatchType()})),this.urls.tldMatches||(s=s.filter(function(t){return"url"!==t.getType()||"tld"!==t.getUrlMatchType()})),s},compactMatches:function(t){t.sort(function(t,e){return t.getOffset()-e.getOffset()});for(var e=0;es;s++){for(var a=r[s].parseMatches(t),o=0,h=a.length;h>o;o++)a[o].setOffset(e+a[o].getOffset());n.push.apply(n,a)}return n},link:function(t){if(!t)return"";for(var e=this.parse(t),r=[],n=0,s=0,i=e.length;i>s;s++){var a=e[s];r.push(t.substring(n,a.getOffset())),r.push(this.createMatchReturnVal(a)),n=a.getOffset()+a.getMatchedText().length}return r.push(t.substring(n)),r.join("")},createMatchReturnVal:function(e){var r;if(this.replaceFn&&(r=this.replaceFn.call(this,this,e)),"string"==typeof r)return r;if(r===!1)return e.getMatchedText();if(r instanceof t.HtmlTag)return r.toAnchorString();var n=this.getTagBuilder(),s=n.build(e);return s.toAnchorString()},getHtmlParser:function(){var e=this.htmlParser;return e||(e=this.htmlParser=new t.htmlParser.HtmlParser),e},getMatchers:function(){if(this.matchers)return this.matchers;var e=t.matcher,r=[new e.Hashtag({serviceName:this.hashtag}),new e.Email,new e.Phone,new e.Twitter,new e.Url({stripPrefix:this.stripPrefix})];return this.matchers=r},getTagBuilder:function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new t.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e}},t.link=function(e,r){var n=new t(r);return n.link(e)},t.match={},t.matcher={},t.htmlParser={},t.truncate={},t.Util={abstractMethod:function(){throw"abstract"},trimRegex:/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,assign:function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t},defaults:function(t,e){for(var r in e)e.hasOwnProperty(r)&&void 0===t[r]&&(t[r]=e[r]);return t},extend:function(e,r){var n=e.prototype,s=function(){};s.prototype=n;var i;i=r.hasOwnProperty("constructor")?r.constructor:function(){n.constructor.apply(this,arguments)};var a=i.prototype=new s;return a.constructor=i,a.superclass=n,delete r.constructor,t.Util.assign(a,r),i},ellipsis:function(t,e,r){return t.length>e&&(r=null==r?"..":r,t=t.substring(0,e-r.length)+r),t},indexOf:function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var r=0,n=t.length;n>r;r++)if(t[r]===e)return r;return-1},splitAndCapture:function(t,e){for(var r,n=[],s=0;r=e.exec(t);)n.push(t.substring(s,r.index)),n.push(r[0]),s=r.index+r[0].length;return n.push(t.substring(s)),n},trim:function(t){return t.replace(this.trimRegex,"")}},t.HtmlTag=t.Util.extend(Object,{whitespaceRegex:/\s+/,constructor:function(e){t.Util.assign(this,e),this.innerHtml=this.innerHtml||this.innerHTML},setTagName:function(t){return this.tagName=t,this},getTagName:function(){return this.tagName||""},setAttr:function(t,e){var r=this.getAttrs();return r[t]=e,this},getAttr:function(t){return this.getAttrs()[t]},setAttrs:function(e){var r=this.getAttrs();return t.Util.assign(r,e),this},getAttrs:function(){return this.attrs||(this.attrs={})},setClass:function(t){return this.setAttr("class",t)},addClass:function(e){for(var r,n=this.getClass(),s=this.whitespaceRegex,i=t.Util.indexOf,a=n?n.split(s):[],o=e.split(s);r=o.shift();)-1===i(a,r)&&a.push(r);return this.getAttrs()["class"]=a.join(" "),this},removeClass:function(e){for(var r,n=this.getClass(),s=this.whitespaceRegex,i=t.Util.indexOf,a=n?n.split(s):[],o=e.split(s);a.length&&(r=o.shift());){var h=i(a,r);-1!==h&&a.splice(h,1)}return this.getAttrs()["class"]=a.join(" "),this},getClass:function(){return this.getAttrs()["class"]||""},hasClass:function(t){return-1!==(" "+this.getClass()+" ").indexOf(" "+t+" ")},setInnerHtml:function(t){return this.innerHtml=t,this},getInnerHtml:function(){return this.innerHtml||""},toAnchorString:function(){var t=this.getTagName(),e=this.buildAttrsStr();return e=e?" "+e:"",["<",t,e,">",this.getInnerHtml(),"",t,">"].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r+'="'+t[r]+'"');return e.join(" ")}}),t.RegexLib=function(){var t="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",e="0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",r=t+e,n=new RegExp("["+r+".\\-]*["+r+"\\-]"),s=/(?:international|construction|contractors|enterprises|photography|productions|foundation|immobilien|industries|management|properties|technology|christmas|community|directory|education|equipment|institute|marketing|solutions|vacations|bargains|boutique|builders|catering|cleaning|clothing|computer|democrat|diamonds|graphics|holdings|lighting|partners|plumbing|supplies|training|ventures|academy|careers|company|cruises|domains|exposed|flights|florist|gallery|guitars|holiday|kitchen|neustar|okinawa|recipes|rentals|reviews|shiksha|singles|support|systems|agency|berlin|camera|center|coffee|condos|dating|estate|events|expert|futbol|kaufen|luxury|maison|monash|museum|nagoya|photos|repair|report|social|supply|tattoo|tienda|travel|viajes|villas|vision|voting|voyage|actor|build|cards|cheap|codes|dance|email|glass|house|mango|ninja|parts|photo|press|shoes|solar|today|tokyo|tools|watch|works|aero|arpa|asia|best|bike|blue|buzz|camp|club|cool|coop|farm|fish|gift|guru|info|jobs|kiwi|kred|land|limo|link|menu|mobi|moda|name|pics|pink|post|qpon|rich|ruhr|sexy|tips|vote|voto|wang|wien|wiki|zone|bar|bid|biz|cab|cat|ceo|com|edu|gov|int|kim|mil|net|onl|org|pro|pub|red|tel|uno|wed|xxx|xyz|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)\b/;return{alphaNumericCharsStr:r,domainNameRegex:n,tldRegex:s}}(),t.AnchorTagBuilder=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},build:function(e){return new t.HtmlTag({tagName:"a",attrs:this.createAttrs(e.getType(),e.getAnchorHref()),innerHtml:this.processAnchorText(e.getAnchorText())})},createAttrs:function(t,e){var r={href:e},n=this.createCssClass(t);return n&&(r["class"]=n),this.newWindow&&(r.target="_blank"),r},createCssClass:function(t){var e=this.className;return e?e+" "+e+"-"+t:""},processAnchorText:function(t){return t=this.doTruncate(t)},doTruncate:function(e){var r=this.truncate;if(!r)return e;var n=r.length,s=r.location;return"smart"===s?t.truncate.TruncateSmart(e,n,".."):"middle"===s?t.truncate.TruncateMiddle(e,n,".."):t.truncate.TruncateEnd(e,n,"..")}}),t.htmlParser.HtmlParser=t.Util.extend(Object,{htmlRegex:function(){var t=/!--([\s\S]+?)--/,e=/[0-9a-zA-Z][0-9a-zA-Z:]*/,r=/[^\s\0"'>\/=\x01-\x1F\x7F]+/,n=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,s=r.source+"(?:\\s*=\\s*"+n.source+")?";return new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",s,"|",n.source+")",")*",">",")","|","(?:","<(/)?","(?:",t.source,"|","(?:","("+e.source+")","(?:","\\s*",s,")*","\\s*/?",")",")",">",")"].join(""),"gi")}(),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(t){for(var e,r,n=this.htmlRegex,s=0,i=[];null!==(e=n.exec(t));){var a=e[0],o=e[3],h=e[1]||e[4],c=!!e[2],u=e.index,l=t.substring(s,u);l&&(r=this.parseTextAndEntityNodes(s,l),i.push.apply(i,r)),o?i.push(this.createCommentNode(u,a,o)):i.push(this.createElementNode(u,a,h,c)),s=u+a.length}if(si;i+=2){var o=s[i],h=s[i+1];o&&(n.push(this.createTextNode(e,o)),e+=o.length),h&&(n.push(this.createEntityNode(e,h)),e+=h.length)}return n},createCommentNode:function(e,r,n){return new t.htmlParser.CommentNode({offset:e,text:r,comment:t.Util.trim(n)})},createElementNode:function(e,r,n,s){return new t.htmlParser.ElementNode({offset:e,text:r,tagName:n.toLowerCase(),closing:s})},createEntityNode:function(e,r){return new t.htmlParser.EntityNode({offset:e,text:r})},createTextNode:function(e,r){return new t.htmlParser.TextNode({offset:e,text:r})}}),t.htmlParser.HtmlNode=t.Util.extend(Object,{offset:void 0,text:void 0,constructor:function(e){t.Util.assign(this,e)},getType:t.Util.abstractMethod,getOffset:function(){return this.offset},getText:function(){return this.text}}),t.htmlParser.CommentNode=t.Util.extend(t.htmlParser.HtmlNode,{comment:"",getType:function(){return"comment"},getComment:function(){return this.comment}}),t.htmlParser.ElementNode=t.Util.extend(t.htmlParser.HtmlNode,{tagName:"",closing:!1,getType:function(){return"element"},getTagName:function(){return this.tagName},isClosing:function(){return this.closing}}),t.htmlParser.EntityNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"entity"}}),t.htmlParser.TextNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"text"}}),t.match.Match=t.Util.extend(Object,{constructor:function(t,e){this.matchedText=t,this.offset=e},getType:t.Util.abstractMethod,getMatchedText:function(){return this.matchedText},setOffset:function(t){this.offset=t},getOffset:function(){return this.offset},getAnchorHref:t.Util.abstractMethod,getAnchorText:t.Util.abstractMethod}),t.match.Email=t.Util.extend(t.match.Match,{constructor:function(e,r,n){t.match.Match.prototype.constructor.call(this,e,r),this.email=n},getType:function(){return"email"},getEmail:function(){return this.email},getAnchorHref:function(){return"mailto:"+this.email},getAnchorText:function(){return this.email}}),t.match.Hashtag=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s){t.match.Match.prototype.constructor.call(this,e,r),this.serviceName=n,this.hashtag=s},getType:function(){return"hashtag"},getServiceName:function(){return this.serviceName},getHashtag:function(){return this.hashtag},getAnchorHref:function(){var t=this.serviceName,e=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+e;case"facebook":return"https://www.facebook.com/hashtag/"+e;case"instagram":return"https://instagram.com/explore/tags/"+e;default:throw new Error("Unknown service name to point hashtag to: ",t)}},getAnchorText:function(){return"#"+this.hashtag}}),t.match.Phone=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s){t.match.Match.prototype.constructor.call(this,e,r),this.number=n,this.plusSign=s},getType:function(){return"phone"},getNumber:function(){return this.number},getAnchorHref:function(){return"tel:"+(this.plusSign?"+":"")+this.number},getAnchorText:function(){return this.matchedText}}),t.match.Twitter=t.Util.extend(t.match.Match,{constructor:function(e,r,n){t.match.Match.prototype.constructor.call(this,e,r),this.twitterHandle=n},getType:function(){return"twitter"},getTwitterHandle:function(){return this.twitterHandle},getAnchorHref:function(){return"https://twitter.com/"+this.twitterHandle},getAnchorText:function(){return"@"+this.twitterHandle}}),t.match.Url=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s,i,a,o){t.match.Match.prototype.constructor.call(this,e,r),this.urlMatchType=s,this.url=n,this.protocolUrlMatch=i,this.protocolRelativeMatch=a,this.stripPrefix=o},urlPrefixRegex:/^(https?:\/\/)?(www\.)?/i,protocolRelativeRegex:/^\/\//,protocolPrepended:!1,getType:function(){return"url"},getUrlMatchType:function(){return this.urlMatchType},getUrl:function(){var t=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(t=this.url="http://"+t,this.protocolPrepended=!0),t},getAnchorHref:function(){var t=this.getUrl();return t.replace(/&/g,"&")},getAnchorText:function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix&&(t=this.stripUrlPrefix(t)),t=this.removeTrailingSlash(t)},stripUrlPrefix:function(t){return t.replace(this.urlPrefixRegex,"")},stripProtocolRelativePrefix:function(t){return t.replace(this.protocolRelativeRegex,"")},removeTrailingSlash:function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t}}),t.matcher.Matcher=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},parseMatches:t.Util.abstractMethod}),t.matcher.Email=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=t.RegexLib.alphaNumericCharsStr,r=new RegExp("["+e+"\\-;:&=+$.,]+@"),n=t.RegexLib.domainNameRegex,s=t.RegexLib.tldRegex;return new RegExp([r.source,n.source,"\\.",s.source].join(""),"gi")}(),parseMatches:function(e){for(var r,n=this.matcherRegex,s=[];null!==(r=n.exec(e));){var i=r[0];s.push(new t.match.Email(i,r.index,i))}return s}}),t.matcher.Hashtag=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("#[_"+t.RegexLib.alphaNumericCharsStr+"]{1,139}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.nonWordCharRegex,i=this.serviceName,a=[];null!==(r=n.exec(e));){var o=r.index,h=e.charAt(o-1);if(0===o||s.test(h)){var c=r[0],u=r[0].slice(1);a.push(new t.match.Hashtag(c,o,i,u))}}return a}}),t.matcher.Phone=t.Util.extend(t.matcher.Matcher,{matcherRegex:/(?:(\+)?\d{1,3}[-\040.])?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]\d{4}/g,parseMatches:function(e){for(var r,n=this.matcherRegex,s=[];null!==(r=n.exec(e));){var i=r[0],a=i.replace(/\D/g,""),o=!!r[1];s.push(new t.match.Phone(i,r.index,a,o))}return s}}),t.matcher.Twitter=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("@[_"+t.RegexLib.alphaNumericCharsStr+"]{1,20}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.nonWordCharRegex,i=[];null!==(r=n.exec(e));){var a=r.index,o=e.charAt(a-1);if(0===a||s.test(o)){var h=r[0],c=r[0].slice(1);i.push(new t.match.Twitter(h,a,c))}}return i}}),t.matcher.Url=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=/(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\/\/)(?!\d+\/?)(?:\/\/)?)/,r=/(?:www\.)/,n=t.RegexLib.domainNameRegex,s=t.RegexLib.tldRegex,i=t.RegexLib.alphaNumericCharsStr,a=new RegExp("["+i+"\\-+&@#/%=~_()|'$*\\[\\]?!:,.;]*["+i+"\\-+&@#/%=~_()|'$*\\[\\]]");return new RegExp(["(?:","(",e.source,n.source,")","|","(","(//)?",r.source,n.source,")","|","(","(//)?",n.source+"\\.",s.source,")",")","(?:"+a.source+")?"].join(""),"gi")}(),wordCharRegExp:/\w/,openParensRe:/\(/g,closeParensRe:/\)/g,parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.stripPrefix,i=[];null!==(r=n.exec(e));){var a=r[0],o=r[1],h=r[2],c=r[3],u=r[5],l=r.index,g=c||u,f=e.charAt(l-1);if(t.matcher.UrlMatchValidator.isValid(a,o)&&!(l>0&&"@"===f||l>0&&g&&this.wordCharRegExp.test(f))){if(this.matchHasUnbalancedClosingParen(a))a=a.substr(0,a.length-1);else{var m=this.matchHasInvalidCharAfterTld(a,o);m>-1&&(a=a.substr(0,m))}var p=o?"scheme":h?"www":"tld",d=!!o;i.push(new t.match.Url(a,l,a,p,d,!!g,s))}}return i},matchHasUnbalancedClosingParen:function(t){var e=t.charAt(t.length-1);if(")"===e){var r=t.match(this.openParensRe),n=t.match(this.closeParensRe),s=r&&r.length||0,i=n&&n.length||0;if(i>s)return!0}return!1},matchHasInvalidCharAfterTld:function(t,e){if(!t)return-1;var r=0;e&&(r=t.indexOf(":"),t=t.slice(r));var n=/^((.?\/\/)?[A-Za-z0-9\u00C0-\u017F\.\-]*[A-Za-z0-9\u00C0-\u017F\-]\.[A-Za-z]+)/,s=n.exec(t);return null===s?-1:(r+=s[1].length,t=t.slice(s[1].length),/^[^.A-Za-z:\/?#]/.test(t)?r:-1)}}),t.matcher.UrlMatchValidator={hasFullProtocolRegex:/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,uriSchemeRegex:/^[A-Za-z][-.+A-Za-z0-9]*:/,hasWordCharAfterProtocolRegex:/:[^\s]*?[A-Za-z\u00C0-\u017F]/,isValid:function(t,e){return!(e&&!this.isValidUriScheme(e)||this.urlMatchDoesNotHaveProtocolOrDot(t,e)||this.urlMatchDoesNotHaveAtLeastOneWordChar(t,e))},isValidUriScheme:function(t){var e=t.match(this.uriSchemeRegex)[0].toLowerCase();return"javascript:"!==e&&"vbscript:"!==e},urlMatchDoesNotHaveProtocolOrDot:function(t,e){return!(!t||e&&this.hasFullProtocolRegex.test(e)||-1!==t.indexOf("."))},urlMatchDoesNotHaveAtLeastOneWordChar:function(t,e){return t&&e?!this.hasWordCharAfterProtocolRegex.test(t):!1}},t.truncate.TruncateEnd=function(e,r,n){return t.Util.ellipsis(e,r,n)},t.truncate.TruncateMiddle=function(t,e,r){if(t.length<=e)return t;var n=e-r.length,s="";return n>0&&(s=t.substr(-1*Math.floor(n/2))),(t.substr(0,Math.ceil(n/2))+r+s).substr(0,e)},t.truncate.TruncateSmart=function(t,e,r){var n=function(t){var e={},r=t,n=r.match(/^([a-z]+):\/\//i);return n&&(e.scheme=n[1],r=r.substr(n[0].length)),n=r.match(/^(.*?)(?=(\?|#|\/|$))/i),n&&(e.host=n[1],r=r.substr(n[0].length)),n=r.match(/^\/(.*?)(?=(\?|#|$))/i),n&&(e.path=n[1],r=r.substr(n[0].length)),n=r.match(/^\?(.*?)(?=(#|$))/i),n&&(e.query=n[1],r=r.substr(n[0].length)),n=r.match(/^#(.*?)$/i),n&&(e.fragment=n[1]),e},s=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},i=function(t,e){var n=e/2,s=Math.ceil(n),i=-1*Math.floor(n),a="";return 0>i&&(a=t.substr(i)),t.substr(0,s)+r+a};if(t.length<=e)return t;var a=e-r.length,o=n(t);if(o.query){var h=o.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);h&&(o.query=o.query.substr(0,h[1].length),t=s(o))}if(t.length<=e)return t;if(o.host&&(o.host=o.host.replace(/^www\./,""),t=s(o)),t.length<=e)return t;var c="";if(o.host&&(c+=o.host),c.length>=a)return o.host.length==e?(o.host.substr(0,e-r.length)+r).substr(0,e):i(c,a).substr(0,e);var u="";if(o.path&&(u+="/"+o.path),o.query&&(u+="?"+o.query),u){if((c+u).length>=a){if((c+u).length==e)return(c+u).substr(0,e);var l=a-c.length;return(c+i(u,l)).substr(0,e)}c+=u}if(o.fragment){var g="#"+o.fragment;if((c+g).length>=a){if((c+g).length==e)return(c+g).substr(0,e);var f=a-c.length;return(c+i(g,f)).substr(0,e)}c+=g}if(o.scheme&&o.host){var m=o.scheme+"://";if((c+m).length0&&(p=c.substr(-1*Math.floor(a/2))),(c.substr(0,Math.ceil(a/2))+r+p).substr(0,e)},t});
\ No newline at end of file
+!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Autolinker=e()}(this,function(){var t=function(e){e=e||{},this.version=t.version,this.urls=this.normalizeUrlsCfg(e.urls),this.email="boolean"==typeof e.email?e.email:!0,this.twitter="boolean"==typeof e.twitter?e.twitter:!0,this.phone="boolean"==typeof e.phone?e.phone:!0,this.hashtag=e.hashtag||!1,this.newWindow="boolean"==typeof e.newWindow?e.newWindow:!0,this.stripPrefix="boolean"==typeof e.stripPrefix?e.stripPrefix:!0;var r=this.hashtag;if(r!==!1&&"twitter"!==r&&"facebook"!==r&&"instagram"!==r)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(e.truncate),this.className=e.className||"",this.replaceFn=e.replaceFn||null,this.htmlParser=null,this.matchers=null,this.tagBuilder=null};return t.link=function(e,r){var a=new t(r);return a.link(e)},t.version="0.27.0",t.prototype={constructor:t,normalizeUrlsCfg:function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"==typeof t.schemeMatches?t.schemeMatches:!0,wwwMatches:"boolean"==typeof t.wwwMatches?t.wwwMatches:!0,tldMatches:"boolean"==typeof t.tldMatches?t.tldMatches:!0}},normalizeTruncateCfg:function(e){return"number"==typeof e?{length:e,location:"end"}:t.Util.defaults(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})},parse:function(t){for(var e=this.getHtmlParser(),r=e.parse(t),a=0,n=[],i=0,s=r.length;s>i;i++){var o=r[i],c=o.getType();if("element"===c&&"a"===o.getTagName())o.isClosing()?a=Math.max(a-1,0):a++;else if("text"===c&&0===a){var h=this.parseText(o.getText(),o.getOffset());n.push.apply(n,h)}}return n=this.compactMatches(n),n=this.removeUnwantedMatches(n)},compactMatches:function(t){t.sort(function(t,e){return t.getOffset()-e.getOffset()});for(var e=0;en;n++){for(var s=r[n].parseMatches(t),o=0,c=s.length;c>o;o++)s[o].setOffset(e+s[o].getOffset());a.push.apply(a,s)}return a},link:function(t){if(!t)return"";for(var e=this.parse(t),r=[],a=0,n=0,i=e.length;i>n;n++){var s=e[n];r.push(t.substring(a,s.getOffset())),r.push(this.createMatchReturnVal(s)),a=s.getOffset()+s.getMatchedText().length}return r.push(t.substring(a)),r.join("")},createMatchReturnVal:function(e){var r;if(this.replaceFn&&(r=this.replaceFn.call(this,this,e)),"string"==typeof r)return r;if(r===!1)return e.getMatchedText();if(r instanceof t.HtmlTag)return r.toAnchorString();var a=e.buildTag();return a.toAnchorString()},getHtmlParser:function(){var e=this.htmlParser;return e||(e=this.htmlParser=new t.htmlParser.HtmlParser),e},getMatchers:function(){if(this.matchers)return this.matchers;var e=t.matcher,r=this.getTagBuilder(),a=[new e.Hashtag({tagBuilder:r,serviceName:this.hashtag}),new e.Email({tagBuilder:r}),new e.Phone({tagBuilder:r}),new e.Twitter({tagBuilder:r}),new e.Url({tagBuilder:r,stripPrefix:this.stripPrefix})];return this.matchers=a},getTagBuilder:function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new t.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e}},t.match={},t.matcher={},t.htmlParser={},t.truncate={},t.Util={abstractMethod:function(){throw"abstract"},trimRegex:/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,assign:function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t},defaults:function(t,e){for(var r in e)e.hasOwnProperty(r)&&void 0===t[r]&&(t[r]=e[r]);return t},extend:function(e,r){var a=e.prototype,n=function(){};n.prototype=a;var i;i=r.hasOwnProperty("constructor")?r.constructor:function(){a.constructor.apply(this,arguments)};var s=i.prototype=new n;return s.constructor=i,s.superclass=a,delete r.constructor,t.Util.assign(s,r),i},ellipsis:function(t,e,r){return t.length>e&&(r=null==r?"..":r,t=t.substring(0,e-r.length)+r),t},indexOf:function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var r=0,a=t.length;a>r;r++)if(t[r]===e)return r;return-1},remove:function(t,e){for(var r=t.length-1;r>=0;r--)e(t[r])===!0&&t.splice(r,1)},splitAndCapture:function(t,e){for(var r,a=[],n=0;r=e.exec(t);)a.push(t.substring(n,r.index)),a.push(r[0]),n=r.index+r[0].length;return a.push(t.substring(n)),a},trim:function(t){return t.replace(this.trimRegex,"")}},t.HtmlTag=t.Util.extend(Object,{whitespaceRegex:/\s+/,constructor:function(e){t.Util.assign(this,e),this.innerHtml=this.innerHtml||this.innerHTML},setTagName:function(t){return this.tagName=t,this},getTagName:function(){return this.tagName||""},setAttr:function(t,e){var r=this.getAttrs();return r[t]=e,this},getAttr:function(t){return this.getAttrs()[t]},setAttrs:function(e){var r=this.getAttrs();return t.Util.assign(r,e),this},getAttrs:function(){return this.attrs||(this.attrs={})},setClass:function(t){return this.setAttr("class",t)},addClass:function(e){for(var r,a=this.getClass(),n=this.whitespaceRegex,i=t.Util.indexOf,s=a?a.split(n):[],o=e.split(n);r=o.shift();)-1===i(s,r)&&s.push(r);return this.getAttrs()["class"]=s.join(" "),this},removeClass:function(e){for(var r,a=this.getClass(),n=this.whitespaceRegex,i=t.Util.indexOf,s=a?a.split(n):[],o=e.split(n);s.length&&(r=o.shift());){var c=i(s,r);-1!==c&&s.splice(c,1)}return this.getAttrs()["class"]=s.join(" "),this},getClass:function(){return this.getAttrs()["class"]||""},hasClass:function(t){return-1!==(" "+this.getClass()+" ").indexOf(" "+t+" ")},setInnerHtml:function(t){return this.innerHtml=t,this},getInnerHtml:function(){return this.innerHtml||""},toAnchorString:function(){var t=this.getTagName(),e=this.buildAttrsStr();return e=e?" "+e:"",["<",t,e,">",this.getInnerHtml(),"",t,">"].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r+'="'+t[r]+'"');return e.join(" ")}}),t.RegexLib=function(){var t="A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",e="0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",r=t+e,a=new RegExp("["+r+".\\-]*["+r+"\\-]"),n=/(?:travelersinsurance|sandvikcoromant|kerryproperties|cancerresearch|weatherchannel|kerrylogistics|spreadbetting|international|wolterskluwer|lifeinsurance|construction|pamperedchef|scholarships|versicherung|bridgestone|creditunion|kerryhotels|investments|productions|blackfriday|enterprises|lamborghini|photography|motorcycles|williamhill|playstation|contractors|barclaycard|accountants|redumbrella|engineering|management|telefonica|protection|consulting|tatamotors|creditcard|vlaanderen|schaeffler|associates|properties|foundation|republican|bnpparibas|boehringer|eurovision|extraspace|industries|immobilien|university|technology|volkswagen|healthcare|restaurant|cuisinella|vistaprint|apartments|accountant|travelers|homedepot|institute|vacations|furniture|fresenius|insurance|christmas|bloomberg|solutions|barcelona|firestone|financial|kuokgroup|fairwinds|community|passagens|goldpoint|equipment|lifestyle|yodobashi|aquarelle|marketing|analytics|education|amsterdam|statefarm|melbourne|allfinanz|directory|microsoft|stockholm|montblanc|accenture|lancaster|landrover|everbank|istanbul|graphics|grainger|ipiranga|softbank|attorney|pharmacy|saarland|catering|airforce|yokohama|mortgage|frontier|mutuelle|stcgroup|memorial|pictures|football|symantec|cipriani|ventures|telecity|cityeats|verisign|flsmidth|boutique|cleaning|firmdale|clinique|clothing|redstone|infiniti|deloitte|feedback|services|broadway|plumbing|commbank|training|barclays|exchange|computer|brussels|software|delivery|barefoot|builders|business|bargains|engineer|holdings|download|security|helsinki|lighting|movistar|discount|hdfcbank|supplies|marriott|property|diamonds|capetown|partners|democrat|jpmorgan|bradesco|budapest|rexroth|zuerich|shriram|academy|science|support|youtube|singles|surgery|alibaba|statoil|dentist|schwarz|android|cruises|cricket|digital|markets|starhub|systems|courses|coupons|netbank|country|domains|corsica|network|neustar|realtor|lincoln|limited|schmidt|yamaxun|cooking|contact|auction|spiegel|liaison|leclerc|latrobe|lasalle|abogado|compare|lanxess|exposed|express|company|cologne|college|avianca|lacaixa|fashion|recipes|ferrero|komatsu|storage|wanggou|clubmed|sandvik|fishing|fitness|bauhaus|kitchen|flights|florist|flowers|watches|weather|temasek|samsung|bentley|forsale|channel|theater|frogans|theatre|okinawa|website|tickets|jewelry|gallery|tiffany|iselect|shiksha|brother|organic|wedding|genting|toshiba|origins|philips|hyundai|hotmail|hoteles|hosting|rentals|windows|cartier|bugatti|holiday|careers|whoswho|hitachi|panerai|caravan|reviews|guitars|capital|trading|hamburg|hangout|finance|stream|family|abbott|health|review|travel|report|hermes|hiphop|gratis|career|toyota|hockey|dating|repair|google|social|soccer|reisen|global|otsuka|giving|unicom|casino|photos|center|broker|rocher|orange|bostik|garden|insure|ryukyu|bharti|safety|physio|sakura|oracle|online|jaguar|gallup|piaget|tienda|futbol|pictet|joburg|webcam|berlin|office|juegos|kaufen|chanel|chrome|xihuan|church|tennis|circle|kinder|flickr|bayern|claims|clinic|viajes|nowruz|xperia|norton|yachts|studio|coffee|camera|sanofi|nissan|author|expert|events|comsec|lawyer|tattoo|viking|estate|villas|condos|realty|yandex|energy|emerck|virgin|vision|durban|living|school|coupon|london|taobao|natura|taipei|nagoya|luxury|walter|aramco|sydney|madrid|credit|maison|makeup|schule|market|anquan|direct|design|swatch|suzuki|alsace|vuelos|dental|alipay|voyage|shouji|voting|airtel|mutual|degree|supply|agency|museum|mobily|dealer|monash|select|mormon|active|moscow|racing|datsun|quebec|nissay|rodeo|email|gifts|works|photo|chloe|edeka|cheap|earth|vista|tushu|koeln|glass|shoes|globo|tunes|gmail|nokia|space|kyoto|black|ricoh|seven|lamer|sener|epson|cisco|praxi|trust|citic|crown|shell|lease|green|legal|lexus|ninja|tatar|gripe|nikon|group|video|wales|autos|gucci|party|nexus|guide|linde|adult|parts|amica|lixil|boats|azure|loans|locus|cymru|lotte|lotto|stada|click|poker|quest|dabur|lupin|nadex|paris|faith|dance|canon|place|gives|trade|skype|rocks|mango|cloud|boots|smile|final|swiss|homes|honda|media|horse|cards|deals|watch|bosch|house|pizza|miami|osaka|tours|total|xerox|coach|sucks|style|delta|toray|iinet|tools|money|codes|beats|tokyo|salon|archi|movie|baidu|study|actor|yahoo|store|apple|world|forex|today|bible|tmall|tirol|irish|tires|forum|reise|vegas|vodka|sharp|omega|weber|jetzt|audio|promo|build|bingo|chase|gallo|drive|dubai|rehab|press|solar|sale|beer|bbva|bank|band|auto|sapo|sarl|saxo|audi|asia|arte|arpa|army|yoga|ally|zara|scor|scot|sexy|seat|zero|seek|aero|adac|zone|aarp|maif|meet|meme|menu|surf|mini|mobi|mtpc|porn|desi|star|ltda|name|talk|navy|love|loan|live|link|news|limo|like|spot|life|nico|lidl|lgbt|land|taxi|team|tech|kred|kpmg|sony|song|kiwi|kddi|jprs|jobs|sohu|java|itau|tips|info|immo|icbc|hsbc|town|host|page|toys|here|help|pars|haus|guru|guge|tube|goog|golf|gold|sncf|gmbh|gift|ggee|gent|gbiz|game|vana|pics|fund|ford|ping|pink|fish|film|fast|farm|play|fans|fail|plus|skin|pohl|fage|moda|post|erni|dvag|prod|doha|prof|docs|viva|diet|luxe|site|dell|sina|dclk|show|qpon|date|vote|cyou|voto|read|coop|cool|wang|club|city|chat|cern|cash|reit|rent|casa|cars|care|camp|rest|call|cafe|weir|wien|rich|wiki|buzz|wine|book|bond|room|work|rsvp|shia|ruhr|blue|bing|shaw|bike|safe|xbox|best|pwc|mtn|lds|aig|boo|fyi|nra|nrw|ntt|car|gal|obi|zip|aeg|vin|how|one|ong|onl|dad|ooo|bet|esq|org|htc|bar|uol|ibm|ovh|gdn|ice|icu|uno|gea|ifm|bot|top|wtf|lol|day|pet|eus|wtc|ubs|tvs|aco|ing|ltd|ink|tab|abb|afl|cat|int|pid|pin|bid|cba|gle|com|cbn|ads|man|wed|ceb|gmo|sky|ist|gmx|tui|mba|fan|ski|iwc|app|pro|med|ceo|jcb|jcp|goo|dev|men|aaa|meo|pub|jlc|bom|jll|gop|jmp|mil|got|gov|win|jot|mma|joy|trv|red|cfa|cfd|bio|moe|moi|mom|ren|biz|aws|xin|bbc|dnp|buy|kfh|mov|thd|xyz|fit|kia|rio|rip|kim|dog|vet|nyc|bcg|mtr|bcn|bms|bmw|run|bzh|rwe|tel|stc|axa|kpn|fly|krd|cab|bnl|foo|crs|eat|tci|sap|srl|nec|sas|net|cal|sbs|sfr|sca|scb|csc|edu|new|xxx|hiv|fox|wme|ngo|nhk|vip|sex|frl|lat|yun|law|you|tax|soy|sew|om|ac|hu|se|sc|sg|sh|sb|sa|rw|ru|rs|ro|re|qa|py|si|pw|pt|ps|sj|sk|pr|pn|pm|pl|sl|sm|pk|sn|ph|so|pg|pf|pe|pa|zw|nz|nu|nr|np|no|nl|ni|ng|nf|sr|ne|st|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|su|mn|mm|ml|mk|mh|mg|me|sv|md|mc|sx|sy|ma|ly|lv|sz|lu|lt|ls|lr|lk|li|lc|lb|la|tc|kz|td|ky|kw|kr|kp|kn|km|ki|kh|tf|tg|th|kg|ke|jp|jo|jm|je|it|is|ir|tj|tk|tl|tm|iq|tn|to|io|in|im|il|ie|ad|sd|ht|hr|hn|hm|tr|hk|gy|gw|gu|gt|gs|gr|gq|tt|gp|gn|gm|gl|tv|gi|tw|tz|ua|gh|ug|uk|gg|gf|ge|gd|us|uy|uz|va|gb|ga|vc|ve|fr|fo|fm|fk|fj|vg|vi|fi|eu|et|es|er|eg|ee|ec|dz|do|dm|dk|vn|dj|de|cz|cy|cx|cw|vu|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|wf|bz|by|bw|bv|bt|bs|br|bo|bn|bm|bj|bi|ws|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ye|ar|aq|ao|am|al|yt|ai|za|ag|af|ae|zm|id)\b/;return{alphaNumericCharsStr:r,domainNameRegex:a,tldRegex:n}}(),t.AnchorTagBuilder=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},build:function(e){return new t.HtmlTag({tagName:"a",attrs:this.createAttrs(e.getType(),e.getAnchorHref()),innerHtml:this.processAnchorText(e.getAnchorText())})},createAttrs:function(t,e){var r={href:e},a=this.createCssClass(t);return a&&(r["class"]=a),this.newWindow&&(r.target="_blank",r.rel="noopener noreferrer"),r},createCssClass:function(t){var e=this.className;return e?e+" "+e+"-"+t:""},processAnchorText:function(t){return t=this.doTruncate(t)},doTruncate:function(e){var r=this.truncate;if(!r||!r.length)return e;var a=r.length,n=r.location;return"smart"===n?t.truncate.TruncateSmart(e,a,".."):"middle"===n?t.truncate.TruncateMiddle(e,a,".."):t.truncate.TruncateEnd(e,a,"..")}}),t.htmlParser.HtmlParser=t.Util.extend(Object,{htmlRegex:function(){var t=/!--([\s\S]+?)--/,e=/[0-9a-zA-Z][0-9a-zA-Z:]*/,r=/[^\s"'>\/=\x00-\x1F\x7F]+/,a=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,n=r.source+"(?:\\s*=\\s*"+a.source+")?";return new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",n,"|",a.source+")",")*",">",")","|","(?:","<(/)?","(?:",t.source,"|","(?:","("+e.source+")","(?:","(?:\\s+|\\b)",n,")*","\\s*/?",")",")",">",")"].join(""),"gi")}(),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(t){for(var e,r,a=this.htmlRegex,n=0,i=[];null!==(e=a.exec(t));){var s=e[0],o=e[3],c=e[1]||e[4],h=!!e[2],l=e.index,u=t.substring(n,l);u&&(r=this.parseTextAndEntityNodes(n,u),i.push.apply(i,r)),o?i.push(this.createCommentNode(l,s,o)):i.push(this.createElementNode(l,s,c,h)),n=l+s.length}if(ni;i+=2){var o=n[i],c=n[i+1];o&&(a.push(this.createTextNode(e,o)),e+=o.length),c&&(a.push(this.createEntityNode(e,c)),e+=c.length)}return a},createCommentNode:function(e,r,a){return new t.htmlParser.CommentNode({offset:e,text:r,comment:t.Util.trim(a)})},createElementNode:function(e,r,a,n){return new t.htmlParser.ElementNode({offset:e,text:r,tagName:a.toLowerCase(),closing:n})},createEntityNode:function(e,r){return new t.htmlParser.EntityNode({offset:e,text:r})},createTextNode:function(e,r){return new t.htmlParser.TextNode({offset:e,text:r})}}),t.htmlParser.HtmlNode=t.Util.extend(Object,{offset:void 0,text:void 0,constructor:function(e){t.Util.assign(this,e)},getType:t.Util.abstractMethod,getOffset:function(){return this.offset},getText:function(){return this.text}}),t.htmlParser.CommentNode=t.Util.extend(t.htmlParser.HtmlNode,{comment:"",getType:function(){return"comment"},getComment:function(){return this.comment}}),t.htmlParser.ElementNode=t.Util.extend(t.htmlParser.HtmlNode,{tagName:"",closing:!1,getType:function(){return"element"},getTagName:function(){return this.tagName},isClosing:function(){return this.closing}}),t.htmlParser.EntityNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"entity"}}),t.htmlParser.TextNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"text"}}),t.match.Match=t.Util.extend(Object,{constructor:function(t){this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset},getType:t.Util.abstractMethod,getMatchedText:function(){return this.matchedText},setOffset:function(t){this.offset=t},getOffset:function(){return this.offset},getAnchorHref:t.Util.abstractMethod,getAnchorText:t.Util.abstractMethod,buildTag:function(){return this.tagBuilder.build(this)}}),t.match.Email=t.Util.extend(t.match.Match,{constructor:function(e){t.match.Match.prototype.constructor.call(this,e),this.email=e.email},getType:function(){return"email"},getEmail:function(){return this.email},getAnchorHref:function(){return"mailto:"+this.email},getAnchorText:function(){return this.email}}),t.match.Hashtag=t.Util.extend(t.match.Match,{constructor:function(e){t.match.Match.prototype.constructor.call(this,e),this.serviceName=e.serviceName,this.hashtag=e.hashtag},getType:function(){return"hashtag"},getServiceName:function(){return this.serviceName},getHashtag:function(){return this.hashtag},getAnchorHref:function(){var t=this.serviceName,e=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+e;case"facebook":return"https://www.facebook.com/hashtag/"+e;case"instagram":return"https://instagram.com/explore/tags/"+e;default:throw new Error("Unknown service name to point hashtag to: ",t)}},getAnchorText:function(){return"#"+this.hashtag}}),t.match.Phone=t.Util.extend(t.match.Match,{constructor:function(e){t.match.Match.prototype.constructor.call(this,e),this.number=e.number,this.plusSign=e.plusSign},getType:function(){return"phone"},getNumber:function(){return this.number},getAnchorHref:function(){return"tel:"+(this.plusSign?"+":"")+this.number},getAnchorText:function(){return this.matchedText}}),t.match.Twitter=t.Util.extend(t.match.Match,{constructor:function(e){t.match.Match.prototype.constructor.call(this,e),this.twitterHandle=e.twitterHandle},getType:function(){return"twitter"},getTwitterHandle:function(){return this.twitterHandle},getAnchorHref:function(){return"https://twitter.com/"+this.twitterHandle},getAnchorText:function(){return"@"+this.twitterHandle}}),t.match.Url=t.Util.extend(t.match.Match,{constructor:function(e){t.match.Match.prototype.constructor.call(this,e),this.urlMatchType=e.urlMatchType,this.url=e.url,this.protocolUrlMatch=e.protocolUrlMatch,this.protocolRelativeMatch=e.protocolRelativeMatch,this.stripPrefix=e.stripPrefix},urlPrefixRegex:/^(https?:\/\/)?(www\.)?/i,protocolRelativeRegex:/^\/\//,protocolPrepended:!1,getType:function(){return"url"},getUrlMatchType:function(){return this.urlMatchType},getUrl:function(){var t=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(t=this.url="http://"+t,this.protocolPrepended=!0),t},getAnchorHref:function(){var t=this.getUrl();return t.replace(/&/g,"&")},getAnchorText:function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix&&(t=this.stripUrlPrefix(t)),t=this.removeTrailingSlash(t)},stripUrlPrefix:function(t){return t.replace(this.urlPrefixRegex,"")},stripProtocolRelativePrefix:function(t){return t.replace(this.protocolRelativeRegex,"")},removeTrailingSlash:function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t}}),t.matcher.Matcher=t.Util.extend(Object,{constructor:function(t){this.tagBuilder=t.tagBuilder},parseMatches:t.Util.abstractMethod}),t.matcher.Email=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=t.RegexLib.alphaNumericCharsStr,r=new RegExp("["+e+"\\-_';:&=+$.,]+@"),a=t.RegexLib.domainNameRegex,n=t.RegexLib.tldRegex;return new RegExp([r.source,a.source,"\\.",n.source].join(""),"gi")}(),parseMatches:function(e){for(var r,a=this.matcherRegex,n=this.tagBuilder,i=[];null!==(r=a.exec(e));){var s=r[0];i.push(new t.match.Email({tagBuilder:n,matchedText:s,offset:r.index,email:s}))}return i}}),t.matcher.Hashtag=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("#[_"+t.RegexLib.alphaNumericCharsStr+"]{1,139}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),constructor:function(e){t.matcher.Matcher.prototype.constructor.call(this,e),this.serviceName=e.serviceName},parseMatches:function(e){for(var r,a=this.matcherRegex,n=this.nonWordCharRegex,i=this.serviceName,s=this.tagBuilder,o=[];null!==(r=a.exec(e));){var c=r.index,h=e.charAt(c-1);if(0===c||n.test(h)){var l=r[0],u=r[0].slice(1);o.push(new t.match.Hashtag({tagBuilder:s,matchedText:l,offset:c,serviceName:i,hashtag:u}))}}return o}}),t.matcher.Phone=t.Util.extend(t.matcher.Matcher,{matcherRegex:/(?:(\+)?\d{1,3}[-\040.])?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]\d{4}/g,parseMatches:function(e){for(var r,a=this.matcherRegex,n=this.tagBuilder,i=[];null!==(r=a.exec(e));){var s=r[0],o=s.replace(/\D/g,""),c=!!r[1];i.push(new t.match.Phone({tagBuilder:n,matchedText:s,offset:r.index,number:o,plusSign:c}))}return i}}),t.matcher.Twitter=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("@[_"+t.RegexLib.alphaNumericCharsStr+"]{1,20}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),parseMatches:function(e){for(var r,a=this.matcherRegex,n=this.nonWordCharRegex,i=this.tagBuilder,s=[];null!==(r=a.exec(e));){var o=r.index,c=e.charAt(o-1);if(0===o||n.test(c)){var h=r[0],l=r[0].slice(1);s.push(new t.match.Twitter({tagBuilder:i,matchedText:h,offset:o,twitterHandle:l}))}}return s}}),t.matcher.Url=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=/(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\/\/)(?!\d+\/?)(?:\/\/)?)/,r=/(?:www\.)/,a=t.RegexLib.domainNameRegex,n=t.RegexLib.tldRegex,i=t.RegexLib.alphaNumericCharsStr,s=new RegExp("["+i+"\\-+&@#/%=~_()|'$*\\[\\]?!:,.;]*["+i+"\\-+&@#/%=~_()|'$*\\[\\]]");return new RegExp(["(?:","(",e.source,a.source,")","|","(","(//)?",r.source,a.source,")","|","(","(//)?",a.source+"\\.",n.source,")",")","(?:"+s.source+")?"].join(""),"gi")}(),wordCharRegExp:/\w/,openParensRe:/\(/g,closeParensRe:/\)/g,constructor:function(e){t.matcher.Matcher.prototype.constructor.call(this,e),this.stripPrefix=e.stripPrefix},parseMatches:function(e){for(var r,a=this.matcherRegex,n=this.stripPrefix,i=this.tagBuilder,s=[];null!==(r=a.exec(e));){var o=r[0],c=r[1],h=r[2],l=r[3],u=r[5],g=r.index,m=l||u,f=e.charAt(g-1);if(t.matcher.UrlMatchValidator.isValid(o,c)&&!(g>0&&"@"===f||g>0&&m&&this.wordCharRegExp.test(f))){if(this.matchHasUnbalancedClosingParen(o))o=o.substr(0,o.length-1);else{var p=this.matchHasInvalidCharAfterTld(o,c);p>-1&&(o=o.substr(0,p))}var d=c?"scheme":h?"www":"tld",b=!!c;s.push(new t.match.Url({tagBuilder:i,matchedText:o,offset:g,urlMatchType:d,url:o,protocolUrlMatch:b,protocolRelativeMatch:!!m,stripPrefix:n}))}}return s},matchHasUnbalancedClosingParen:function(t){var e=t.charAt(t.length-1);if(")"===e){var r=t.match(this.openParensRe),a=t.match(this.closeParensRe),n=r&&r.length||0,i=a&&a.length||0;if(i>n)return!0}return!1},matchHasInvalidCharAfterTld:function(t,e){if(!t)return-1;var r=0;e&&(r=t.indexOf(":"),t=t.slice(r));var a=/^((.?\/\/)?[A-Za-z0-9\u00C0-\u017F\.\-]*[A-Za-z0-9\u00C0-\u017F\-]\.[A-Za-z]+)/,n=a.exec(t);return null===n?-1:(r+=n[1].length,t=t.slice(n[1].length),/^[^.A-Za-z:\/?#]/.test(t)?r:-1)}}),t.matcher.UrlMatchValidator={hasFullProtocolRegex:/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,uriSchemeRegex:/^[A-Za-z][-.+A-Za-z0-9]*:/,hasWordCharAfterProtocolRegex:/:[^\s]*?[A-Za-z\u00C0-\u017F]/,isValid:function(t,e){return!(e&&!this.isValidUriScheme(e)||this.urlMatchDoesNotHaveProtocolOrDot(t,e)||this.urlMatchDoesNotHaveAtLeastOneWordChar(t,e))},isValidUriScheme:function(t){var e=t.match(this.uriSchemeRegex)[0].toLowerCase();return"javascript:"!==e&&"vbscript:"!==e},urlMatchDoesNotHaveProtocolOrDot:function(t,e){return!(!t||e&&this.hasFullProtocolRegex.test(e)||-1!==t.indexOf("."))},urlMatchDoesNotHaveAtLeastOneWordChar:function(t,e){return t&&e?!this.hasWordCharAfterProtocolRegex.test(t):!1}},t.truncate.TruncateEnd=function(e,r,a){return t.Util.ellipsis(e,r,a)},t.truncate.TruncateMiddle=function(t,e,r){if(t.length<=e)return t;var a=e-r.length,n="";return a>0&&(n=t.substr(-1*Math.floor(a/2))),(t.substr(0,Math.ceil(a/2))+r+n).substr(0,e)},t.truncate.TruncateSmart=function(t,e,r){var a=function(t){var e={},r=t,a=r.match(/^([a-z]+):\/\//i);return a&&(e.scheme=a[1],r=r.substr(a[0].length)),a=r.match(/^(.*?)(?=(\?|#|\/|$))/i),a&&(e.host=a[1],r=r.substr(a[0].length)),a=r.match(/^\/(.*?)(?=(\?|#|$))/i),a&&(e.path=a[1],r=r.substr(a[0].length)),a=r.match(/^\?(.*?)(?=(#|$))/i),a&&(e.query=a[1],r=r.substr(a[0].length)),a=r.match(/^#(.*?)$/i),a&&(e.fragment=a[1]),e},n=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},i=function(t,e){var a=e/2,n=Math.ceil(a),i=-1*Math.floor(a),s="";return 0>i&&(s=t.substr(i)),t.substr(0,n)+r+s};if(t.length<=e)return t;var s=e-r.length,o=a(t);if(o.query){var c=o.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);c&&(o.query=o.query.substr(0,c[1].length),t=n(o))}if(t.length<=e)return t;if(o.host&&(o.host=o.host.replace(/^www\./,""),t=n(o)),t.length<=e)return t;var h="";if(o.host&&(h+=o.host),h.length>=s)return o.host.length==e?(o.host.substr(0,e-r.length)+r).substr(0,e):i(h,s).substr(0,e);var l="";if(o.path&&(l+="/"+o.path),o.query&&(l+="?"+o.query),l){if((h+l).length>=s){if((h+l).length==e)return(h+l).substr(0,e);var u=s-h.length;return(h+i(l,u)).substr(0,e)}h+=l}if(o.fragment){var g="#"+o.fragment;if((h+g).length>=s){if((h+g).length==e)return(h+g).substr(0,e);var m=s-h.length;return(h+i(g,m)).substr(0,e)}h+=g}if(o.scheme&&o.host){var f=o.scheme+"://";if((h+f).length0&&(p=h.substr(-1*Math.floor(s/2))),(h.substr(0,Math.ceil(s/2))+r+p).substr(0,e)},t});
\ No newline at end of file
diff --git a/public/assets/bower/Autolinker.min.js.br b/public/assets/bower/Autolinker.min.js.br
new file mode 100644
index 00000000..43ba0f14
Binary files /dev/null and b/public/assets/bower/Autolinker.min.js.br differ
diff --git a/public/assets/bower/Autolinker.min.js.gz b/public/assets/bower/Autolinker.min.js.gz
new file mode 100644
index 00000000..0bb2a365
Binary files /dev/null and b/public/assets/bower/Autolinker.min.js.gz differ
diff --git a/public/build/assets/bower/alertify-1b3c6aa174.css.br b/public/assets/bower/alertify.css.br
similarity index 100%
rename from public/build/assets/bower/alertify-1b3c6aa174.css.br
rename to public/assets/bower/alertify.css.br
diff --git a/public/build/assets/bower/alertify-1b3c6aa174.css.gz b/public/assets/bower/alertify.css.gz
similarity index 100%
rename from public/build/assets/bower/alertify-1b3c6aa174.css.gz
rename to public/assets/bower/alertify.css.gz
diff --git a/public/build/assets/bower/alertify-84061c87f5.js.br b/public/assets/bower/alertify.js.br
similarity index 100%
rename from public/build/assets/bower/alertify-84061c87f5.js.br
rename to public/assets/bower/alertify.js.br
diff --git a/public/build/assets/bower/alertify-84061c87f5.js.gz b/public/assets/bower/alertify.js.gz
similarity index 100%
rename from public/build/assets/bower/alertify-84061c87f5.js.gz
rename to public/assets/bower/alertify.js.gz
diff --git a/public/assets/bower/fetch.js b/public/assets/bower/fetch.js
index 01aa5d06..d0652dea 100644
--- a/public/assets/bower/fetch.js
+++ b/public/assets/bower/fetch.js
@@ -5,6 +5,21 @@
return
}
+ var support = {
+ searchParams: 'URLSearchParams' in self,
+ iterable: 'Symbol' in self && 'iterator' in Symbol,
+ blob: 'FileReader' in self && 'Blob' in self && (function() {
+ try {
+ new Blob()
+ return true
+ } catch(e) {
+ return false
+ }
+ })(),
+ formData: 'FormData' in self,
+ arrayBuffer: 'ArrayBuffer' in self
+ }
+
function normalizeName(name) {
if (typeof name !== 'string') {
name = String(name)
@@ -22,6 +37,24 @@
return value
}
+ // Build a destructive iterator for the value list
+ function iteratorFor(items) {
+ var iterator = {
+ next: function() {
+ var value = items.shift()
+ return {done: value === undefined, value: value}
+ }
+ }
+
+ if (support.iterable) {
+ iterator[Symbol.iterator] = function() {
+ return iterator
+ }
+ }
+
+ return iterator
+ }
+
function Headers(headers) {
this.map = {}
@@ -77,6 +110,28 @@
}, this)
}
+ Headers.prototype.keys = function() {
+ var items = []
+ this.forEach(function(value, name) { items.push(name) })
+ return iteratorFor(items)
+ }
+
+ Headers.prototype.values = function() {
+ var items = []
+ this.forEach(function(value) { items.push(value) })
+ return iteratorFor(items)
+ }
+
+ Headers.prototype.entries = function() {
+ var items = []
+ this.forEach(function(value, name) { items.push([name, value]) })
+ return iteratorFor(items)
+ }
+
+ if (support.iterable) {
+ Headers.prototype[Symbol.iterator] = Headers.prototype.entries
+ }
+
function consumed(body) {
if (body.bodyUsed) {
return Promise.reject(new TypeError('Already read'))
@@ -107,23 +162,9 @@
return fileReaderReady(reader)
}
- var support = {
- blob: 'FileReader' in self && 'Blob' in self && (function() {
- try {
- new Blob()
- return true
- } catch(e) {
- return false
- }
- })(),
- formData: 'FormData' in self,
- arrayBuffer: 'ArrayBuffer' in self
- }
-
function Body() {
this.bodyUsed = false
-
this._initBody = function(body) {
this._bodyInit = body
if (typeof body === 'string') {
@@ -132,6 +173,8 @@
this._bodyBlob = body
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
this._bodyFormData = body
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this._bodyText = body.toString()
} else if (!body) {
this._bodyText = ''
} else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {
@@ -146,6 +189,8 @@
this.headers.set('content-type', 'text/plain;charset=UTF-8')
} else if (this._bodyBlob && this._bodyBlob.type) {
this.headers.set('content-type', this._bodyBlob.type)
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
}
}
}
@@ -349,13 +394,8 @@
}
xhr.onload = function() {
- var status = (xhr.status === 1223) ? 204 : xhr.status
- if (status < 100 || status > 599) {
- reject(new TypeError('Network request failed'))
- return
- }
var options = {
- status: status,
+ status: xhr.status,
statusText: xhr.statusText,
headers: headers(xhr),
url: responseURL()
diff --git a/public/assets/bower/fetch.js.br b/public/assets/bower/fetch.js.br
new file mode 100644
index 00000000..fcda83a4
Binary files /dev/null and b/public/assets/bower/fetch.js.br differ
diff --git a/public/assets/bower/fetch.js.gz b/public/assets/bower/fetch.js.gz
new file mode 100644
index 00000000..f1534130
Binary files /dev/null and b/public/assets/bower/fetch.js.gz differ
diff --git a/public/build/assets/bower/marked-c2a88705e2.min.js.br b/public/assets/bower/marked.min.js.br
similarity index 100%
rename from public/build/assets/bower/marked-c2a88705e2.min.js.br
rename to public/assets/bower/marked.min.js.br
diff --git a/public/build/assets/bower/marked-c2a88705e2.min.js.gz b/public/assets/bower/marked.min.js.gz
similarity index 100%
rename from public/build/assets/bower/marked-c2a88705e2.min.js.gz
rename to public/assets/bower/marked.min.js.gz
diff --git a/public/assets/bower/sanitize.css b/public/assets/bower/sanitize.css
index e9e84f1c..e7e79425 100644
--- a/public/assets/bower/sanitize.css
+++ b/public/assets/bower/sanitize.css
@@ -1,263 +1,266 @@
-/*! sanitize.css v3.3.0 | CC0 1.0 Public Domain | github.com/10up/sanitize.css */
+/*! sanitize.css v4.1.0 | CC0 License | github.com/jonathantneal/sanitize.css */
-/* Latest tested: Android 6, Chrome 48, Edge 13, Firefox 44, Internet Explorer 11, iOS 9, Opera 35, Safari 9, Windows Phone 8.1 */
+/* Display definitions
+ ========================================================================== */
-/*
- * Normalization
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ * 2. Add the correct display in IE.
+ */
+
+article,
+aside,
+details, /* 1 */
+figcaption,
+figure,
+footer,
+header,
+main, /* 2 */
+menu,
+nav,
+section,
+summary { /* 1 */
+ display: block;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Add the correct display in IE 10-.
+ * 1. Add the correct display in IE.
+ */
+
+template, /* 1 */
+[hidden] {
+ display: none;
+}
+
+/* Elements of HTML (https://www.w3.org/TR/html5/semantics.html)
+ ========================================================================== */
+
+/**
+ * 1. Remove repeating backgrounds in all browsers (opinionated).
+ * 2. Add box sizing inheritence in all browsers (opinionated).
+ */
+
+*,
+::before,
+::after {
+ background-repeat: no-repeat; /* 1 */
+ box-sizing: inherit; /* 2 */
+}
+
+/**
+ * 1. Add text decoration inheritance in all browsers (opinionated).
+ * 2. Add vertical alignment inheritence in all browsers (opinionated).
+ */
+
+::before,
+::after {
+ text-decoration: inherit; /* 1 */
+ vertical-align: inherit; /* 2 */
+}
+
+/**
+ * 1. Add border box sizing in all browsers (opinionated).
+ * 2. Add the default cursor in all browsers (opinionated).
+ * 3. Add a flattened line height in all browsers (opinionated).
+ * 4. Prevent font size adjustments after orientation changes in IE and iOS.
+ */
+
+html {
+ box-sizing: border-box; /* 1 */
+ cursor: default; /* 2 */
+ font-family: sans-serif; /* 3 */
+ line-height: 1.5; /* 3 */
+ -ms-text-size-adjust: 100%; /* 4 */
+ -webkit-text-size-adjust: 100%; /* 5 */
+}
+
+/* Sections (https://www.w3.org/TR/html5/sections.html)
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Correct the font sizes and margins on `h1` elements within
+ * `section` and `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: .67em 0;
+}
+
+/* Grouping content (https://www.w3.org/TR/html5/grouping-content.html)
+ ========================================================================== */
+
+/**
+ * 1. Correct font sizing inheritance and scaling in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * 1. Correct the height in Firefox.
+ * 2. Add visible overflow in Edge and IE.
+ */
+
+hr {
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * Remove the list style on navigation lists in all browsers (opinionated).
+ */
+
+nav ol,
+nav ul {
+ list-style: none;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * 1. Add a bordered underline effect in all browsers.
+ * 2. Remove text decoration in Firefox 40+.
*/
abbr[title] {
- text-decoration: underline; /* Chrome 48+, Edge 12+, Internet Explorer 11-, Safari 9+ */
- text-decoration: underline dotted; /* Firefox 40+ */
+ border-bottom: 1px dotted; /* 1 */
+ text-decoration: none; /* 2 */
}
-audio:not([controls]) {
- display: none; /* Chrome 44-, iOS 8+, Safari 9+ */
-}
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
b,
strong {
- font-weight: bolder; /* Edge 12+, Safari 6.2+, and Chrome 18+ */
-}
-
-button {
- -webkit-appearance: button; /* iOS 8+ */
- overflow: visible; /* Internet Explorer 11- */
-}
-
-button,
-input {
-}
-
-button::-moz-focus-inner, input::-moz-focus-inner {
- border: 0;/* Firefox 4+ */
- padding: 0;/* Firefox 4+ */
-}
-
-button:-moz-focusring, input:-moz-focusring {
- outline: 1px dotted ButtonText;/* Firefox 4+ */
-}
-
-button,
-select {
- text-transform: none; /* Firefox 40+, Internet Explorer 11- */
-}
-
-details {
- display: block; /* Edge 12+, Firefox 40+, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-html {
- -ms-overflow-style: -ms-autohiding-scrollbar; /* Edge 12+, Internet Explorer 11- */
- overflow-y: scroll; /* All browsers without overlaying scrollbars */
- -webkit-text-size-adjust: 100%; /* iOS 8+, Windows Phone 8.1+ */
-}
-
-hr {
- overflow: visible; /* Internet Explorer 11-, Edge 12+ */
-}
-
-input {
- -webkit-border-radius: 0 /* iOS 8+ */
-}
-
-input[type="button"],
- input[type="reset"],
- input[type="submit"] {
- -webkit-appearance: button;/* iOS 8+ */
-}
-
-input[type="number"] {
- width: auto;/* Firefox 36+ */
-}
-
-input[type="search"] {
- -webkit-appearance: textfield;/* Chrome 45+, Safari 9+ */
-}
-
-input[type="search"]::-webkit-search-cancel-button,
- input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;/* Chrome 45+, Safari 9+ */
-}
-
-main {
- display: block; /* Android 4.3-, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-pre {
- overflow: auto; /* Internet Explorer 11- */
-}
-
-progress {
- display: inline-block; /* Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-summary {
- display: block; /* Firefox 40+, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-svg:not(:root) {
- overflow: hidden; /* Internet Explorer 11- */
-}
-
-template {
- display: none; /* Android 4.3-, Internet Explorer 11-, iOS 7-, Safari 7-, Windows Phone 8.1+ */
-}
-
-textarea {
- overflow: auto; /* Edge 12+, Internet Explorer 11- */
-}
-
-[hidden] {
- display: none; /* Internet Explorer 10- */
-}
-
-/*
- * Universal inheritance
- */
-
-*,
-:before,
-:after {
- box-sizing: inherit;
-}
-
-* {
- font-size: inherit;
- line-height: inherit;
-}
-
-:before,
-:after {
- text-decoration: inherit;
- vertical-align: inherit;
-}
-
-button,
-input,
-select,
-textarea {
- font-family: inherit;
- font-style: inherit;
font-weight: inherit;
}
-
-
-/*
- * Opinionated defaults
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
*/
-/* specify the margin and padding of all elements */
-
-* {
- margin: 0;
- padding: 0;
+b,
+strong {
+ font-weight: bolder;
}
-/* specify the border style and width of all elements */
-
-*,
-:before,
-:after {
- border-style: solid;
- border-width: 0;
-}
-
-/* remove the tapping delay from clickable elements */
-
-a,
-area,
-button,
-input,
-label,
-select,
-textarea,
-[tabindex] {
- -ms-touch-action: manipulation;
- touch-action: manipulation;
-}
-
-/* specify the standard appearance of selects */
-
-select {
- -moz-appearance: none; /* Firefox 40+ */
- -webkit-appearance: none /* Chrome 45+ */
-}
-
-select::-ms-expand {
- display: none;/* Edge 12+, Internet Explorer 11- */
-}
-
-select::-ms-value {
- color: currentColor;/* Edge 12+, Internet Explorer 11- */
-}
-
-/* use current current as the default fill of svg elements */
-
-svg {
- fill: currentColor;
-}
-
-/* specify the progress cursor of updating elements */
-
-[aria-busy="true"] {
- cursor: progress;
-}
-
-/* specify the pointer cursor of trigger elements */
-
-[aria-controls] {
- cursor: pointer;
-}
-
-/* specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
-
-[aria-disabled] {
- cursor: default;
-}
-
-/* specify the style of visually hidden yet accessible elements */
-
-[hidden][aria-hidden="false"] {
- clip: rect(0 0 0 0);
- display: inherit;
- position: absolute
-}
-
-[hidden][aria-hidden="false"]:focus {
- clip: auto;
-}
-
-
-
-/*
- * Configurable defaults
+/**
+ * Add the correct font style in Android 4.3-.
*/
-/* specify the background repeat of all elements */
-
-* {
- background-repeat: no-repeat;
+dfn {
+ font-style: italic;
}
-/* specify the root styles of the document */
+/**
+ * Add the correct colors in IE 9-.
+ */
-:root {
- background-color: #ffffff;
- box-sizing: border-box;
+mark {
+ background-color: #ffff00;
color: #000000;
- cursor: default;
- font: 100%/1.5 sans-serif;
}
-/* specify the text decoration of anchors */
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
-a {
- text-decoration: none;
+progress {
+ vertical-align: baseline;
}
-/* specify the alignment of media elements */
+/**
+ * Correct the font size in all browsers.
+ */
+
+small {
+ font-size: 83.3333%;
+}
+
+/**
+ * Change the positioning on superscript and subscript elements
+ * in all browsers (opinionated).
+ * 1. Correct the font size in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 83.3333%; /* 1 */
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -.25em;
+}
+
+sup {
+ top: -.5em;
+}
+
+/*
+ * Remove the text shadow on text selections (opinionated).
+ * 1. Restore the coloring undone by defining the text shadow (opinionated).
+ */
+
+::-moz-selection {
+ background-color: #b3d4fc; /* 1 */
+ color: #000000; /* 1 */
+ text-shadow: none;
+}
+
+::selection {
+ background-color: #b3d4fc; /* 1 */
+ color: #000000; /* 1 */
+ text-shadow: none;
+}
+
+/* Embedded content (https://www.w3.org/TR/html5/embedded-content-0.html)
+ ========================================================================== */
+
+/*
+ * Change the alignment on media elements in all browers (opinionated).
+ */
audio,
canvas,
@@ -268,85 +271,279 @@ video {
vertical-align: middle;
}
-/* specify the coloring of form elements */
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
-button,
-input,
-select,
-textarea {
- background-color: transparent;
- color: inherit;
+img {
+ border-style: none;
}
-/* specify the minimum height of form elements */
+/**
+ * Change the fill color to match the text color in all browsers (opinionated).
+ */
-button,
-[type="button"],
-[type="date"],
-[type="datetime"],
-[type="datetime-local"],
-[type="email"],
-[type="month"],
-[type="number"],
-[type="password"],
-[type="reset"],
-[type="search"],
-[type="submit"],
-[type="tel"],
-[type="text"],
-[type="time"],
-[type="url"],
-[type="week"],
-select,
-textarea {
- min-height: 1.5em;
+svg {
+ fill: currentColor;
}
-/* specify the font family of code elements */
+/**
+ * Hide the overflow in IE.
+ */
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
+svg:not(:root) {
+ overflow: hidden;
}
-/* specify the list style of nav lists */
+/* Links (https://www.w3.org/TR/html5/links.html#links)
+ ========================================================================== */
-nav ol,
-nav ul {
- list-style: none;
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove the gaps in underlines in iOS 8+ and Safari 8+.
+ */
+
+a {
+ background-color: transparent; /* 1 */
+ -webkit-text-decoration-skip: objects; /* 2 */
}
-/* specify the font size of small elements */
+/**
+ * Remove the outline when hovering in all browsers (opinionated).
+ */
-small {
- font-size: 75%;
+a:hover {
+ outline-width: 0;
}
-/* specify the border styling of tables */
+/* Tabular data (https://www.w3.org/TR/html5/tabular-data.html)
+ ========================================================================== */
+
+/*
+ * Remove border spacing in all browsers (opinionated).
+ */
table {
border-collapse: collapse;
border-spacing: 0;
}
-/* specify the resizability of textareas */
+/* transform-style: (https://www.w3.org/TR/html5/forms.html)
+ ========================================================================== */
+
+/**
+ * 1. Remove the default styling in all browsers (opinionated).
+ * 3. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+select,
+textarea {
+ background-color: transparent; /* 1 */
+ border-style: none; /* 1 */
+ color: inherit; /* 1 */
+ font-size: 1em; /* 1 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Correct the overflow in IE.
+ * 1. Correct the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance in Edge, Firefox, and IE.
+ * 1. Remove the inheritance in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * 1. Prevent the WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Correct the focus styles unset by the previous rule.
+ */
+
+:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the border, margin, and padding in all browsers.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: .35em .625em .75em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 2 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Remove the vertical scrollbar in IE.
+ * 2. Change the resize direction on textareas in all browsers (opinionated).
+ */
textarea {
- resize: vertical;
+ overflow: auto; /* 1 */
+ resize: vertical; /* 2 */
}
-/* specify the background color, font color, and drop shadow of text selections */
+/**
+ * Remove the padding in IE 10-.
+ */
-::-moz-selection {
- background-color: #b3d4fc; /* required when declaring ::selection */
- color: #ffffff;
- text-shadow: none;
+[type="checkbox"],
+[type="radio"] {
+ padding: 0;
}
-::selection {
- background-color: #b3d4fc; /* required when declaring ::selection */
- color: #ffffff;
- text-shadow: none;
+/**
+ * Correct the cursor style on increment and decrement buttons in Chrome.
+ */
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari for OS X.
+ */
+
+::-webkit-search-cancel-button,
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Correct the text style on placeholders in Chrome, Edge, and Safari.
+ */
+
+::-webkit-input-placeholder {
+ color: inherit;
+ opacity: .54;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* WAI-ARIA (https://www.w3.org/TR/html5/dom.html#wai-aria)
+ ========================================================================== */
+
+/**
+ * Change the cursor on busy elements (opinionated).
+ */
+
+[aria-busy="true"] {
+ cursor: progress;
+}
+
+/*
+ * Change the cursor on control elements (opinionated).
+ */
+
+[aria-controls] {
+ cursor: pointer;
+}
+
+/*
+ * Change the cursor on disabled, not-editable, or otherwise
+ * inoperable elements (opinionated).
+ */
+
+[aria-disabled] {
+ cursor: default;
+}
+
+/* User interaction (https://www.w3.org/TR/html5/editing.html)
+ ========================================================================== */
+
+/*
+ * Remove the tapping delay on clickable elements (opinionated).
+ * 1. Remove the tapping delay in IE 10.
+ */
+
+a,
+area,
+button,
+input,
+label,
+select,
+textarea,
+[tabindex] {
+ -ms-touch-action: manipulation; /* 1 */
+ touch-action: manipulation;
+}
+
+/*
+ * Change the display on visually hidden accessible elements (opinionated).
+ */
+
+[hidden][aria-hidden="false"] {
+ clip: rect(0, 0, 0, 0);
+ display: inherit;
+ position: absolute;
+}
+
+[hidden][aria-hidden="false"]:focus {
+ clip: auto;
}
diff --git a/public/assets/bower/sanitize.css.br b/public/assets/bower/sanitize.css.br
new file mode 100644
index 00000000..7d379f30
Binary files /dev/null and b/public/assets/bower/sanitize.css.br differ
diff --git a/public/assets/bower/sanitize.css.gz b/public/assets/bower/sanitize.css.gz
new file mode 100644
index 00000000..07dcaf64
Binary files /dev/null and b/public/assets/bower/sanitize.css.gz differ
diff --git a/public/build/assets/bower/store2-c4daa8f871.min.js.br b/public/assets/bower/store2.min.js.br
similarity index 100%
rename from public/build/assets/bower/store2-c4daa8f871.min.js.br
rename to public/assets/bower/store2.min.js.br
diff --git a/public/build/assets/bower/store2-c4daa8f871.min.js.gz b/public/assets/bower/store2.min.js.gz
similarity index 100%
rename from public/build/assets/bower/store2-c4daa8f871.min.js.gz
rename to public/assets/bower/store2.min.js.gz
diff --git a/public/assets/css/global.css b/public/assets/css/global.css
index d60112e7..830df816 100644
--- a/public/assets/css/global.css
+++ b/public/assets/css/global.css
@@ -13,7 +13,6 @@ html {
box-sizing: inherit; }
#topheader {
- display: -webkit-box;
display: flex;
flex-flow: row; }
@@ -156,7 +155,6 @@ article header {
body {
text-rendering: optimizeLegibility;
- -webkit-font-feature-settings: "liga";
font-feature-settings: "liga";
font-family: "leitura-news", serif;
font-size: 1.2em; }
@@ -171,7 +169,6 @@ h1 {
text-decoration: none; }
nav {
- -webkit-font-feature-settings: "dlig";
font-feature-settings: "dlig"; }
article header h1 a {
@@ -219,7 +216,6 @@ textarea {
border-radius: 4px; }
button:hover {
- -webkit-transition: 0.5s ease-in-out;
transition: 0.5s ease-in-out;
background-color: #fdf6e3;
color: #002b36; }
@@ -242,5 +238,3 @@ input[type="checkbox"] {
.twitter-tweet-rendered + .note {
margin-top: 0; }
-
-/*# sourceMappingURL=global.css.map */
diff --git a/public/assets/css/global.css.br b/public/assets/css/global.css.br
new file mode 100644
index 00000000..720840d7
Binary files /dev/null and b/public/assets/css/global.css.br differ
diff --git a/public/assets/css/global.css.gz b/public/assets/css/global.css.gz
new file mode 100644
index 00000000..be655c01
Binary files /dev/null and b/public/assets/css/global.css.gz differ
diff --git a/public/build/assets/css/projects-d945298e4f.css.br b/public/assets/css/projects.css.br
similarity index 100%
rename from public/build/assets/css/projects-d945298e4f.css.br
rename to public/assets/css/projects.css.br
diff --git a/public/build/assets/css/projects-d945298e4f.css.gz b/public/assets/css/projects.css.gz
similarity index 100%
rename from public/build/assets/css/projects-d945298e4f.css.gz
rename to public/assets/css/projects.css.gz
diff --git a/public/build/assets/js/form-save-4d4f6e1cb8.js.br b/public/assets/js/form-save.js.br
similarity index 100%
rename from public/build/assets/js/form-save-4d4f6e1cb8.js.br
rename to public/assets/js/form-save.js.br
diff --git a/public/build/assets/js/form-save-4d4f6e1cb8.js.gz b/public/assets/js/form-save.js.gz
similarity index 100%
rename from public/build/assets/js/form-save-4d4f6e1cb8.js.gz
rename to public/assets/js/form-save.js.gz
diff --git a/public/build/assets/js/links-c394f9c920.js.br b/public/assets/js/links.js.br
similarity index 100%
rename from public/build/assets/js/links-c394f9c920.js.br
rename to public/assets/js/links.js.br
diff --git a/public/build/assets/js/links-c394f9c920.js.gz b/public/assets/js/links.js.gz
similarity index 100%
rename from public/build/assets/js/links-c394f9c920.js.gz
rename to public/assets/js/links.js.gz
diff --git a/public/build/assets/js/maps-a6a01a253b.js.br b/public/assets/js/maps.js.br
similarity index 100%
rename from public/build/assets/js/maps-a6a01a253b.js.br
rename to public/assets/js/maps.js.br
diff --git a/public/build/assets/js/maps-a6a01a253b.js.gz b/public/assets/js/maps.js.gz
similarity index 100%
rename from public/build/assets/js/maps-a6a01a253b.js.gz
rename to public/assets/js/maps.js.gz
diff --git a/public/build/assets/js/newnote-36ff29cdef.js.br b/public/assets/js/newnote.js.br
similarity index 100%
rename from public/build/assets/js/newnote-36ff29cdef.js.br
rename to public/assets/js/newnote.js.br
diff --git a/public/build/assets/js/newnote-36ff29cdef.js.gz b/public/assets/js/newnote.js.gz
similarity index 100%
rename from public/build/assets/js/newnote-36ff29cdef.js.gz
rename to public/assets/js/newnote.js.gz
diff --git a/public/build/assets/js/newplace-89a1be080e.js.br b/public/assets/js/newplace.js.br
similarity index 100%
rename from public/build/assets/js/newplace-89a1be080e.js.br
rename to public/assets/js/newplace.js.br
diff --git a/public/build/assets/js/newplace-89a1be080e.js.gz b/public/assets/js/newplace.js.gz
similarity index 100%
rename from public/build/assets/js/newplace-89a1be080e.js.gz
rename to public/assets/js/newplace.js.gz
diff --git a/public/build/assets/prism/prism-5c98941a94.css.br b/public/assets/prism/prism.css.br
similarity index 100%
rename from public/build/assets/prism/prism-5c98941a94.css.br
rename to public/assets/prism/prism.css.br
diff --git a/public/build/assets/prism/prism-5c98941a94.css.gz b/public/assets/prism/prism.css.gz
similarity index 100%
rename from public/build/assets/prism/prism-5c98941a94.css.gz
rename to public/assets/prism/prism.css.gz
diff --git a/public/build/assets/prism/prism-f6e997bc6d.js.br b/public/assets/prism/prism.js.br
similarity index 100%
rename from public/build/assets/prism/prism-f6e997bc6d.js.br
rename to public/assets/prism/prism.js.br
diff --git a/public/build/assets/prism/prism-f6e997bc6d.js.gz b/public/assets/prism/prism.js.gz
similarity index 100%
rename from public/build/assets/prism/prism-f6e997bc6d.js.gz
rename to public/assets/prism/prism.js.gz
diff --git a/public/build/assets/bower/Autolinker-2cb3468034.min.js b/public/build/assets/bower/Autolinker-2cb3468034.min.js
deleted file mode 100644
index 4e73c279..00000000
--- a/public/build/assets/bower/Autolinker-2cb3468034.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*!
- * Autolinker.js
- * 0.24.1
- *
- * Copyright(c) 2016 Gregory Jacobs
- * MIT License
- *
- * https://github.com/gregjacobs/Autolinker.js
- */
-!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.Autolinker=e()}(this,function(){var t=function(t){t=t||{},this.urls=this.normalizeUrlsCfg(t.urls),this.email="boolean"==typeof t.email?t.email:!0,this.twitter="boolean"==typeof t.twitter?t.twitter:!0,this.phone="boolean"==typeof t.phone?t.phone:!0,this.hashtag=t.hashtag||!1,this.newWindow="boolean"==typeof t.newWindow?t.newWindow:!0,this.stripPrefix="boolean"==typeof t.stripPrefix?t.stripPrefix:!0;var e=this.hashtag;if(e!==!1&&"twitter"!==e&&"facebook"!==e&&"instagram"!==e)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||"",this.replaceFn=t.replaceFn||null,this.htmlParser=null,this.matchers=null,this.tagBuilder=null};return t.prototype={constructor:t,normalizeUrlsCfg:function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"==typeof t.schemeMatches?t.schemeMatches:!0,wwwMatches:"boolean"==typeof t.wwwMatches?t.wwwMatches:!0,tldMatches:"boolean"==typeof t.tldMatches?t.tldMatches:!0}},normalizeTruncateCfg:function(e){return"number"==typeof e?{length:e,location:"end"}:t.Util.defaults(e||{},{length:Number.POSITIVE_INFINITY,location:"end"})},parse:function(t){for(var e=this.getHtmlParser(),r=e.parse(t),n=0,s=[],i=0,a=r.length;a>i;i++){var o=r[i],h=o.getType();if("element"===h&&"a"===o.getTagName())o.isClosing()?n=Math.max(n-1,0):n++;else if("text"===h&&0===n){var c=this.parseText(o.getText(),o.getOffset());s.push.apply(s,c)}}return s=this.compactMatches(s),this.hashtag||(s=s.filter(function(t){return"hashtag"!==t.getType()})),this.email||(s=s.filter(function(t){return"email"!==t.getType()})),this.phone||(s=s.filter(function(t){return"phone"!==t.getType()})),this.twitter||(s=s.filter(function(t){return"twitter"!==t.getType()})),this.urls.schemeMatches||(s=s.filter(function(t){return"url"!==t.getType()||"scheme"!==t.getUrlMatchType()})),this.urls.wwwMatches||(s=s.filter(function(t){return"url"!==t.getType()||"www"!==t.getUrlMatchType()})),this.urls.tldMatches||(s=s.filter(function(t){return"url"!==t.getType()||"tld"!==t.getUrlMatchType()})),s},compactMatches:function(t){t.sort(function(t,e){return t.getOffset()-e.getOffset()});for(var e=0;es;s++){for(var a=r[s].parseMatches(t),o=0,h=a.length;h>o;o++)a[o].setOffset(e+a[o].getOffset());n.push.apply(n,a)}return n},link:function(t){if(!t)return"";for(var e=this.parse(t),r=[],n=0,s=0,i=e.length;i>s;s++){var a=e[s];r.push(t.substring(n,a.getOffset())),r.push(this.createMatchReturnVal(a)),n=a.getOffset()+a.getMatchedText().length}return r.push(t.substring(n)),r.join("")},createMatchReturnVal:function(e){var r;if(this.replaceFn&&(r=this.replaceFn.call(this,this,e)),"string"==typeof r)return r;if(r===!1)return e.getMatchedText();if(r instanceof t.HtmlTag)return r.toAnchorString();var n=this.getTagBuilder(),s=n.build(e);return s.toAnchorString()},getHtmlParser:function(){var e=this.htmlParser;return e||(e=this.htmlParser=new t.htmlParser.HtmlParser),e},getMatchers:function(){if(this.matchers)return this.matchers;var e=t.matcher,r=[new e.Hashtag({serviceName:this.hashtag}),new e.Email,new e.Phone,new e.Twitter,new e.Url({stripPrefix:this.stripPrefix})];return this.matchers=r},getTagBuilder:function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new t.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e}},t.link=function(e,r){var n=new t(r);return n.link(e)},t.match={},t.matcher={},t.htmlParser={},t.truncate={},t.Util={abstractMethod:function(){throw"abstract"},trimRegex:/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,assign:function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t},defaults:function(t,e){for(var r in e)e.hasOwnProperty(r)&&void 0===t[r]&&(t[r]=e[r]);return t},extend:function(e,r){var n=e.prototype,s=function(){};s.prototype=n;var i;i=r.hasOwnProperty("constructor")?r.constructor:function(){n.constructor.apply(this,arguments)};var a=i.prototype=new s;return a.constructor=i,a.superclass=n,delete r.constructor,t.Util.assign(a,r),i},ellipsis:function(t,e,r){return t.length>e&&(r=null==r?"..":r,t=t.substring(0,e-r.length)+r),t},indexOf:function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var r=0,n=t.length;n>r;r++)if(t[r]===e)return r;return-1},splitAndCapture:function(t,e){for(var r,n=[],s=0;r=e.exec(t);)n.push(t.substring(s,r.index)),n.push(r[0]),s=r.index+r[0].length;return n.push(t.substring(s)),n},trim:function(t){return t.replace(this.trimRegex,"")}},t.HtmlTag=t.Util.extend(Object,{whitespaceRegex:/\s+/,constructor:function(e){t.Util.assign(this,e),this.innerHtml=this.innerHtml||this.innerHTML},setTagName:function(t){return this.tagName=t,this},getTagName:function(){return this.tagName||""},setAttr:function(t,e){var r=this.getAttrs();return r[t]=e,this},getAttr:function(t){return this.getAttrs()[t]},setAttrs:function(e){var r=this.getAttrs();return t.Util.assign(r,e),this},getAttrs:function(){return this.attrs||(this.attrs={})},setClass:function(t){return this.setAttr("class",t)},addClass:function(e){for(var r,n=this.getClass(),s=this.whitespaceRegex,i=t.Util.indexOf,a=n?n.split(s):[],o=e.split(s);r=o.shift();)-1===i(a,r)&&a.push(r);return this.getAttrs()["class"]=a.join(" "),this},removeClass:function(e){for(var r,n=this.getClass(),s=this.whitespaceRegex,i=t.Util.indexOf,a=n?n.split(s):[],o=e.split(s);a.length&&(r=o.shift());){var h=i(a,r);-1!==h&&a.splice(h,1)}return this.getAttrs()["class"]=a.join(" "),this},getClass:function(){return this.getAttrs()["class"]||""},hasClass:function(t){return-1!==(" "+this.getClass()+" ").indexOf(" "+t+" ")},setInnerHtml:function(t){return this.innerHtml=t,this},getInnerHtml:function(){return this.innerHtml||""},toAnchorString:function(){var t=this.getTagName(),e=this.buildAttrsStr();return e=e?" "+e:"",["<",t,e,">",this.getInnerHtml(),"",t,">"].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r+'="'+t[r]+'"');return e.join(" ")}}),t.RegexLib=function(){var t="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",e="0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",r=t+e,n=new RegExp("["+r+".\\-]*["+r+"\\-]"),s=/(?:international|construction|contractors|enterprises|photography|productions|foundation|immobilien|industries|management|properties|technology|christmas|community|directory|education|equipment|institute|marketing|solutions|vacations|bargains|boutique|builders|catering|cleaning|clothing|computer|democrat|diamonds|graphics|holdings|lighting|partners|plumbing|supplies|training|ventures|academy|careers|company|cruises|domains|exposed|flights|florist|gallery|guitars|holiday|kitchen|neustar|okinawa|recipes|rentals|reviews|shiksha|singles|support|systems|agency|berlin|camera|center|coffee|condos|dating|estate|events|expert|futbol|kaufen|luxury|maison|monash|museum|nagoya|photos|repair|report|social|supply|tattoo|tienda|travel|viajes|villas|vision|voting|voyage|actor|build|cards|cheap|codes|dance|email|glass|house|mango|ninja|parts|photo|press|shoes|solar|today|tokyo|tools|watch|works|aero|arpa|asia|best|bike|blue|buzz|camp|club|cool|coop|farm|fish|gift|guru|info|jobs|kiwi|kred|land|limo|link|menu|mobi|moda|name|pics|pink|post|qpon|rich|ruhr|sexy|tips|vote|voto|wang|wien|wiki|zone|bar|bid|biz|cab|cat|ceo|com|edu|gov|int|kim|mil|net|onl|org|pro|pub|red|tel|uno|wed|xxx|xyz|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)\b/;return{alphaNumericCharsStr:r,domainNameRegex:n,tldRegex:s}}(),t.AnchorTagBuilder=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},build:function(e){return new t.HtmlTag({tagName:"a",attrs:this.createAttrs(e.getType(),e.getAnchorHref()),innerHtml:this.processAnchorText(e.getAnchorText())})},createAttrs:function(t,e){var r={href:e},n=this.createCssClass(t);return n&&(r["class"]=n),this.newWindow&&(r.target="_blank"),r},createCssClass:function(t){var e=this.className;return e?e+" "+e+"-"+t:""},processAnchorText:function(t){return t=this.doTruncate(t)},doTruncate:function(e){var r=this.truncate;if(!r)return e;var n=r.length,s=r.location;return"smart"===s?t.truncate.TruncateSmart(e,n,".."):"middle"===s?t.truncate.TruncateMiddle(e,n,".."):t.truncate.TruncateEnd(e,n,"..")}}),t.htmlParser.HtmlParser=t.Util.extend(Object,{htmlRegex:function(){var t=/!--([\s\S]+?)--/,e=/[0-9a-zA-Z][0-9a-zA-Z:]*/,r=/[^\s\0"'>\/=\x01-\x1F\x7F]+/,n=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,s=r.source+"(?:\\s*=\\s*"+n.source+")?";return new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",s,"|",n.source+")",")*",">",")","|","(?:","<(/)?","(?:",t.source,"|","(?:","("+e.source+")","(?:","\\s*",s,")*","\\s*/?",")",")",">",")"].join(""),"gi")}(),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(t){for(var e,r,n=this.htmlRegex,s=0,i=[];null!==(e=n.exec(t));){var a=e[0],o=e[3],h=e[1]||e[4],c=!!e[2],u=e.index,l=t.substring(s,u);l&&(r=this.parseTextAndEntityNodes(s,l),i.push.apply(i,r)),o?i.push(this.createCommentNode(u,a,o)):i.push(this.createElementNode(u,a,h,c)),s=u+a.length}if(si;i+=2){var o=s[i],h=s[i+1];o&&(n.push(this.createTextNode(e,o)),e+=o.length),h&&(n.push(this.createEntityNode(e,h)),e+=h.length)}return n},createCommentNode:function(e,r,n){return new t.htmlParser.CommentNode({offset:e,text:r,comment:t.Util.trim(n)})},createElementNode:function(e,r,n,s){return new t.htmlParser.ElementNode({offset:e,text:r,tagName:n.toLowerCase(),closing:s})},createEntityNode:function(e,r){return new t.htmlParser.EntityNode({offset:e,text:r})},createTextNode:function(e,r){return new t.htmlParser.TextNode({offset:e,text:r})}}),t.htmlParser.HtmlNode=t.Util.extend(Object,{offset:void 0,text:void 0,constructor:function(e){t.Util.assign(this,e)},getType:t.Util.abstractMethod,getOffset:function(){return this.offset},getText:function(){return this.text}}),t.htmlParser.CommentNode=t.Util.extend(t.htmlParser.HtmlNode,{comment:"",getType:function(){return"comment"},getComment:function(){return this.comment}}),t.htmlParser.ElementNode=t.Util.extend(t.htmlParser.HtmlNode,{tagName:"",closing:!1,getType:function(){return"element"},getTagName:function(){return this.tagName},isClosing:function(){return this.closing}}),t.htmlParser.EntityNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"entity"}}),t.htmlParser.TextNode=t.Util.extend(t.htmlParser.HtmlNode,{getType:function(){return"text"}}),t.match.Match=t.Util.extend(Object,{constructor:function(t,e){this.matchedText=t,this.offset=e},getType:t.Util.abstractMethod,getMatchedText:function(){return this.matchedText},setOffset:function(t){this.offset=t},getOffset:function(){return this.offset},getAnchorHref:t.Util.abstractMethod,getAnchorText:t.Util.abstractMethod}),t.match.Email=t.Util.extend(t.match.Match,{constructor:function(e,r,n){t.match.Match.prototype.constructor.call(this,e,r),this.email=n},getType:function(){return"email"},getEmail:function(){return this.email},getAnchorHref:function(){return"mailto:"+this.email},getAnchorText:function(){return this.email}}),t.match.Hashtag=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s){t.match.Match.prototype.constructor.call(this,e,r),this.serviceName=n,this.hashtag=s},getType:function(){return"hashtag"},getServiceName:function(){return this.serviceName},getHashtag:function(){return this.hashtag},getAnchorHref:function(){var t=this.serviceName,e=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+e;case"facebook":return"https://www.facebook.com/hashtag/"+e;case"instagram":return"https://instagram.com/explore/tags/"+e;default:throw new Error("Unknown service name to point hashtag to: ",t)}},getAnchorText:function(){return"#"+this.hashtag}}),t.match.Phone=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s){t.match.Match.prototype.constructor.call(this,e,r),this.number=n,this.plusSign=s},getType:function(){return"phone"},getNumber:function(){return this.number},getAnchorHref:function(){return"tel:"+(this.plusSign?"+":"")+this.number},getAnchorText:function(){return this.matchedText}}),t.match.Twitter=t.Util.extend(t.match.Match,{constructor:function(e,r,n){t.match.Match.prototype.constructor.call(this,e,r),this.twitterHandle=n},getType:function(){return"twitter"},getTwitterHandle:function(){return this.twitterHandle},getAnchorHref:function(){return"https://twitter.com/"+this.twitterHandle},getAnchorText:function(){return"@"+this.twitterHandle}}),t.match.Url=t.Util.extend(t.match.Match,{constructor:function(e,r,n,s,i,a,o){t.match.Match.prototype.constructor.call(this,e,r),this.urlMatchType=s,this.url=n,this.protocolUrlMatch=i,this.protocolRelativeMatch=a,this.stripPrefix=o},urlPrefixRegex:/^(https?:\/\/)?(www\.)?/i,protocolRelativeRegex:/^\/\//,protocolPrepended:!1,getType:function(){return"url"},getUrlMatchType:function(){return this.urlMatchType},getUrl:function(){var t=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(t=this.url="http://"+t,this.protocolPrepended=!0),t},getAnchorHref:function(){var t=this.getUrl();return t.replace(/&/g,"&")},getAnchorText:function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix&&(t=this.stripUrlPrefix(t)),t=this.removeTrailingSlash(t)},stripUrlPrefix:function(t){return t.replace(this.urlPrefixRegex,"")},stripProtocolRelativePrefix:function(t){return t.replace(this.protocolRelativeRegex,"")},removeTrailingSlash:function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t}}),t.matcher.Matcher=t.Util.extend(Object,{constructor:function(e){t.Util.assign(this,e)},parseMatches:t.Util.abstractMethod}),t.matcher.Email=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=t.RegexLib.alphaNumericCharsStr,r=new RegExp("["+e+"\\-;:&=+$.,]+@"),n=t.RegexLib.domainNameRegex,s=t.RegexLib.tldRegex;return new RegExp([r.source,n.source,"\\.",s.source].join(""),"gi")}(),parseMatches:function(e){for(var r,n=this.matcherRegex,s=[];null!==(r=n.exec(e));){var i=r[0];s.push(new t.match.Email(i,r.index,i))}return s}}),t.matcher.Hashtag=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("#[_"+t.RegexLib.alphaNumericCharsStr+"]{1,139}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.nonWordCharRegex,i=this.serviceName,a=[];null!==(r=n.exec(e));){var o=r.index,h=e.charAt(o-1);if(0===o||s.test(h)){var c=r[0],u=r[0].slice(1);a.push(new t.match.Hashtag(c,o,i,u))}}return a}}),t.matcher.Phone=t.Util.extend(t.matcher.Matcher,{matcherRegex:/(?:(\+)?\d{1,3}[-\040.])?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]\d{4}/g,parseMatches:function(e){for(var r,n=this.matcherRegex,s=[];null!==(r=n.exec(e));){var i=r[0],a=i.replace(/\D/g,""),o=!!r[1];s.push(new t.match.Phone(i,r.index,a,o))}return s}}),t.matcher.Twitter=t.Util.extend(t.matcher.Matcher,{matcherRegex:new RegExp("@[_"+t.RegexLib.alphaNumericCharsStr+"]{1,20}","g"),nonWordCharRegex:new RegExp("[^"+t.RegexLib.alphaNumericCharsStr+"]"),parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.nonWordCharRegex,i=[];null!==(r=n.exec(e));){var a=r.index,o=e.charAt(a-1);if(0===a||s.test(o)){var h=r[0],c=r[0].slice(1);i.push(new t.match.Twitter(h,a,c))}}return i}}),t.matcher.Url=t.Util.extend(t.matcher.Matcher,{matcherRegex:function(){var e=/(?:[A-Za-z][-.+A-Za-z0-9]*:(?![A-Za-z][-.+A-Za-z0-9]*:\/\/)(?!\d+\/?)(?:\/\/)?)/,r=/(?:www\.)/,n=t.RegexLib.domainNameRegex,s=t.RegexLib.tldRegex,i=t.RegexLib.alphaNumericCharsStr,a=new RegExp("["+i+"\\-+&@#/%=~_()|'$*\\[\\]?!:,.;]*["+i+"\\-+&@#/%=~_()|'$*\\[\\]]");return new RegExp(["(?:","(",e.source,n.source,")","|","(","(//)?",r.source,n.source,")","|","(","(//)?",n.source+"\\.",s.source,")",")","(?:"+a.source+")?"].join(""),"gi")}(),wordCharRegExp:/\w/,openParensRe:/\(/g,closeParensRe:/\)/g,parseMatches:function(e){for(var r,n=this.matcherRegex,s=this.stripPrefix,i=[];null!==(r=n.exec(e));){var a=r[0],o=r[1],h=r[2],c=r[3],u=r[5],l=r.index,g=c||u,f=e.charAt(l-1);if(t.matcher.UrlMatchValidator.isValid(a,o)&&!(l>0&&"@"===f||l>0&&g&&this.wordCharRegExp.test(f))){if(this.matchHasUnbalancedClosingParen(a))a=a.substr(0,a.length-1);else{var m=this.matchHasInvalidCharAfterTld(a,o);m>-1&&(a=a.substr(0,m))}var p=o?"scheme":h?"www":"tld",d=!!o;i.push(new t.match.Url(a,l,a,p,d,!!g,s))}}return i},matchHasUnbalancedClosingParen:function(t){var e=t.charAt(t.length-1);if(")"===e){var r=t.match(this.openParensRe),n=t.match(this.closeParensRe),s=r&&r.length||0,i=n&&n.length||0;if(i>s)return!0}return!1},matchHasInvalidCharAfterTld:function(t,e){if(!t)return-1;var r=0;e&&(r=t.indexOf(":"),t=t.slice(r));var n=/^((.?\/\/)?[A-Za-z0-9\u00C0-\u017F\.\-]*[A-Za-z0-9\u00C0-\u017F\-]\.[A-Za-z]+)/,s=n.exec(t);return null===s?-1:(r+=s[1].length,t=t.slice(s[1].length),/^[^.A-Za-z:\/?#]/.test(t)?r:-1)}}),t.matcher.UrlMatchValidator={hasFullProtocolRegex:/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,uriSchemeRegex:/^[A-Za-z][-.+A-Za-z0-9]*:/,hasWordCharAfterProtocolRegex:/:[^\s]*?[A-Za-z\u00C0-\u017F]/,isValid:function(t,e){return!(e&&!this.isValidUriScheme(e)||this.urlMatchDoesNotHaveProtocolOrDot(t,e)||this.urlMatchDoesNotHaveAtLeastOneWordChar(t,e))},isValidUriScheme:function(t){var e=t.match(this.uriSchemeRegex)[0].toLowerCase();return"javascript:"!==e&&"vbscript:"!==e},urlMatchDoesNotHaveProtocolOrDot:function(t,e){return!(!t||e&&this.hasFullProtocolRegex.test(e)||-1!==t.indexOf("."))},urlMatchDoesNotHaveAtLeastOneWordChar:function(t,e){return t&&e?!this.hasWordCharAfterProtocolRegex.test(t):!1}},t.truncate.TruncateEnd=function(e,r,n){return t.Util.ellipsis(e,r,n)},t.truncate.TruncateMiddle=function(t,e,r){if(t.length<=e)return t;var n=e-r.length,s="";return n>0&&(s=t.substr(-1*Math.floor(n/2))),(t.substr(0,Math.ceil(n/2))+r+s).substr(0,e)},t.truncate.TruncateSmart=function(t,e,r){var n=function(t){var e={},r=t,n=r.match(/^([a-z]+):\/\//i);return n&&(e.scheme=n[1],r=r.substr(n[0].length)),n=r.match(/^(.*?)(?=(\?|#|\/|$))/i),n&&(e.host=n[1],r=r.substr(n[0].length)),n=r.match(/^\/(.*?)(?=(\?|#|$))/i),n&&(e.path=n[1],r=r.substr(n[0].length)),n=r.match(/^\?(.*?)(?=(#|$))/i),n&&(e.query=n[1],r=r.substr(n[0].length)),n=r.match(/^#(.*?)$/i),n&&(e.fragment=n[1]),e},s=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},i=function(t,e){var n=e/2,s=Math.ceil(n),i=-1*Math.floor(n),a="";return 0>i&&(a=t.substr(i)),t.substr(0,s)+r+a};if(t.length<=e)return t;var a=e-r.length,o=n(t);if(o.query){var h=o.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);h&&(o.query=o.query.substr(0,h[1].length),t=s(o))}if(t.length<=e)return t;if(o.host&&(o.host=o.host.replace(/^www\./,""),t=s(o)),t.length<=e)return t;var c="";if(o.host&&(c+=o.host),c.length>=a)return o.host.length==e?(o.host.substr(0,e-r.length)+r).substr(0,e):i(c,a).substr(0,e);var u="";if(o.path&&(u+="/"+o.path),o.query&&(u+="?"+o.query),u){if((c+u).length>=a){if((c+u).length==e)return(c+u).substr(0,e);var l=a-c.length;return(c+i(u,l)).substr(0,e)}c+=u}if(o.fragment){var g="#"+o.fragment;if((c+g).length>=a){if((c+g).length==e)return(c+g).substr(0,e);var f=a-c.length;return(c+i(g,f)).substr(0,e)}c+=g}if(o.scheme&&o.host){var m=o.scheme+"://";if((c+m).length0&&(p=c.substr(-1*Math.floor(a/2))),(c.substr(0,Math.ceil(a/2))+r+p).substr(0,e)},t});
\ No newline at end of file
diff --git a/public/build/assets/bower/Autolinker-2cb3468034.min.js.br b/public/build/assets/bower/Autolinker-2cb3468034.min.js.br
deleted file mode 100644
index f61d9e96..00000000
Binary files a/public/build/assets/bower/Autolinker-2cb3468034.min.js.br and /dev/null differ
diff --git a/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz b/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz
deleted file mode 100644
index c5319459..00000000
Binary files a/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz and /dev/null differ
diff --git a/public/build/assets/bower/alertify-1b3c6aa174.css b/public/build/assets/bower/alertify-1b3c6aa174.css
deleted file mode 100644
index a49a7e6a..00000000
--- a/public/build/assets/bower/alertify-1b3c6aa174.css
+++ /dev/null
@@ -1 +0,0 @@
-.alertify-logs>*{padding:12px 24px;color:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.2);border-radius:1px}.alertify-logs>*,.alertify-logs>.default{background:rgba(0,0,0,.8)}.alertify-logs>.error{background:rgba(244,67,54,.8)}.alertify-logs>.success{background:rgba(76,175,80,.9)}.alertify{position:fixed;background-color:rgba(0,0,0,.3);left:0;right:0;top:0;bottom:0;width:100%;height:100%;z-index:1}.alertify.hide{opacity:0;pointer-events:none}.alertify,.alertify.show{box-sizing:border-box;transition:all .33s cubic-bezier(.25,.8,.25,1)}.alertify,.alertify *{box-sizing:border-box}.alertify .dialog{padding:12px}.alertify .alert,.alertify .dialog{width:100%;margin:0 auto;position:relative;top:50%;transform:translateY(-50%)}.alertify .alert>*,.alertify .dialog>*{width:400px;max-width:95%;margin:0 auto;text-align:center;padding:12px;background:#fff;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084)}.alertify .alert .msg,.alertify .dialog .msg{padding:12px;margin-bottom:12px;margin:0;text-align:left}.alertify .alert input:not(.form-control),.alertify .dialog input:not(.form-control){margin-bottom:15px;width:100%;font-size:100%;padding:12px}.alertify .alert input:not(.form-control):focus,.alertify .dialog input:not(.form-control):focus{outline-offset:-2px}.alertify .alert nav,.alertify .dialog nav{text-align:right}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button),.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button){background:transparent;box-sizing:border-box;color:rgba(0,0,0,.87);position:relative;outline:0;border:0;display:inline-block;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:0 6px;margin:6px 8px;line-height:36px;min-height:36px;white-space:nowrap;min-width:88px;text-align:center;text-transform:uppercase;font-size:14px;text-decoration:none;cursor:pointer;border:1px solid transparent;border-radius:2px}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover{background-color:rgba(0,0,0,.05)}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus{border:1px solid rgba(0,0,0,.1)}.alertify .alert nav button.btn,.alertify .dialog nav button.btn{margin:6px 4px}.alertify-logs{position:fixed;z-index:1}.alertify-logs.bottom,.alertify-logs:not(.top){bottom:16px}.alertify-logs.left,.alertify-logs:not(.right){left:16px}.alertify-logs.left>*,.alertify-logs:not(.right)>*{float:left;transform:translateZ(0);height:auto}.alertify-logs.left>.show,.alertify-logs:not(.right)>.show{left:0}.alertify-logs.left>*,.alertify-logs.left>.hide,.alertify-logs:not(.right)>*,.alertify-logs:not(.right)>.hide{left:-110%}.alertify-logs.right{right:16px}.alertify-logs.right>*{float:right;transform:translateZ(0)}.alertify-logs.right>.show{right:0;opacity:1}.alertify-logs.right>*,.alertify-logs.right>.hide{right:-110%;opacity:0}.alertify-logs.top{top:0}.alertify-logs>*{box-sizing:border-box;transition:all .4s cubic-bezier(.25,.8,.25,1);position:relative;clear:both;backface-visibility:hidden;perspective:1000;max-height:0;margin:0;padding:0;overflow:hidden;opacity:0;pointer-events:none}.alertify-logs>.show{margin-top:12px;opacity:1;max-height:1000px;padding:12px;pointer-events:auto}
\ No newline at end of file
diff --git a/public/build/assets/bower/alertify-84061c87f5.js b/public/build/assets/bower/alertify-84061c87f5.js
deleted file mode 100644
index bbd91365..00000000
--- a/public/build/assets/bower/alertify-84061c87f5.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";function t(){var t={parent:document.body,version:"1.0.11",defaultOkLabel:"Ok",okLabel:"Ok",defaultCancelLabel:"Cancel",cancelLabel:"Cancel",defaultMaxLogItems:2,maxLogItems:2,promptValue:"",promptPlaceholder:"",closeLogOnClick:!1,closeLogOnClickDefault:!1,delay:5e3,defaultDelay:5e3,logContainerClass:"alertify-logs",logContainerDefaultClass:"alertify-logs",dialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"{{message}}
",log:"{{message}}
"},defaultDialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"{{message}}
",log:"{{message}}
"},build:function(t){var e=this.dialogs.buttons.ok,o=""+this.dialogs.message.replace("{{message}}",t.message);return"confirm"!==t.type&&"prompt"!==t.type||(e=this.dialogs.buttons.cancel+this.dialogs.buttons.ok),"prompt"===t.type&&(o+=this.dialogs.input),o=(o+this.dialogs.buttons.holder+"
").replace("{{buttons}}",e).replace("{{ok}}",this.okLabel).replace("{{cancel}}",this.cancelLabel)},setCloseLogOnClick:function(t){this.closeLogOnClick=!!t},close:function(t,e){this.closeLogOnClick&&t.addEventListener("click",function(){o(t)}),e=e&&!isNaN(+e)?+e:this.delay,0>e?o(t):e>0&&setTimeout(function(){o(t)},e)},dialog:function(t,e,o,n){return this.setup({type:e,message:t,onOkay:o,onCancel:n})},log:function(t,e,o){var n=document.querySelectorAll(".alertify-logs > div");if(n){var i=n.length-this.maxLogItems;if(i>=0)for(var a=0,l=i+1;l>a;a++)this.close(n[a],-1)}this.notify(t,e,o)},setLogPosition:function(t){this.logContainerClass="alertify-logs "+t},setupLogContainer:function(){var t=document.querySelector(".alertify-logs"),e=this.logContainerClass;return t||(t=document.createElement("div"),t.className=e,this.parent.appendChild(t)),t.className!==e&&(t.className=e),t},notify:function(e,o,n){var i=this.setupLogContainer(),a=document.createElement("div");a.className=o||"default",t.logTemplateMethod?a.innerHTML=t.logTemplateMethod(e):a.innerHTML=e,"function"==typeof n&&a.addEventListener("click",n),i.appendChild(a),setTimeout(function(){a.className+=" show"},10),this.close(a,this.delay)},setup:function(t){function e(e){"function"!=typeof e&&(e=function(){}),i&&i.addEventListener("click",function(i){t.onOkay&&"function"==typeof t.onOkay&&(l?t.onOkay(l.value,i):t.onOkay(i)),e(l?{buttonClicked:"ok",inputValue:l.value,event:i}:{buttonClicked:"ok",event:i}),o(n)}),a&&a.addEventListener("click",function(i){t.onCancel&&"function"==typeof t.onCancel&&t.onCancel(i),e({buttonClicked:"cancel",event:i}),o(n)}),l&&l.addEventListener("keyup",function(t){13===t.which&&i.click()})}var n=document.createElement("div");n.className="alertify hide",n.innerHTML=this.build(t);var i=n.querySelector(".ok"),a=n.querySelector(".cancel"),l=n.querySelector("input"),s=n.querySelector("label");l&&("string"==typeof this.promptPlaceholder&&(s?s.textContent=this.promptPlaceholder:l.placeholder=this.promptPlaceholder),"string"==typeof this.promptValue&&(l.value=this.promptValue));var r;return"function"==typeof Promise?r=new Promise(e):e(),this.parent.appendChild(n),setTimeout(function(){n.classList.remove("hide"),l&&t.type&&"prompt"===t.type?(l.select(),l.focus()):i&&i.focus()},100),r},okBtn:function(t){return this.okLabel=t,this},setDelay:function(t){return t=t||0,this.delay=isNaN(t)?this.defaultDelay:parseInt(t,10),this},cancelBtn:function(t){return this.cancelLabel=t,this},setMaxLogItems:function(t){this.maxLogItems=parseInt(t||this.defaultMaxLogItems)},theme:function(t){switch(t.toLowerCase()){case"bootstrap":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="";break;case"purecss":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="";break;case"mdl":case"material-design-light":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="";break;case"angular-material":this.dialogs.buttons.ok="",this.dialogs.buttons.cancel="",this.dialogs.input="
";break;case"default":default:this.dialogs.buttons.ok=this.defaultDialogs.buttons.ok,this.dialogs.buttons.cancel=this.defaultDialogs.buttons.cancel,this.dialogs.input=this.defaultDialogs.input}},reset:function(){this.parent=document.body,this.theme("default"),this.okBtn(this.defaultOkLabel),this.cancelBtn(this.defaultCancelLabel),this.setMaxLogItems(),this.promptValue="",this.promptPlaceholder="",this.delay=this.defaultDelay,this.setCloseLogOnClick(this.closeLogOnClickDefault),this.setLogPosition("bottom left"),this.logTemplateMethod=null},injectCSS:function(){if(!document.querySelector("#alertifyCSS")){var t=document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",e.id="alertifyCSS",e.innerHTML=".alertify-logs>*{padding:12px 24px;color:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.2);border-radius:1px}.alertify-logs>*,.alertify-logs>.default{background:rgba(0,0,0,.8)}.alertify-logs>.error{background:rgba(244,67,54,.8)}.alertify-logs>.success{background:rgba(76,175,80,.9)}.alertify{position:fixed;background-color:rgba(0,0,0,.3);left:0;right:0;top:0;bottom:0;width:100%;height:100%;z-index:1}.alertify.hide{opacity:0;pointer-events:none}.alertify,.alertify.show{box-sizing:border-box;transition:all .33s cubic-bezier(.25,.8,.25,1)}.alertify,.alertify *{box-sizing:border-box}.alertify .dialog{padding:12px}.alertify .alert,.alertify .dialog{width:100%;margin:0 auto;position:relative;top:50%;transform:translateY(-50%)}.alertify .alert>*,.alertify .dialog>*{width:400px;max-width:95%;margin:0 auto;text-align:center;padding:12px;background:#fff;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084)}.alertify .alert .msg,.alertify .dialog .msg{padding:12px;margin-bottom:12px;margin:0;text-align:left}.alertify .alert input:not(.form-control),.alertify .dialog input:not(.form-control){margin-bottom:15px;width:100%;font-size:100%;padding:12px}.alertify .alert input:not(.form-control):focus,.alertify .dialog input:not(.form-control):focus{outline-offset:-2px}.alertify .alert nav,.alertify .dialog nav{text-align:right}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button),.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button){background:transparent;box-sizing:border-box;color:rgba(0,0,0,.87);position:relative;outline:0;border:0;display:inline-block;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:0 6px;margin:6px 8px;line-height:36px;min-height:36px;white-space:nowrap;min-width:88px;text-align:center;text-transform:uppercase;font-size:14px;text-decoration:none;cursor:pointer;border:1px solid transparent;border-radius:2px}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):active,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):hover{background-color:rgba(0,0,0,.05)}.alertify .alert nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus,.alertify .dialog nav button:not(.btn):not(.pure-button):not(.md-button):not(.mdl-button):focus{border:1px solid rgba(0,0,0,.1)}.alertify .alert nav button.btn,.alertify .dialog nav button.btn{margin:6px 4px}.alertify-logs{position:fixed;z-index:1}.alertify-logs.bottom,.alertify-logs:not(.top){bottom:16px}.alertify-logs.left,.alertify-logs:not(.right){left:16px}.alertify-logs.left>*,.alertify-logs:not(.right)>*{float:left;transform:translateZ(0);height:auto}.alertify-logs.left>.show,.alertify-logs:not(.right)>.show{left:0}.alertify-logs.left>*,.alertify-logs.left>.hide,.alertify-logs:not(.right)>*,.alertify-logs:not(.right)>.hide{left:-110%}.alertify-logs.right{right:16px}.alertify-logs.right>*{float:right;transform:translateZ(0)}.alertify-logs.right>.show{right:0;opacity:1}.alertify-logs.right>*,.alertify-logs.right>.hide{right:-110%;opacity:0}.alertify-logs.top{top:0}.alertify-logs>*{box-sizing:border-box;transition:all .4s cubic-bezier(.25,.8,.25,1);position:relative;clear:both;backface-visibility:hidden;perspective:1000;max-height:0;margin:0;padding:0;overflow:hidden;opacity:0;pointer-events:none}.alertify-logs>.show{margin-top:12px;opacity:1;max-height:1000px;padding:12px;pointer-events:auto}",t.insertBefore(e,t.firstChild)}},removeCSS:function(){var t=document.querySelector("#alertifyCSS");t&&t.parentNode&&t.parentNode.removeChild(t)}};return t.injectCSS(),{_$$alertify:t,parent:function(e){t.parent=e},reset:function(){return t.reset(),this},alert:function(e,o,n){return t.dialog(e,"alert",o,n)||this},confirm:function(e,o,n){return t.dialog(e,"confirm",o,n)||this},prompt:function(e,o,n){return t.dialog(e,"prompt",o,n)||this},log:function(e,o){return t.log(e,"default",o),this},theme:function(e){return t.theme(e),this},success:function(e,o){return t.log(e,"success",o),this},error:function(e,o){return t.log(e,"error",o),this},cancelBtn:function(e){return t.cancelBtn(e),this},okBtn:function(e){return t.okBtn(e),this},delay:function(e){return t.setDelay(e),this},placeholder:function(e){return t.promptPlaceholder=e,this},defaultValue:function(e){return t.promptValue=e,this},maxLogItems:function(e){return t.setMaxLogItems(e),this},closeLogOnClick:function(e){return t.setCloseLogOnClick(!!e),this},logPosition:function(e){return t.setLogPosition(e||""),this},setLogTemplate:function(e){return t.logTemplateMethod=e,this},clearLogs:function(){return t.setupLogContainer().innerHTML="",this},version:t.version}}var e=500,o=function(t){if(t){var o=function(){t&&t.parentNode&&t.parentNode.removeChild(t)};t.classList.remove("show"),t.classList.add("hide"),t.addEventListener("transitionend",o),setTimeout(o,e)}};if("undefined"!=typeof module&&module&&module.exports){module.exports=function(){return new t};var n=new t;for(var i in n)module.exports[i]=n[i]}else"function"==typeof define&&define.amd?define(function(){return new t}):window.alertify=new t}();
\ No newline at end of file
diff --git a/public/build/assets/bower/fetch-d8a2646ccc.js b/public/build/assets/bower/fetch-d8a2646ccc.js
deleted file mode 100644
index 01aa5d06..00000000
--- a/public/build/assets/bower/fetch-d8a2646ccc.js
+++ /dev/null
@@ -1,393 +0,0 @@
-(function(self) {
- 'use strict';
-
- if (self.fetch) {
- return
- }
-
- function normalizeName(name) {
- if (typeof name !== 'string') {
- name = String(name)
- }
- if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) {
- throw new TypeError('Invalid character in header field name')
- }
- return name.toLowerCase()
- }
-
- function normalizeValue(value) {
- if (typeof value !== 'string') {
- value = String(value)
- }
- return value
- }
-
- function Headers(headers) {
- this.map = {}
-
- if (headers instanceof Headers) {
- headers.forEach(function(value, name) {
- this.append(name, value)
- }, this)
-
- } else if (headers) {
- Object.getOwnPropertyNames(headers).forEach(function(name) {
- this.append(name, headers[name])
- }, this)
- }
- }
-
- Headers.prototype.append = function(name, value) {
- name = normalizeName(name)
- value = normalizeValue(value)
- var list = this.map[name]
- if (!list) {
- list = []
- this.map[name] = list
- }
- list.push(value)
- }
-
- Headers.prototype['delete'] = function(name) {
- delete this.map[normalizeName(name)]
- }
-
- Headers.prototype.get = function(name) {
- var values = this.map[normalizeName(name)]
- return values ? values[0] : null
- }
-
- Headers.prototype.getAll = function(name) {
- return this.map[normalizeName(name)] || []
- }
-
- Headers.prototype.has = function(name) {
- return this.map.hasOwnProperty(normalizeName(name))
- }
-
- Headers.prototype.set = function(name, value) {
- this.map[normalizeName(name)] = [normalizeValue(value)]
- }
-
- Headers.prototype.forEach = function(callback, thisArg) {
- Object.getOwnPropertyNames(this.map).forEach(function(name) {
- this.map[name].forEach(function(value) {
- callback.call(thisArg, value, name, this)
- }, this)
- }, this)
- }
-
- function consumed(body) {
- if (body.bodyUsed) {
- return Promise.reject(new TypeError('Already read'))
- }
- body.bodyUsed = true
- }
-
- function fileReaderReady(reader) {
- return new Promise(function(resolve, reject) {
- reader.onload = function() {
- resolve(reader.result)
- }
- reader.onerror = function() {
- reject(reader.error)
- }
- })
- }
-
- function readBlobAsArrayBuffer(blob) {
- var reader = new FileReader()
- reader.readAsArrayBuffer(blob)
- return fileReaderReady(reader)
- }
-
- function readBlobAsText(blob) {
- var reader = new FileReader()
- reader.readAsText(blob)
- return fileReaderReady(reader)
- }
-
- var support = {
- blob: 'FileReader' in self && 'Blob' in self && (function() {
- try {
- new Blob()
- return true
- } catch(e) {
- return false
- }
- })(),
- formData: 'FormData' in self,
- arrayBuffer: 'ArrayBuffer' in self
- }
-
- function Body() {
- this.bodyUsed = false
-
-
- this._initBody = function(body) {
- this._bodyInit = body
- if (typeof body === 'string') {
- this._bodyText = body
- } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
- this._bodyBlob = body
- } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
- this._bodyFormData = body
- } else if (!body) {
- this._bodyText = ''
- } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {
- // Only support ArrayBuffers for POST method.
- // Receiving ArrayBuffers happens via Blobs, instead.
- } else {
- throw new Error('unsupported BodyInit type')
- }
-
- if (!this.headers.get('content-type')) {
- if (typeof body === 'string') {
- this.headers.set('content-type', 'text/plain;charset=UTF-8')
- } else if (this._bodyBlob && this._bodyBlob.type) {
- this.headers.set('content-type', this._bodyBlob.type)
- }
- }
- }
-
- if (support.blob) {
- this.blob = function() {
- var rejected = consumed(this)
- if (rejected) {
- return rejected
- }
-
- if (this._bodyBlob) {
- return Promise.resolve(this._bodyBlob)
- } else if (this._bodyFormData) {
- throw new Error('could not read FormData body as blob')
- } else {
- return Promise.resolve(new Blob([this._bodyText]))
- }
- }
-
- this.arrayBuffer = function() {
- return this.blob().then(readBlobAsArrayBuffer)
- }
-
- this.text = function() {
- var rejected = consumed(this)
- if (rejected) {
- return rejected
- }
-
- if (this._bodyBlob) {
- return readBlobAsText(this._bodyBlob)
- } else if (this._bodyFormData) {
- throw new Error('could not read FormData body as text')
- } else {
- return Promise.resolve(this._bodyText)
- }
- }
- } else {
- this.text = function() {
- var rejected = consumed(this)
- return rejected ? rejected : Promise.resolve(this._bodyText)
- }
- }
-
- if (support.formData) {
- this.formData = function() {
- return this.text().then(decode)
- }
- }
-
- this.json = function() {
- return this.text().then(JSON.parse)
- }
-
- return this
- }
-
- // HTTP methods whose capitalization should be normalized
- var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
-
- function normalizeMethod(method) {
- var upcased = method.toUpperCase()
- return (methods.indexOf(upcased) > -1) ? upcased : method
- }
-
- function Request(input, options) {
- options = options || {}
- var body = options.body
- if (Request.prototype.isPrototypeOf(input)) {
- if (input.bodyUsed) {
- throw new TypeError('Already read')
- }
- this.url = input.url
- this.credentials = input.credentials
- if (!options.headers) {
- this.headers = new Headers(input.headers)
- }
- this.method = input.method
- this.mode = input.mode
- if (!body) {
- body = input._bodyInit
- input.bodyUsed = true
- }
- } else {
- this.url = input
- }
-
- this.credentials = options.credentials || this.credentials || 'omit'
- if (options.headers || !this.headers) {
- this.headers = new Headers(options.headers)
- }
- this.method = normalizeMethod(options.method || this.method || 'GET')
- this.mode = options.mode || this.mode || null
- this.referrer = null
-
- if ((this.method === 'GET' || this.method === 'HEAD') && body) {
- throw new TypeError('Body not allowed for GET or HEAD requests')
- }
- this._initBody(body)
- }
-
- Request.prototype.clone = function() {
- return new Request(this)
- }
-
- function decode(body) {
- var form = new FormData()
- body.trim().split('&').forEach(function(bytes) {
- if (bytes) {
- var split = bytes.split('=')
- var name = split.shift().replace(/\+/g, ' ')
- var value = split.join('=').replace(/\+/g, ' ')
- form.append(decodeURIComponent(name), decodeURIComponent(value))
- }
- })
- return form
- }
-
- function headers(xhr) {
- var head = new Headers()
- var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\n')
- pairs.forEach(function(header) {
- var split = header.trim().split(':')
- var key = split.shift().trim()
- var value = split.join(':').trim()
- head.append(key, value)
- })
- return head
- }
-
- Body.call(Request.prototype)
-
- function Response(bodyInit, options) {
- if (!options) {
- options = {}
- }
-
- this.type = 'default'
- this.status = options.status
- this.ok = this.status >= 200 && this.status < 300
- this.statusText = options.statusText
- this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)
- this.url = options.url || ''
- this._initBody(bodyInit)
- }
-
- Body.call(Response.prototype)
-
- Response.prototype.clone = function() {
- return new Response(this._bodyInit, {
- status: this.status,
- statusText: this.statusText,
- headers: new Headers(this.headers),
- url: this.url
- })
- }
-
- Response.error = function() {
- var response = new Response(null, {status: 0, statusText: ''})
- response.type = 'error'
- return response
- }
-
- var redirectStatuses = [301, 302, 303, 307, 308]
-
- Response.redirect = function(url, status) {
- if (redirectStatuses.indexOf(status) === -1) {
- throw new RangeError('Invalid status code')
- }
-
- return new Response(null, {status: status, headers: {location: url}})
- }
-
- self.Headers = Headers
- self.Request = Request
- self.Response = Response
-
- self.fetch = function(input, init) {
- return new Promise(function(resolve, reject) {
- var request
- if (Request.prototype.isPrototypeOf(input) && !init) {
- request = input
- } else {
- request = new Request(input, init)
- }
-
- var xhr = new XMLHttpRequest()
-
- function responseURL() {
- if ('responseURL' in xhr) {
- return xhr.responseURL
- }
-
- // Avoid security warnings on getResponseHeader when not allowed by CORS
- if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {
- return xhr.getResponseHeader('X-Request-URL')
- }
-
- return
- }
-
- xhr.onload = function() {
- var status = (xhr.status === 1223) ? 204 : xhr.status
- if (status < 100 || status > 599) {
- reject(new TypeError('Network request failed'))
- return
- }
- var options = {
- status: status,
- statusText: xhr.statusText,
- headers: headers(xhr),
- url: responseURL()
- }
- var body = 'response' in xhr ? xhr.response : xhr.responseText
- resolve(new Response(body, options))
- }
-
- xhr.onerror = function() {
- reject(new TypeError('Network request failed'))
- }
-
- xhr.ontimeout = function() {
- reject(new TypeError('Network request failed'))
- }
-
- xhr.open(request.method, request.url, true)
-
- if (request.credentials === 'include') {
- xhr.withCredentials = true
- }
-
- if ('responseType' in xhr && support.blob) {
- xhr.responseType = 'blob'
- }
-
- request.headers.forEach(function(value, name) {
- xhr.setRequestHeader(name, value)
- })
-
- xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
- })
- }
- self.fetch.polyfill = true
-})(typeof self !== 'undefined' ? self : this);
diff --git a/public/build/assets/bower/fetch-d8a2646ccc.js.br b/public/build/assets/bower/fetch-d8a2646ccc.js.br
deleted file mode 100644
index 521342f2..00000000
Binary files a/public/build/assets/bower/fetch-d8a2646ccc.js.br and /dev/null differ
diff --git a/public/build/assets/bower/fetch-d8a2646ccc.js.gz b/public/build/assets/bower/fetch-d8a2646ccc.js.gz
deleted file mode 100644
index 8074740d..00000000
Binary files a/public/build/assets/bower/fetch-d8a2646ccc.js.gz and /dev/null differ
diff --git a/public/build/assets/bower/marked-c2a88705e2.min.js b/public/build/assets/bower/marked-c2a88705e2.min.js
deleted file mode 100644
index 555c1dc1..00000000
--- a/public/build/assets/bower/marked-c2a88705e2.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * marked - a markdown parser
- * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
- * https://github.com/chjj/marked
- */
-(function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i.5){ch="x"+ch.toString(16)}out+=""+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return""+(escaped?code:escape(code,true))+"\n
"}return''+(escaped?code:escape(code,true))+"\n
\n"};Renderer.prototype.blockquote=function(quote){return"\n"+quote+"
\n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+""+type+">\n"};Renderer.prototype.listitem=function(text){return""+text+"\n"};Renderer.prototype.paragraph=function(text){return""+text+"
\n"};Renderer.prototype.table=function(header,body){return"\n"+"\n"+header+"\n"+"\n"+body+"\n"+"
\n"};Renderer.prototype.tablerow=function(content){return"\n"+content+"
\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+""+type+">\n"};Renderer.prototype.strong=function(text){return""+text+""};Renderer.prototype.em=function(text){return""+text+""};Renderer.prototype.codespan=function(text){return""+text+"
"};Renderer.prototype.br=function(){return this.options.xhtml?"
":"
"};Renderer.prototype.del=function(text){return""+text+""};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='"+text+"";return out};Renderer.prototype.image=function(href,title,text){var out='
":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;iAn error occured:
"+escape(e.message+"",true)+"
"}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}());
\ No newline at end of file
diff --git a/public/build/assets/bower/sanitize-85919f917a.css b/public/build/assets/bower/sanitize-85919f917a.css
deleted file mode 100644
index e9e84f1c..00000000
--- a/public/build/assets/bower/sanitize-85919f917a.css
+++ /dev/null
@@ -1,352 +0,0 @@
-/*! sanitize.css v3.3.0 | CC0 1.0 Public Domain | github.com/10up/sanitize.css */
-
-/* Latest tested: Android 6, Chrome 48, Edge 13, Firefox 44, Internet Explorer 11, iOS 9, Opera 35, Safari 9, Windows Phone 8.1 */
-
-/*
- * Normalization
- */
-
-abbr[title] {
- text-decoration: underline; /* Chrome 48+, Edge 12+, Internet Explorer 11-, Safari 9+ */
- text-decoration: underline dotted; /* Firefox 40+ */
-}
-
-audio:not([controls]) {
- display: none; /* Chrome 44-, iOS 8+, Safari 9+ */
-}
-
-b,
-strong {
- font-weight: bolder; /* Edge 12+, Safari 6.2+, and Chrome 18+ */
-}
-
-button {
- -webkit-appearance: button; /* iOS 8+ */
- overflow: visible; /* Internet Explorer 11- */
-}
-
-button,
-input {
-}
-
-button::-moz-focus-inner, input::-moz-focus-inner {
- border: 0;/* Firefox 4+ */
- padding: 0;/* Firefox 4+ */
-}
-
-button:-moz-focusring, input:-moz-focusring {
- outline: 1px dotted ButtonText;/* Firefox 4+ */
-}
-
-button,
-select {
- text-transform: none; /* Firefox 40+, Internet Explorer 11- */
-}
-
-details {
- display: block; /* Edge 12+, Firefox 40+, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-html {
- -ms-overflow-style: -ms-autohiding-scrollbar; /* Edge 12+, Internet Explorer 11- */
- overflow-y: scroll; /* All browsers without overlaying scrollbars */
- -webkit-text-size-adjust: 100%; /* iOS 8+, Windows Phone 8.1+ */
-}
-
-hr {
- overflow: visible; /* Internet Explorer 11-, Edge 12+ */
-}
-
-input {
- -webkit-border-radius: 0 /* iOS 8+ */
-}
-
-input[type="button"],
- input[type="reset"],
- input[type="submit"] {
- -webkit-appearance: button;/* iOS 8+ */
-}
-
-input[type="number"] {
- width: auto;/* Firefox 36+ */
-}
-
-input[type="search"] {
- -webkit-appearance: textfield;/* Chrome 45+, Safari 9+ */
-}
-
-input[type="search"]::-webkit-search-cancel-button,
- input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;/* Chrome 45+, Safari 9+ */
-}
-
-main {
- display: block; /* Android 4.3-, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-pre {
- overflow: auto; /* Internet Explorer 11- */
-}
-
-progress {
- display: inline-block; /* Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-summary {
- display: block; /* Firefox 40+, Internet Explorer 11-, Windows Phone 8.1+ */
-}
-
-svg:not(:root) {
- overflow: hidden; /* Internet Explorer 11- */
-}
-
-template {
- display: none; /* Android 4.3-, Internet Explorer 11-, iOS 7-, Safari 7-, Windows Phone 8.1+ */
-}
-
-textarea {
- overflow: auto; /* Edge 12+, Internet Explorer 11- */
-}
-
-[hidden] {
- display: none; /* Internet Explorer 10- */
-}
-
-/*
- * Universal inheritance
- */
-
-*,
-:before,
-:after {
- box-sizing: inherit;
-}
-
-* {
- font-size: inherit;
- line-height: inherit;
-}
-
-:before,
-:after {
- text-decoration: inherit;
- vertical-align: inherit;
-}
-
-button,
-input,
-select,
-textarea {
- font-family: inherit;
- font-style: inherit;
- font-weight: inherit;
-}
-
-
-
-/*
- * Opinionated defaults
- */
-
-/* specify the margin and padding of all elements */
-
-* {
- margin: 0;
- padding: 0;
-}
-
-/* specify the border style and width of all elements */
-
-*,
-:before,
-:after {
- border-style: solid;
- border-width: 0;
-}
-
-/* remove the tapping delay from clickable elements */
-
-a,
-area,
-button,
-input,
-label,
-select,
-textarea,
-[tabindex] {
- -ms-touch-action: manipulation;
- touch-action: manipulation;
-}
-
-/* specify the standard appearance of selects */
-
-select {
- -moz-appearance: none; /* Firefox 40+ */
- -webkit-appearance: none /* Chrome 45+ */
-}
-
-select::-ms-expand {
- display: none;/* Edge 12+, Internet Explorer 11- */
-}
-
-select::-ms-value {
- color: currentColor;/* Edge 12+, Internet Explorer 11- */
-}
-
-/* use current current as the default fill of svg elements */
-
-svg {
- fill: currentColor;
-}
-
-/* specify the progress cursor of updating elements */
-
-[aria-busy="true"] {
- cursor: progress;
-}
-
-/* specify the pointer cursor of trigger elements */
-
-[aria-controls] {
- cursor: pointer;
-}
-
-/* specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
-
-[aria-disabled] {
- cursor: default;
-}
-
-/* specify the style of visually hidden yet accessible elements */
-
-[hidden][aria-hidden="false"] {
- clip: rect(0 0 0 0);
- display: inherit;
- position: absolute
-}
-
-[hidden][aria-hidden="false"]:focus {
- clip: auto;
-}
-
-
-
-/*
- * Configurable defaults
- */
-
-/* specify the background repeat of all elements */
-
-* {
- background-repeat: no-repeat;
-}
-
-/* specify the root styles of the document */
-
-:root {
- background-color: #ffffff;
- box-sizing: border-box;
- color: #000000;
- cursor: default;
- font: 100%/1.5 sans-serif;
-}
-
-/* specify the text decoration of anchors */
-
-a {
- text-decoration: none;
-}
-
-/* specify the alignment of media elements */
-
-audio,
-canvas,
-iframe,
-img,
-svg,
-video {
- vertical-align: middle;
-}
-
-/* specify the coloring of form elements */
-
-button,
-input,
-select,
-textarea {
- background-color: transparent;
- color: inherit;
-}
-
-/* specify the minimum height of form elements */
-
-button,
-[type="button"],
-[type="date"],
-[type="datetime"],
-[type="datetime-local"],
-[type="email"],
-[type="month"],
-[type="number"],
-[type="password"],
-[type="reset"],
-[type="search"],
-[type="submit"],
-[type="tel"],
-[type="text"],
-[type="time"],
-[type="url"],
-[type="week"],
-select,
-textarea {
- min-height: 1.5em;
-}
-
-/* specify the font family of code elements */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
-}
-
-/* specify the list style of nav lists */
-
-nav ol,
-nav ul {
- list-style: none;
-}
-
-/* specify the font size of small elements */
-
-small {
- font-size: 75%;
-}
-
-/* specify the border styling of tables */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-/* specify the resizability of textareas */
-
-textarea {
- resize: vertical;
-}
-
-/* specify the background color, font color, and drop shadow of text selections */
-
-::-moz-selection {
- background-color: #b3d4fc; /* required when declaring ::selection */
- color: #ffffff;
- text-shadow: none;
-}
-
-::selection {
- background-color: #b3d4fc; /* required when declaring ::selection */
- color: #ffffff;
- text-shadow: none;
-}
diff --git a/public/build/assets/bower/sanitize-85919f917a.css.br b/public/build/assets/bower/sanitize-85919f917a.css.br
deleted file mode 100644
index 977e0e73..00000000
Binary files a/public/build/assets/bower/sanitize-85919f917a.css.br and /dev/null differ
diff --git a/public/build/assets/bower/sanitize-85919f917a.css.gz b/public/build/assets/bower/sanitize-85919f917a.css.gz
deleted file mode 100644
index adff6d3f..00000000
Binary files a/public/build/assets/bower/sanitize-85919f917a.css.gz and /dev/null differ
diff --git a/public/build/assets/bower/store2-c4daa8f871.min.js b/public/build/assets/bower/store2-c4daa8f871.min.js
deleted file mode 100644
index 72aff0ab..00000000
--- a/public/build/assets/bower/store2-c4daa8f871.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! store2 - v2.3.2 - 2015-10-27
-* Copyright (c) 2015 Nathan Bubna; Licensed MIT, GPL */
-
-!function(a,b){var c={version:"2.3.2",areas:{},apis:{},inherit:function(a,b){for(var c in a)b.hasOwnProperty(c)||(b[c]=a[c]);return b},stringify:function(a){return void 0===a||"function"==typeof a?a+"":JSON.stringify(a)},parse:function(a){try{return JSON.parse(a)}catch(b){return a}},fn:function(a,b){c.storeAPI[a]=b;for(var d in c.apis)c.apis[d][a]=b},get:function(a,b){return a.getItem(b)},set:function(a,b,c){a.setItem(b,c)},remove:function(a,b){a.removeItem(b)},key:function(a,b){return a.key(b)},length:function(a){return a.length},clear:function(a){a.clear()},Store:function(a,b,d){var e=c.inherit(c.storeAPI,function(a,b,c){return 0===arguments.length?e.getAll():void 0!==b?e.set(a,b,c):"string"==typeof a||"number"==typeof a?e.get(a):a?e.setAll(a,b):e.clear()});e._id=a;try{var f="_safariPrivate_";b.setItem(f,"sucks"),e._area=b,b.removeItem(f)}catch(g){}return e._area||(e._area=c.inherit(c.storageAPI,{items:{},name:"fake"})),e._ns=d||"",c.areas[a]||(c.areas[a]=e._area),c.apis[e._ns+e._id]||(c.apis[e._ns+e._id]=e),e},storeAPI:{area:function(a,b){var d=this[a];return d&&d.area||(d=c.Store(a,b,this._ns),this[a]||(this[a]=d)),d},namespace:function(a,b){if(!a)return this._ns?this._ns.substring(0,this._ns.length-1):"";var d=a,e=this[d];return e&&e.namespace||(e=c.Store(this._id,this._area,this._ns+d+"."),this[d]||(this[d]=e),b||e.area("session",c.areas.session)),e},isFake:function(){return"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(a){return this._area.has?this._area.has(this._in(a)):!!(this._in(a)in this._area)},size:function(){return this.keys().length},each:function(a,b){for(var d=0,e=c.length(this._area);e>d;d++){var f=this._out(c.key(this._area,d));if(void 0!==f&&a.call(this,f,b||this.get(f))===!1)break;e>c.length(this._area)&&(e--,d--)}return b||this},keys:function(){return this.each(function(a,b){b.push(a)},[])},get:function(a,b){var d=c.get(this._area,this._in(a));return null!==d?c.parse(d):b||d},getAll:function(){return this.each(function(a,b){b[a]=this.get(a)},{})},set:function(a,b,d){var e=this.get(a);return null!=e&&d===!1?b:c.set(this._area,this._in(a),c.stringify(b),d)||e},setAll:function(a,b){var c,d;for(var e in a)d=a[e],this.set(e,d,b)!==d&&(c=!0);return c},remove:function(a){var b=this.get(a);return c.remove(this._area,this._in(a)),b},clear:function(){return this._ns?this.each(function(a){c.remove(this._area,this._in(a))},1):c.clear(this._area),this},clearAll:function(){var a=this._area;for(var b in c.areas)c.areas.hasOwnProperty(b)&&(this._area=c.areas[b],this.clear());return this._area=a,this},_in:function(a){return"string"!=typeof a&&(a=c.stringify(a)),this._ns?this._ns+a:a},_out:function(a){return this._ns?a&&0===a.indexOf(this._ns)?a.substring(this._ns.length):void 0:a}},storageAPI:{length:0,has:function(a){return this.items.hasOwnProperty(a)},key:function(a){var b=0;for(var c in this.items)if(this.has(c)&&a===b++)return c},setItem:function(a,b){this.has(a)||this.length++,this.items[a]=b},removeItem:function(a){this.has(a)&&(delete this.items[a],this.length--)},getItem:function(a){return this.has(a)?this.items[a]:null},clear:function(){for(var a in this.list)this.removeItem(a)},toString:function(){return this.length+" items in "+this.name+"Storage"}}};a.store&&(c.conflict=a.store);var d=c.Store("local",function(){try{return localStorage}catch(a){}}());d.local=d,d._=c,d.area("session",function(){try{return sessionStorage}catch(a){}}()),a.store=d,"function"==typeof b&&void 0!==b.amd?b(function(){return d}):"undefined"!=typeof module&&module.exports&&(module.exports=d)}(this,this.define);
-//# sourceMappingURL=store2.min.js.map
\ No newline at end of file
diff --git a/public/build/assets/css/global-5eaecdf53d.css b/public/build/assets/css/global-5eaecdf53d.css
deleted file mode 100644
index d60112e7..00000000
--- a/public/build/assets/css/global-5eaecdf53d.css
+++ /dev/null
@@ -1,246 +0,0 @@
-html {
- background: url("/assets/img/escheresque.png"); }
-
-.map {
- height: 150px; }
-
-html {
- box-sizing: border-box; }
-
-*,
-*::before,
-*::after {
- box-sizing: inherit; }
-
-#topheader {
- display: -webkit-box;
- display: flex;
- flex-flow: row; }
-
-#topheader a {
- padding: 0.5em 1em; }
-
-nav {
- padding-top: 0.5em; }
-
-.social-list {
- padding-left: 2em; }
-
-.note {
- background-color: #eee8d5;
- box-shadow: 0 0 10px 2px #93a1a1;
- padding: 0.5em;
- margin-top: 1em; }
-
-.note::after {
- content: " ";
- display: block;
- height: 0;
- clear: both; }
-
-.note a {
- word-wrap: break-word; }
-
-.note .e-content p:first-child {
- margin-top: 0; }
-
-.note-metadata {
- width: 100%; }
-
-.social-links {
- float: right; }
-
-.social-links a {
- text-decoration: none; }
-
-.icon {
- width: auto;
- height: 1em;
- fill: #268bd2; }
-
-.reply {
- margin-left: 2em;
- margin-right: 2em;
- font-size: 0.8em;
- padding: 0.5em; }
-
-.reply-to {
- margin-left: 2em;
- margin-right: 2em;
- font-size: 0.8em;
- padding-top: 2em; }
-
-.reply-to + .note {
- margin-top: 0.3em; }
-
-.mini-h-card {
- border-radius: 2px;
- border: 1px solid #586e75;
- padding: 0 0.2em;
- text-decoration: none;
- margin-right: 5px;
- white-space: nowrap; }
-
-.mini-h-card img {
- height: 1em;
- border-radius: 2px;
- vertical-align: text-bottom; }
-
-.like-photo {
- height: 1.26em; }
-
-.reply .e-content {
- margin-top: 0.5em;
- padding-left: 0.5em; }
-
-.notes-subtitle {
- font-size: 1em; }
-
-.note-photo {
- width: 100%;
- height: auto;
- image-orientation: from-image; }
-
-article header {
- margin-top: 0.5em;
- margin-bottom: 0.8em; }
-
-.post-info {
- font-size: 0.8em;
- font-style: italic;
- margin-top: -0.8em; }
-
-.contact {
- position: relative; }
-
-.contact-links {
- list-style-type: none; }
-
-.contact img {
- height: auto;
- width: 2em;
- position: absolute;
- top: 0;
- left: 0; }
-
-.contact-info {
- margin-left: 2em; }
-
-#map {
- height: 300px; }
-
-/* media queries */
-@media (min-width: 700px) {
- main {
- margin-left: 10em;
- margin-right: 10em; }
- footer {
- margin-left: 13em;
- margin-right: 13em; }
- .youtube {
- width: 640px;
- height: 360px; } }
-
-@media (max-width: 699px) {
- main {
- margin-left: 10px;
- margin-right: 10px; }
- article {
- word-wrap: break-word; }
- footer {
- margin-left: 15px;
- margin-right: 15px; }
- .youtube {
- width: 100%;
- height: auto; } }
-
-body {
- text-rendering: optimizeLegibility;
- -webkit-font-feature-settings: "liga";
- font-feature-settings: "liga";
- font-family: "leitura-news", serif;
- font-size: 1.2em; }
-
-#topheader h1 {
- font-family: "leitura-news", serif; }
-
-h1 {
- font-family: "prenton", sans-serif; }
-
-#topheader a {
- text-decoration: none; }
-
-nav {
- -webkit-font-feature-settings: "dlig";
- font-feature-settings: "dlig"; }
-
-article header h1 a {
- text-decoration: none; }
-
-article div a {
- text-decoration: none; }
-
-footer {
- font-size: 0.8em; }
-
-.emoji {
- width: auto;
- height: 1em; }
-
-body {
- color: #002b36; }
-
-header a {
- color: #002b36; }
-
-a {
- color: #268bd2; }
-
-form {
- width: 100%; }
-
-fieldset {
- min-width: 0;
- width: 100%; }
-
-input[type="text"],
-input[type="file"],
-textarea {
- width: 100%; }
-
-input,
-button,
-textarea {
- -webkit-appearance: none;
- -moz-appearance: none;
- background-color: #002b36;
- color: #fdf6e3;
- border: 1px solid #fdf6e3;
- border-radius: 4px; }
-
-button:hover {
- -webkit-transition: 0.5s ease-in-out;
- transition: 0.5s ease-in-out;
- background-color: #fdf6e3;
- color: #002b36; }
-
-button:disabled {
- background-color: #93a1a1;
- color: #002b36; }
-
-input[type="checkbox"] {
- -webkit-appearance: checkbox;
- -moz-appearance: checkbox; }
-
-#photo {
- background: inherit;
- color: inherit;
- border: none; }
-
-.twitter-tweet-rendered {
- margin-bottom: 0 !important; }
-
-.twitter-tweet-rendered + .note {
- margin-top: 0; }
-
-/*# sourceMappingURL=global.css.map */
diff --git a/public/build/assets/css/global-5eaecdf53d.css.br b/public/build/assets/css/global-5eaecdf53d.css.br
deleted file mode 100644
index 54616e78..00000000
Binary files a/public/build/assets/css/global-5eaecdf53d.css.br and /dev/null differ
diff --git a/public/build/assets/css/global-5eaecdf53d.css.gz b/public/build/assets/css/global-5eaecdf53d.css.gz
deleted file mode 100644
index 0a7baea0..00000000
Binary files a/public/build/assets/css/global-5eaecdf53d.css.gz and /dev/null differ
diff --git a/public/build/assets/css/global.css.map b/public/build/assets/css/global.css.map
deleted file mode 100644
index 83a53655..00000000
--- a/public/build/assets/css/global.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["global.scss","layout.scss","components/fonts.scss","components/colours.scss","components/forms.scss","components/twitter.scss"],"names":[],"mappings":"AAyBA;EACI,+CAAe,EAClB;;AAED;EACI,cAAc,EACjB;;AC5BD;EACI,uBAAuB,EAC1B;;AAED;;;EAGI,oBAAoB,EACvB;;AAED;EACI,qBAAc;EAAd,cAAc;EACd,eAAe,EAClB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,0BDlBe;ECmBf,iCDpBe;ECqBf,eAAe;EACf,gBAAgB,EACnB;;AAED;EACI,aAAa;EACb,eAAe;EACf,UAAU;EACV,YAAY,EACf;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,cAAc,EACjB;;AAED;EACI,YAAY,EACf;;AAED;EACI,aAAa,EAChB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,YAAY;EACZ,YAAY;EACZ,cD/Ce,ECgDlB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe,EAClB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB,EACpB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,mBAAmB;EACnB,0BDjFe;ECkFf,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,YAAY;EACZ,mBAAmB;EACnB,4BAA4B,EAC/B;;AAED;EACI,eAAe,EAClB;;AAED;EACI,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,eAAe,EAClB;;AAED;EACI,YAAY;EACZ,aAAa;EACb,8BAA8B,EACjC;;AAID;EACI,kBAAkB;EAClB,qBAAqB,EACxB;;AAED;EACI,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB,EACtB;;AAGD;EACI,mBAAmB,EACtB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,OAAO;EACP,QAAQ,EACX;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,cAAc,EACjB;;AAED,mBAAmB;AACnB;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,aAAa;IACb,cAAc,EACjB,EAAA;;AAGL;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,sBAAsB,EACzB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,YAAY;IACZ,aAAa,EAChB,EAAA;;AClML;EACI,mCAAmC;EACnC,sCAA8B;EAA9B,8BAA8B;EAC9B,mCFFmC;EEGnC,iBAAiB,EACpB;;AAED;EACI,mCFPmC,EEQtC;;AAED;EACI,mCFVsC,EEWzC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sCAA8B;EAA9B,8BAA8B,EACjC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,YAAY;EACZ,YAAY,EACf;;ACvCD;EACI,eHKe,EGJlB;;AAED;EACI,eHCe,EGAlB;;AAED;EACI,eHUe,EGTlB;;ACTD;EACI,YAAY,EACf;;AAED;EACI,aAAa;EACb,YAAY,EACf;;AAED;;;EAGI,YAAY,EACf;;AAED;;;EAGI,yBAAyB;EACzB,sBAAsB;EACtB,0BJfe;EIgBf,eJTe;EIUf,0BJVe;EIWf,mBAAmB,EACtB;;AAED;EACI,qCAA6B;EAA7B,6BAA6B;EAC7B,0BJhBe;EIiBf,eJxBe,EIyBlB;;AAED;EACI,0BJvBe;EIwBf,eJ7Be,EI8BlB;;AAED;EACI,6BAA6B;EAC7B,0BAA0B,EAC7B;;AAED;EACI,oBAAoB;EACpB,eAAe;EACf,aAAa,EAChB;;AC9CD;EACI,4BAA4B,EAC/B;;AAED;EACI,cAAc,EACjB","file":"global.css","sourcesContent":["//global.scss\n\n//variables\n$font-stack-body: \"leitura-news\", serif;\n$font-stack-headers: \"prenton\", sans-serif;\n\n//solarized variables TERMCOL\n$base03: #002b36;//brblack\n$base02: #073642;//black\n$base01: #586e75;//brgreen\n$base00: #657b83;//bryellow\n$base0: #839496;//brblue\n$base1: #93a1a1;//brcyan\n$base2: #eee8d5;//white\n$base3: #fdf6e3;//brwhite\n$yellow: #b58900;\n$orange: #cb4b16;\n$red: #dc322f;\n$magenta: #d33682;\n$violet: #6c71c4;\n$blue: #268bd2;\n$cyan: #2aa198;\n$green: #859900;\n\n//global styles\nhtml {\n background: url('/assets/img/escheresque.png');\n}\n\n.map {\n height: 150px;\n}\n\n//layout\n@import \"layout\";\n\n//components\n@import \"components/fonts\";\n@import \"components/colours\";\n@import \"components/forms\";\n@import \"components/twitter\";\n","//layout.scss\n\n//boxes\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n#topheader {\n display: flex;\n flex-flow: row;\n}\n\n#topheader a {\n padding: 0.5em 1em;\n}\n\nnav {\n padding-top: 0.5em;\n}\n\n.social-list {\n padding-left: 2em;\n}\n\n.note {\n background-color: $base2;\n box-shadow: 0 0 10px 2px $base1;\n padding: 0.5em;\n margin-top: 1em;\n}\n\n.note::after {\n content: \" \";\n display: block;\n height: 0;\n clear: both;\n}\n\n.note a {\n word-wrap: break-word;\n}\n\n.note .e-content p:first-child {\n margin-top: 0;\n}\n\n.note-metadata {\n width: 100%;\n}\n\n.social-links {\n float: right;\n}\n\n.social-links a {\n text-decoration: none;\n}\n\n.icon {\n width: auto;\n height: 1em;\n fill: $blue;\n}\n\n.reply {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding: 0.5em;\n}\n\n.reply-to {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding-top: 2em;\n}\n\n.reply-to + .note {\n margin-top: 0.3em;\n}\n\n.mini-h-card {\n border-radius: 2px;\n border: 1px solid $base01;\n padding: 0 0.2em;\n text-decoration: none;\n margin-right: 5px;\n white-space: nowrap;\n}\n\n.mini-h-card img {\n height: 1em;\n border-radius: 2px;\n vertical-align: text-bottom;\n}\n\n.like-photo {\n height: 1.26em;\n}\n\n.reply .e-content {\n margin-top: 0.5em;\n padding-left: 0.5em;\n}\n\n.notes-subtitle {\n font-size: 1em;\n}\n\n.note-photo {\n width: 100%;\n height: auto;\n image-orientation: from-image;\n}\n\n//articles\n\narticle header {\n margin-top: 0.5em;\n margin-bottom: 0.8em;\n}\n\n.post-info {\n font-size: 0.8em;\n font-style: italic;\n margin-top: -0.8em;\n}\n\n//contacts\n.contact {\n position: relative;\n}\n\n.contact-links {\n list-style-type: none;\n}\n\n.contact img {\n height: auto;\n width: 2em;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.contact-info {\n margin-left: 2em;\n}\n\n#map {\n height: 300px;\n}\n\n/* media queries */\n@media (min-width: 700px) {\n main {\n margin-left: 10em;\n margin-right: 10em;\n }\n\n footer {\n margin-left: 13em;\n margin-right: 13em;\n }\n\n .youtube {\n width: 640px;\n height: 360px;\n }\n}\n\n@media (max-width: 699px) {\n main {\n margin-left: 10px;\n margin-right: 10px;\n }\n\n article {\n word-wrap: break-word;\n }\n\n footer {\n margin-left: 15px;\n margin-right: 15px;\n }\n\n .youtube {\n width: 100%;\n height: auto;\n }\n}\n","//fonts.scss\n\nbody {\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n font-family: $font-stack-body;\n font-size: 1.2em;\n}\n\n#topheader h1 {\n font-family: $font-stack-body;\n}\n\nh1 {\n font-family: $font-stack-headers;\n}\n\n#topheader a {\n text-decoration: none;\n}\n\nnav {\n font-feature-settings: \"dlig\";\n}\n\narticle header h1 a {\n text-decoration: none;\n}\n\narticle div a {\n text-decoration: none;\n}\n\nfooter {\n font-size: 0.8em;\n}\n\n.emoji {\n width: auto;\n height: 1em;\n}\n","//colours.scss\nbody {\n color: $base03;\n}\n\nheader a {\n color: $base03;\n}\n\na {\n color: $blue;\n}\n","//forms.scss\n\nform {\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n width: 100%;\n}\n\ninput[type=\"text\"],\ninput[type=\"file\"],\ntextarea {\n width: 100%;\n}\n\ninput,\nbutton,\ntextarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: $base03;\n color: $base3;\n border: 1px solid $base3;\n border-radius: 4px;\n}\n\nbutton:hover {\n transition: 0.5s ease-in-out;\n background-color: $base3;\n color: $base03;\n}\n\nbutton:disabled {\n background-color: $base1;\n color: $base03;\n}\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: checkbox;\n -moz-appearance: checkbox;\n}\n\n#photo {\n background: inherit;\n color: inherit;\n border: none;\n}\n","//twitter.scss\n\n.twitter-tweet-rendered {\n margin-bottom: 0 !important;\n}\n\n.twitter-tweet-rendered + .note {\n margin-top: 0;\n}\n"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/public/build/assets/css/projects-d945298e4f.css b/public/build/assets/css/projects-d945298e4f.css
deleted file mode 100644
index d108175a..00000000
--- a/public/build/assets/css/projects-d945298e4f.css
+++ /dev/null
@@ -1,10 +0,0 @@
-#projects {
- padding-left: 33.33%;
-}
-
-h3 {
- float: left;
- width: 45%;
- margin: 0 5% 0 -50%;
- text-align: right;
-}
diff --git a/public/build/assets/js/form-save-4d4f6e1cb8.js b/public/build/assets/js/form-save-4d4f6e1cb8.js
deleted file mode 100644
index 20d8f0a7..00000000
--- a/public/build/assets/js/form-save-4d4f6e1cb8.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/* global alertify, store */
-var feature = {
- addEventListener : !!window.addEventListener,
- querySelectorAll : !!document.querySelectorAll
-};
-
-if (feature.addEventListener && feature.querySelectorAll) {
- var keys = getKeys();
- for (var i = 0; i < keys.length; i++) {
- if (store.get(keys[i])) {
- var formId = keys[i].split('~')[1];
- document.getElementById(formId).value = store.get(keys[i]);
- }
- }
-}
-
-var timerId = window.setInterval(function() {
- var saved = false;
- var inputs = document.querySelectorAll('input[type=text], textarea');
- for (var i = 0; i < inputs.length; i++) {
- var key = getFormElement(inputs[i]).id + '~' + inputs[i].id;
- if (store.get(key) !== inputs[i].value && inputs[i].value !== '') {
- store.set(key, inputs[i].value);
- saved = true;
- }
- }
- if (saved === true) {
- alertify.logPosition('top right');
- alertify.success('Auto saved text');
- }
-}, 5000);
-var forms = document.querySelectorAll('form');
-for (var f = 0; f < forms.length; f++) {
- var form = forms[f];
- form.addEventListener('submit', function() {
- window.clearInterval(timerId);
- var formId = form.id;
- var storedKeys = store.keys();
- for (var i = 0; i < storedKeys.length; i++) {
- if (storedKeys[i].indexOf(formId) > -1) {
- store.remove(storedKeys[i]);
- }
- }
- });
-}
-function getKeys() {
- var keys = [];
- var formFields = document.querySelectorAll('input[type=text], textarea');
- for (var f = 0; f < formFields.length; f++) {
- var parent = getFormElement(formFields[f]);
- if (parent !== false) {
- var key = parent.id + '~' + formFields[f].id;
- keys.push(key);
- }
- }
- return keys;
-}
-function getFormElement(elem) {
- if (elem.nodeName.toLowerCase() !== 'body') {
- var parent = elem.parentNode;
- if (parent.nodeName.toLowerCase() === 'form') {
- return parent;
- } else {
- return getFormElement(parent);
- }
- } else {
- return false;
- }
-}
diff --git a/public/build/assets/js/links-c394f9c920.js b/public/build/assets/js/links-c394f9c920.js
deleted file mode 100644
index 5871e0e3..00000000
--- a/public/build/assets/js/links-c394f9c920.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/* global Autolinker */
-//the autlinker object
-var autolinker = new Autolinker();
-
-//the youtube regex
-var ytidregex = /watch\?v=([A-Za-z0-9\-_]+)/;
-
-//grab the notes and loop through them
-var notes = document.querySelectorAll('.e-content');
-for (var i = 0; i < notes.length; i++) {
- //get Youtube ID
- var ytid = notes[i].textContent.match(ytidregex);
- if (ytid !== null) {
- var id = ytid[1];
- var iframe = document.createElement('iframe');
- iframe.classList.add('youtube');
- iframe.setAttribute('src', '//www.youtube.com/embed/' + id);
- iframe.setAttribute('frameborder', 0);
- iframe.setAttribute('allowfullscreen', 'true');
- notes[i].appendChild(iframe);
- }
- //now linkify everything
- var orig = notes[i].innerHTML;
- var linked = autolinker.link(orig);
- notes[i].innerHTML = linked;
-}
diff --git a/public/build/assets/js/maps-a6a01a253b.js b/public/build/assets/js/maps-a6a01a253b.js
deleted file mode 100644
index 6f178f8c..00000000
--- a/public/build/assets/js/maps-a6a01a253b.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/* global L */
-//This code runs on page load and looks for , then adds map
-var mapDivs = document.querySelectorAll('.map');
-for (var i = 0; i < mapDivs.length; i++) {
- var mapDiv = mapDivs[i];
- var latitude = mapDiv.dataset.latitude;
- var longitude = mapDiv.dataset.longitude;
- L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';
- var map = L.mapbox.map(mapDiv, 'jonnybarnes.gnoihnim')
- .setView([latitude, longitude], 15)
- .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {
- detectRetina: true
- }));
- L.marker([latitude, longitude]).addTo(map);
- map.scrollWheelZoom.disable();
-}
diff --git a/public/build/assets/js/newnote-36ff29cdef.js b/public/build/assets/js/newnote-36ff29cdef.js
deleted file mode 100644
index 54d2edd5..00000000
--- a/public/build/assets/js/newnote-36ff29cdef.js
+++ /dev/null
@@ -1,281 +0,0 @@
-/* global L */
-if ('geolocation' in navigator) {
- var button = document.querySelector('#locate');
- if (button.addEventListener) {
- //if we have javascript, event listeners and geolocation, make the locate
- //button clickable and add event
- button.disabled = false;
- button.addEventListener('click', getLocation);
- }
-}
-
-function getLocation() {
- navigator.geolocation.getCurrentPosition(function (position) {
- //the locate button has been clicked so add the places/map
- addPlaces(position.coords.latitude, position.coords.longitude);
- });
-}
-
-function addPlaces(latitude, longitude) {
- //get the nearby places
- fetch('/places/near/' + latitude + '/' + longitude, {
- credentials: 'same-origin',
- method: 'get'
- }).then(function (response) {
- return response.json();
- }).then(function (j) {
- if (j.length > 0) {
- var i;
- var places = [];
- for (i = 0; i < j.length; ++i) {
- var latlng = parseLocation(j[i].location);
- var name = j[i].name;
- var slug = j[i].slug;
- places.push([name, slug, latlng[0], latlng[1]]);
- }
- //add a map with the nearby places
- addMap(latitude, longitude, places);
- } else {
- //add a map with just current location
- addMap(latitude, longitude);
- }
- }).catch(function (err) {
- console.error(err);
- });
-}
-
-function addMap(latitude, longitude, places) {
- //make places null if not supplied
- if (arguments.length == 2) {
- places = null;
- }
- var form = button.parentNode;
- var div = document.createElement('div');
- div.setAttribute('id', 'map');
- //add the map div
- form.appendChild(div);
- L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';
- var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')
- .setView([latitude, longitude], 15)
- .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {
- detectRetina: true
- }));
- //add a marker for the current location
- var marker = L.marker([latitude, longitude], {
- draggable: true
- }).addTo(map);
- //when the location marker is dragged, if the new place form elements exist
- //update the lat/lng values
- marker.on('dragend', function () {
- var placeFormLatitude = document.querySelector('#place-latitude');
- if (placeFormLatitude !== null) {
- placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());
- }
- var placeFormLongitude = document.querySelector('#place-longitude');
- if (placeFormLongitude !== null) {
- placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());
- }
- });
- //create the