From af575f37f50b2339dbeb0997cea98e9b9aaecb36 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Fri, 1 Dec 2017 14:20:10 +0100 Subject: [PATCH 01/35] Production build (#75) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Production (#44) * test: Fix integration test * fix: Fix Editorial feature * chore(localization): move locales to i18n folder * feat(modules): add image caption and shadow * fix: clarify German translation🇩🇪 * chore(localization): fix typo (#47) * Split first paragraph into sections (#46) * feat(controls): add help text to API dropdown * fix(style): simplify header and fix mobile design * fix(style): simplify footer and fix mobile design * fix(style): update stylesheet and scripts file * test(e2e): adjust tests and make them fail on CI * language fixes * rename labels to use full api name * Refactor entry state toggle (#48) * chore(editorialFeatures): extract editorial features toggle * chore(refactor): rename function to make more contextual sense * Fix breadcrumb and add test for locales (#49) * test(unit): add test to check for locale consistency * fix(breadcrumb): translate lessons route * Change readme url to http from https (#52) * tests(e2e): expect only 2 courses * fix(cookies): fix variable naming and extend to two days maxAge * Change text on next lesson button (#54) * Retranslate advancedLabel * fix(translations): do not break on vim temp files. This is dedicated to JP * fix(analytics): use correct app-id * Add instructions to seed a space to readme (#61) * Change modal text; add link to model's repo to localization files (#57) * fix(links): link correct GH repository * fix(i18n): adjust view on github link label * fix(style): move GitHub link to the left * new screenshot * Update README.md (#63) * Update README.md * Update README.md * Https mistake and Heroku buton * fixup * fixup * feat(heroku): add app.json * docs(README): add linebreak * docs(README): minor adjustments * fix(tracking): add link click tracking to snowplow * Add translation for edit in the web app (#64) * chore(typo): fix error message (#67) * chore(update): remove image rendering on lessons (#65) * chore: Improve error page (#66) * chore: Improve error page * fix: Fix middlware order * fix: Remove console.log * fix: no more duplicate error messges (#71) * fix: Fix middlware order * fix: Remove console.log * feat: Uniq error meassages * fix: fix cli link (#72) * Add instructions to run app as Docker container (#68) * feat: Minor fixes (#73) * feat: Address JPs Feedback * fix: settings config * fix: fix tests * fix: fix error display * Fix Cookie Max Age (#74) --- app.js | 2 +- lib/cookies.js | 4 ++-- public/scripts/index.js | 2 +- public/stylesheets/style.css | 2 +- routes/landingPage.js | 2 +- routes/settings.js | 6 +++--- test/e2e/specs/the-example-app-spec.js | 2 +- views/error.pug | 2 +- views/layout.pug | 2 +- views/mixins/_moduleHighlightedCourse.pug | 20 ++++++++++---------- views/settings.pug | 1 + 11 files changed, 23 insertions(+), 22 deletions(-) diff --git a/app.js b/app.js index 3f24b39..dfb0c9d 100644 --- a/app.js +++ b/app.js @@ -27,7 +27,7 @@ app.set('view engine', 'pug') app.use(logger('dev')) app.use(helmet()) app.use(bodyParser.json()) -app.use(bodyParser.urlencoded({ extended: false })) +app.use(bodyParser.urlencoded({ extended: true })) app.use(cookieParser()) app.use(express.static(path.join(__dirname, 'public'))) diff --git a/lib/cookies.js b/lib/cookies.js index c74f45c..5c5e5f1 100644 --- a/lib/cookies.js +++ b/lib/cookies.js @@ -1,4 +1,4 @@ -const TWO_DAYS_IN_SECONDS = 172800 // 60 * 60 * 24 * 2 +const TWO_DAYS_IN_MILLISECONDS = 172800000 // 1000 * 60 * 60 * 24 * 2 module.exports.updateCookie = (response, cookieName, value) => { - response.cookie(cookieName, value, { maxAge: TWO_DAYS_IN_SECONDS, httpOnly: true }) + response.cookie(cookieName, value, { maxAge: TWO_DAYS_IN_MILLISECONDS, httpOnly: true }) } diff --git a/public/scripts/index.js b/public/scripts/index.js index c0335a6..4da497e 100644 --- a/public/scripts/index.js +++ b/public/scripts/index.js @@ -1 +1 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(3),o=i(r),a=n(4),s=i(a),l=n(5),c=i(l),u=n(6),d=i(u),f=n(7),p=i(f),g=n(8),m=i(g),h=n(9),b=i(h),E=n(10),v=i(E),_=n(11),w=i(_),y=n(12),N=i(y),O=n(14),M=i(O),x=n(15),C=i(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),i=null;(0,N.default)(e,function(){},function(){i&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return i.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),i=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-higlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),i=function(e){var i=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===i&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=i})})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s/g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} \ No newline at end of file +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} \ No newline at end of file diff --git a/routes/landingPage.js b/routes/landingPage.js index bce1e2e..d0c8fca 100644 --- a/routes/landingPage.js +++ b/routes/landingPage.js @@ -31,6 +31,6 @@ module.exports.getLandingPage = async (request, response, next) => { if (shouldAttachEntryState(response)) { landingPage = await attachEntryState(landingPage) } - + console.log(landingPage.fields.contentModules[0].fields.course.fields.image) response.render('landingPage', { title: pathname, landingPage }) } diff --git a/routes/settings.js b/routes/settings.js index ebd01c8..e89fd30 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -59,7 +59,7 @@ module.exports.getSettings = async (request, response, next) => { module.exports.postSettings = async (request, response, next) => { const currentLocale = response.locals.currentLocale let errorList = [] - const { spaceId, deliveryToken, previewToken, editorialFeatures } = request.body + const { spaceId, deliveryToken, previewToken, editorialFeatures, qs } = request.body const settings = { spaceId, deliveryToken, @@ -165,11 +165,11 @@ module.exports.postSettings = async (request, response, next) => { ] } }, {}) - await renderSettings(response, { settings, errors, hasErrors: errorList.length > 0, - success: errorList.length === 0 + success: errorList.length === 0, + queryString: qs }) } diff --git a/test/e2e/specs/the-example-app-spec.js b/test/e2e/specs/the-example-app-spec.js index c38a928..ec548db 100644 --- a/test/e2e/specs/the-example-app-spec.js +++ b/test/e2e/specs/the-example-app-spec.js @@ -98,7 +98,7 @@ describe('The Example App', () => { context('Home', () => { it('renders home page', () => { cy.visit('/') - cy.get('main .module-higlighted-course').should('have.length.gte', 1, 'should have at least one highlighted course') + cy.get('main .module-highlighted-course').should('have.length.gte', 1, 'should have at least one highlighted course') }) }) diff --git a/views/error.pug b/views/error.pug index e5897df..31790cb 100644 --- a/views/error.pug +++ b/views/error.pug @@ -19,7 +19,7 @@ block content li #{translate('verifyCredentialsErrorLabel', currentLocale.code)} li #{translate('localeContentErrorLabel', currentLocale.code)} - if error.stack + if error.stack li #{translate('stackTraceErrorLabel', currentLocale.code)} if error.response h2 #{translate('errorLabel', currentLocale.code)} diff --git a/views/layout.pug b/views/layout.pug index 90ee474..98683d4 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -136,7 +136,7 @@ html | . p | #{translate('modalSpaceIntro', currentLocale.code)}  - a(href='https://github.com/contentful/content-models/tree/master/the-example-app' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) + a(href='https://github.com/contentful/content-models/blob/master/the-example-app/README.md ' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) | . .modal__cta-wrapper a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} diff --git a/views/mixins/_moduleHighlightedCourse.pug b/views/mixins/_moduleHighlightedCourse.pug index ca2b223..b404c24 100644 --- a/views/mixins/_moduleHighlightedCourse.pug +++ b/views/mixins/_moduleHighlightedCourse.pug @@ -1,17 +1,17 @@ include ./_courseCard mixin moduleHighlightedCourse(module, course) - .module.module-higlighted-course - .module-higlighted-course__wrapper(style=`background-image: url(${course.fields.image.fields.file.url});`) - .module-higlighted-course__overlay - .module-higlighted-course__content + .module.module-highlighted-course + .module-highlighted-course__wrapper(style=`background-image: url(${course.fields.image.fields.file.url});`) + .module-highlighted-course__overlay + .module-highlighted-course__content if(course.fields.categories) - .module-higlighted-course__categories + .module-highlighted-course__categories each category in course.fields.categories - a.module-higlighted-course__category(href=`/courses/categories/${category.fields.slug}${queryString}`) #{category.fields.title} - h2.module-higlighted-course__title + a.module-highlighted-course__category(href=`/courses/categories/${category.fields.slug}${queryString}`) #{category.fields.title} + h2.module-highlighted-course__title a(href=`/courses/${course.fields.slug}${queryString}`)= course.fields.title - .module-higlighted-course__description-wrapper + .module-highlighted-course__description-wrapper p !{helpers.markdown(course.fields.shortDescription)} - .module-higlighted-course__link-wrapper - a.module-higlighted-course__link(href=`/courses/${course.fields.slug}${queryString}`) #{translate('viewCourseLabel', currentLocale.code)} + .module-highlighted-course__link-wrapper + a.module-highlighted-course__link(href=`/courses/${course.fields.slug}${queryString}`) #{translate('viewCourseLabel', currentLocale.code)} diff --git a/views/settings.pug b/views/settings.pug index 7227485..9f713d6 100644 --- a/views/settings.pug +++ b/views/settings.pug @@ -39,6 +39,7 @@ block content form(action=`/settings` method="POST" class="form") .form-item + input(type="hidden" name="qs" value=queryString) label(for="input-space-id") #{translate('spaceIdLabel', currentLocale.code)} input(type="text" name="spaceId" id="input-space-id" value=settings.spaceId) if 'spaceId' in errors From 1406faed979bdb777343f42142d4c6ed7a1bc666 Mon Sep 17 00:00:00 2001 From: Robert Linde Date: Thu, 9 Nov 2017 10:51:05 +0100 Subject: [PATCH 02/35] Split first paragraph into sections (#46) --- README.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 19e1072..52e057b 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,10 @@ ## The node.js example app -The node.js example app teaches the very basics of how to work with Contentful: +The node.js Example App aims at getting across the very basics of how to work with our headless content management system and how to build apps using our officially supported JavaScript SDK. You’ll learn best practices for using the SDK to deliver content to your app and additionally learn some techniques for modelling your content in Contentful. -- consume content from the Contentful Delivery and Preview APIs -- model content -- edit content through the Contentful web app +We hope this app will give you a better understanding of how decoupling content from its presentation enables greater flexibility and facilitates shipping higher quality software more quickly. -The app demonstrates how decoupling content from its presentation enables greater flexibility and facilitates shipping higher quality software more quickly. - -Screenshot of the example app - -You can see a hosted version of `The node.js example app` on Heroku. - -## What is Contentful? -Contentful is content infrastructure for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful APIs. Contentful offers tools for editorial teams and enabling cooperation between organizations. +Contentful is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations. ## Requirements From 21b7a9dd1f2bf3399eab46d0e0a11d95ab01d7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Wed, 8 Nov 2017 15:28:45 +0100 Subject: [PATCH 03/35] feat(controls): add help text to API dropdown --- app.js | 60 ++++++++++++++++++------------------- i18n/locales/de-DE.json | 10 +++---- i18n/locales/en-US.json | 18 +++++------ views/layout.pug | 66 +++++++++++++++++++++-------------------- 4 files changed, 77 insertions(+), 77 deletions(-) diff --git a/app.js b/app.js index dfb0c9d..c8a607f 100644 --- a/app.js +++ b/app.js @@ -44,38 +44,8 @@ app.use(function (req, res, next) { app.use(settings) // Make data available for our views to consume -app.use(catchErrors(async function (request, response, next) { +app.use(async function (request, response, next) { // Get enabled locales from Contentful - response.locals.locales = [{code: 'en-US', name: 'U.S. English'}] - response.locals.currentLocale = response.locals.locales[0] - // Inject custom helpers - response.locals.helpers = helpers - - // Make query string available in templates to render links properly - const qs = querystring.stringify(request.query) - response.locals.queryString = qs ? `?${qs}` : '' - response.locals.query = request.query - response.locals.currentPath = request.path - - // Initialize translations and include them on templates - initializeTranslations() - response.locals.translate = translate - - // Set active api based on query parameter - const apis = [ - { - id: 'cda', - label: translate('contentDeliveryApiLabel', response.locals.currentLocale.code) - }, - { - id: 'cpa', - label: translate('contentPreviewApiLabel', response.locals.currentLocale.code) - } - ] - - response.locals.currentApi = apis - .find((api) => api.id === (request.query.api || 'cda')) - const space = await getSpace() response.locals.locales = space.locales @@ -91,6 +61,34 @@ app.use(catchErrors(async function (request, response, next) { response.locals.currentLocale = defaultLocale } + // Initialize translations and include them on templates + initializeTranslations() + response.locals.translate = translate + + // Set active api based on query parameter + const apis = [ + { + id: 'cda', + label: translate('cdaApiLabel', response.locals.currentLocale.code) + }, + { + id: 'cpa', + label: translate('cpaApiLabel', response.locals.currentLocale.code) + } + ] + + response.locals.currentApi = apis + .find((api) => api.id === (request.query.api || 'cda')) + + // Inject custom helpers + response.locals.helpers = helpers + + // Make query string available in templates to render links properly + const qs = querystring.stringify(request.query) + response.locals.queryString = qs ? `?${qs}` : '' + response.locals.query = request.query + response.locals.currentPath = request.path + next() })) diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index bf3f98c..601d9de 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -1,5 +1,5 @@ { - "defaultTitle": "The Example App", + "defaultTitle": "Die Beispielanwendung", "whatIsThisApp": "Hilfe", "metaDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaTwitterCard": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", @@ -7,10 +7,10 @@ "metaImageDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "viewOnGithub": "Auf GitHub ansehen", "apiSwitcherHelp": "Ansehen des veröffentlichten und unveröffentlichten Inhalts durch Wechsel von Delivery und Preview APIs.", - "contentDeliveryApiLabel": "Content Delivery API", - "contentDeliveryApiHelp": "Diese API zeigt veröffentlichte Inhalte", - "contentPreviewApiLabel": "Content Preview API", - "contentPreviewApiHelp": "Diese API zeigt unveröffentlichte Inhalte und Änderungen", + "cdaApiLabel": "Content Delivery API", + "cdaApiHelp": "Diese API zeigt veröffentlichte Inhalte", + "cpaApiLabel": "Content Preview API", + "cpaApiHelp": "Diese API zeigt unveröffentlichte Inhalte und Änderungen", "locale": "Sprache", "localeQuestion": "Sie arbeiten mit verschiedenen Sprachen? Dann können Sie die Sprache für Anfragen an die Content Delivery API definieren.", "settingsLabel": "Einstellungen", diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index fa93f79..1dc41f3 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -1,16 +1,16 @@ { "defaultTitle": "The Example App", "whatIsThisApp": "Help", - "metaDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", - "metaTwitterCard": "This is \"The Example App\", a reference for building your own applications using Contentful.", - "metaImageAlt": "This is \"The Example App\", a reference for building your own applications using Contentful.", - "metaImageDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", - "viewOnGithub": "View on GitHub", + "metaDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", + "metaTwitterCard": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", + "metaImageAlt": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", + "metaImageDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", + "viewOnGithub": "View on Github", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", - "contentDeliveryApiLabel": "Content Delivery API", - "contentDeliveryApiHelp": "This API fetches published content from the Content Delivery API", - "contentPreviewApiLabel": "Content Preview API", - "contentPreviewApiHelp": "This API fetches un-published content from the Content Preview API", + "cdaApiLabel": "Content Delivery API", + "cdaApiHelp": "This is just some dummy text for styling. Please change me @todo", + "cpaApiLabel": "Content Preview API", + "cpaApiHelp": "This is just some dummy text for styling. Please change me @todo", "locale": "Locale", "localeQuestion": "Working with multiple languages? You can query the Content Delivery API for a specific locale.", "settingsLabel": "Settings", diff --git a/views/layout.pug b/views/layout.pug index 98683d4..45c7506 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -27,41 +27,43 @@ html header.header .header__upper-wrapper .header__upper.layout-centered - .header__upper-title - a.header__upper-link#about-this-modal-trigger(href='#') + .header__upper-first + a#about-this-modal-trigger(href='#').header__title svg.header__upper-icon use(xlink:href='/icons/icons.svg#info') span #{translate('whatIsThisApp', currentLocale.code)} - .header__upper-copy - a.header__upper-link(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') - svg.header__upper-icon - use(xlink:href='/icons/icons.svg#github') - | #{translate('viewOnGithub', currentLocale.code)} - .header__controls - .header__controls_group - form(action='' method='get') - .header__controls_label API: #{currentApi.label} - .header__controls_dropdown - .header__controls_help_text #{translate('apiSwitcherHelp', currentLocale.code)} - button.header__controls_button( - type='submit' - name='api' - value='cda' - class=`${currentApi.id === 'cda' ? 'header__controls_button--active' : ''}` - ) - | #{translate('contentDeliveryApiLabel', currentLocale.code)}: - br - span.header__controls_button_help= translate('contentDeliveryApiHelp', currentLocale.code) - button.header__controls_button( - type='submit' - name='api' - value='cpa' - class=`${currentApi.id === 'cpa' ? 'header__controls_button--active' : ''}` - ) - | #{translate('contentPreviewApiLabel', currentLocale.code)}: - br - span.header__controls_button_help= translate('contentPreviewApiHelp', currentLocale.code) - input(type='hidden' name='locale' value=currentLocale.code) + .header__upper-second + .header__upper-copy + a.header__upper-link(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') + svg.header__upper-icon + use(xlink:href='/icons/icons.svg#github') + | #{translate('viewOnGithub', currentLocale.code)} + + .header__controls + .header__controls_group + form(action='' method='get') + .header__controls_label API: #{currentApi.label} + .header__controls_dropdown + .header__controls_help_text #{translate('apiSwitcherHelp', currentLocale.code)} + button.header__controls_button( + type='submit' + name='api' + value='cda' + class=`${currentApi.id === 'cda' ? 'header__controls_button--active' : ''}` + ) + | #{translate('cdaApiLabel', currentLocale.code)}: + br + span.header__controls_button_help= translate('cdaApiHelp', currentLocale.code) + button.header__controls_button( + type='submit' + name='api' + value='cpa' + class=`${currentApi.id === 'cpa' ? 'header__controls_button--active' : ''}` + ) + | #{translate('cpaApiLabel', currentLocale.code)}: + br + span.header__controls_button_help= translate('cpaApiHelp', currentLocale.code) + input(type='hidden' name='locale' value=currentLocale.code) .header__controls_group form(action='' method='get') From 173c44ba2766c3ca7827a2677e41d5ad52f0fee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Wed, 8 Nov 2017 15:47:20 +0100 Subject: [PATCH 04/35] fix(style): simplify header and fix mobile design --- i18n/locales/de-DE.json | 2 +- i18n/locales/en-US.json | 2 +- views/layout.pug | 66 ++++++++++++++++++++--------------------- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index 601d9de..f9eef4f 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -5,7 +5,7 @@ "metaTwitterCard": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageAlt": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", - "viewOnGithub": "Auf GitHub ansehen", + "viewOnGithub": "GitHub", "apiSwitcherHelp": "Ansehen des veröffentlichten und unveröffentlichten Inhalts durch Wechsel von Delivery und Preview APIs.", "cdaApiLabel": "Content Delivery API", "cdaApiHelp": "Diese API zeigt veröffentlichte Inhalte", diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index 1dc41f3..57ffcc9 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -5,7 +5,7 @@ "metaTwitterCard": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", "metaImageAlt": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", "metaImageDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "viewOnGithub": "View on Github", + "viewOnGithub": "GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", "cdaApiLabel": "Content Delivery API", "cdaApiHelp": "This is just some dummy text for styling. Please change me @todo", diff --git a/views/layout.pug b/views/layout.pug index 45c7506..e6e06ec 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -27,43 +27,41 @@ html header.header .header__upper-wrapper .header__upper.layout-centered - .header__upper-first - a#about-this-modal-trigger(href='#').header__title + .header__upper-title + a.header__upper-link#about-this-modal-trigger(href='#') svg.header__upper-icon use(xlink:href='/icons/icons.svg#info') span #{translate('whatIsThisApp', currentLocale.code)} - .header__upper-second - .header__upper-copy - a.header__upper-link(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') - svg.header__upper-icon - use(xlink:href='/icons/icons.svg#github') - | #{translate('viewOnGithub', currentLocale.code)} - - .header__controls - .header__controls_group - form(action='' method='get') - .header__controls_label API: #{currentApi.label} - .header__controls_dropdown - .header__controls_help_text #{translate('apiSwitcherHelp', currentLocale.code)} - button.header__controls_button( - type='submit' - name='api' - value='cda' - class=`${currentApi.id === 'cda' ? 'header__controls_button--active' : ''}` - ) - | #{translate('cdaApiLabel', currentLocale.code)}: - br - span.header__controls_button_help= translate('cdaApiHelp', currentLocale.code) - button.header__controls_button( - type='submit' - name='api' - value='cpa' - class=`${currentApi.id === 'cpa' ? 'header__controls_button--active' : ''}` - ) - | #{translate('cpaApiLabel', currentLocale.code)}: - br - span.header__controls_button_help= translate('cpaApiHelp', currentLocale.code) - input(type='hidden' name='locale' value=currentLocale.code) + .header__upper-copy + a.header__upper-link(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') + svg.header__upper-icon + use(xlink:href='/icons/icons.svg#github') + | #{translate('viewOnGithub', currentLocale.code)} + .header__controls + .header__controls_group + form(action='' method='get') + .header__controls_label API: #{currentApi.label} + .header__controls_dropdown + .header__controls_help_text #{translate('apiSwitcherHelp', currentLocale.code)} + button.header__controls_button( + type='submit' + name='api' + value='cda' + class=`${currentApi.id === 'cda' ? 'header__controls_button--active' : ''}` + ) + | #{translate('cdaApiLabel', currentLocale.code)}: + br + span.header__controls_button_help= translate('cdaApiHelp', currentLocale.code) + button.header__controls_button( + type='submit' + name='api' + value='cpa' + class=`${currentApi.id === 'cpa' ? 'header__controls_button--active' : ''}` + ) + | #{translate('cpaApiLabel', currentLocale.code)}: + br + span.header__controls_button_help= translate('cpaApiHelp', currentLocale.code) + input(type='hidden' name='locale' value=currentLocale.code) .header__controls_group form(action='' method='get') From 152d5894c0ab43cbc63ea859ddc97f3c51a20dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Wed, 8 Nov 2017 17:23:26 +0100 Subject: [PATCH 05/35] fix(style): update stylesheet and scripts file --- public/scripts/index.js | 2 +- public/stylesheets/style.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/scripts/index.js b/public/scripts/index.js index 4da497e..561d08c 100644 --- a/public/scripts/index.js +++ b/public/scripts/index.js @@ -1 +1 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(3),o=i(r),a=n(4),s=i(a),l=n(5),c=i(l),u=n(6),d=i(u),f=n(7),p=i(f),g=n(8),m=i(g),h=n(9),b=i(h),E=n(10),v=i(E),_=n(11),w=i(_),y=n(12),N=i(y),O=n(14),M=i(O),x=n(15),C=i(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),i=null;(0,N.default)(e,function(){},function(){i&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return i.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),i=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-highlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),i=function(e){var i=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===i&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=i})})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s/g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} \ No newline at end of file +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 16px 0 0}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} From 9178e765a36a04e1ccb70169ee53090eec49d242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20L=C3=B6lh=C3=B6ffel?= Date: Thu, 9 Nov 2017 10:09:45 +0100 Subject: [PATCH 06/35] language fixes --- i18n/locales/de-DE.json | 2 +- i18n/locales/en-US.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index f9eef4f..1bb2676 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -1,5 +1,5 @@ { - "defaultTitle": "Die Beispielanwendung", + "defaultTitle": "The Example App", "whatIsThisApp": "Hilfe", "metaDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaTwitterCard": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index 57ffcc9..932759a 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -8,9 +8,9 @@ "viewOnGithub": "GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", "cdaApiLabel": "Content Delivery API", - "cdaApiHelp": "This is just some dummy text for styling. Please change me @todo", + "cdaApiHelp": "This API fetches published content from the Content Delivery API", "cpaApiLabel": "Content Preview API", - "cpaApiHelp": "This is just some dummy text for styling. Please change me @todo", + "cpaApiHelp": "This API fetches un-published content from the Content Preview API", "locale": "Locale", "localeQuestion": "Working with multiple languages? You can query the Content Delivery API for a specific locale.", "settingsLabel": "Settings", From 28845db8e636fab5bed7ad21a422e904f327d94b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 10:42:17 +0100 Subject: [PATCH 07/35] rename labels to use full api name --- app.js | 4 ++-- i18n/locales/de-DE.json | 8 ++++---- i18n/locales/en-US.json | 8 ++++---- views/layout.pug | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app.js b/app.js index c8a607f..1d07038 100644 --- a/app.js +++ b/app.js @@ -69,11 +69,11 @@ app.use(async function (request, response, next) { const apis = [ { id: 'cda', - label: translate('cdaApiLabel', response.locals.currentLocale.code) + label: translate('contentDeliveryApiLabel', response.locals.currentLocale.code) }, { id: 'cpa', - label: translate('cpaApiLabel', response.locals.currentLocale.code) + label: translate('contentPreviewApiLabel', response.locals.currentLocale.code) } ] diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index 1bb2676..f7d217a 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -7,10 +7,10 @@ "metaImageDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "viewOnGithub": "GitHub", "apiSwitcherHelp": "Ansehen des veröffentlichten und unveröffentlichten Inhalts durch Wechsel von Delivery und Preview APIs.", - "cdaApiLabel": "Content Delivery API", - "cdaApiHelp": "Diese API zeigt veröffentlichte Inhalte", - "cpaApiLabel": "Content Preview API", - "cpaApiHelp": "Diese API zeigt unveröffentlichte Inhalte und Änderungen", + "contentDeliveryApiLabel": "Content Delivery API", + "contentDeliveryApiHelp": "Diese API zeigt veröffentlichte Inhalte", + "contentPreviewApiLabel": "Content Preview API", + "contentPreviewApiHelp": "Diese API zeigt unveröffentlichte Inhalte und Änderungen", "locale": "Sprache", "localeQuestion": "Sie arbeiten mit verschiedenen Sprachen? Dann können Sie die Sprache für Anfragen an die Content Delivery API definieren.", "settingsLabel": "Einstellungen", diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index 932759a..279e21e 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -7,10 +7,10 @@ "metaImageDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", "viewOnGithub": "GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", - "cdaApiLabel": "Content Delivery API", - "cdaApiHelp": "This API fetches published content from the Content Delivery API", - "cpaApiLabel": "Content Preview API", - "cpaApiHelp": "This API fetches un-published content from the Content Preview API", + "contentDeliveryApiLabel": "Content Delivery API", + "contentDeliveryApiHelp": "This API fetches published content from the Content Delivery API", + "contentPreviewApiLabel": "Content Preview API", + "contentPreviewApiHelp": "This API fetches un-published content from the Content Preview API", "locale": "Locale", "localeQuestion": "Working with multiple languages? You can query the Content Delivery API for a specific locale.", "settingsLabel": "Settings", diff --git a/views/layout.pug b/views/layout.pug index e6e06ec..1ed85f7 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -49,18 +49,18 @@ html value='cda' class=`${currentApi.id === 'cda' ? 'header__controls_button--active' : ''}` ) - | #{translate('cdaApiLabel', currentLocale.code)}: + | #{translate('contentDeliveryApiLabel', currentLocale.code)}: br - span.header__controls_button_help= translate('cdaApiHelp', currentLocale.code) + span.header__controls_button_help= translate('contentDeliveryApiHelp', currentLocale.code) button.header__controls_button( type='submit' name='api' value='cpa' class=`${currentApi.id === 'cpa' ? 'header__controls_button--active' : ''}` ) - | #{translate('cpaApiLabel', currentLocale.code)}: + | #{translate('contentPreviewApiLabel', currentLocale.code)}: br - span.header__controls_button_help= translate('cpaApiHelp', currentLocale.code) + span.header__controls_button_help= translate('contentPreviewApiHelp', currentLocale.code) input(type='hidden' name='locale' value=currentLocale.code) .header__controls_group From 3a2f4795b407be8d912abef5af8c34d7d485502e Mon Sep 17 00:00:00 2001 From: Robert Linde Date: Thu, 9 Nov 2017 13:07:37 +0100 Subject: [PATCH 08/35] Change readme url to http from https (#52) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52e057b..93326ce 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Without any changes, this app is connected to a Contentful space with read-only You can clone the space for this example app to your own Contentful account by using our CLI tool. ``` -contentful space seed -s '' -t the-example-app +http://localhost:3000?space_id=&delivery_token=&preview_token= ``` If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://www.npmjs.com/package/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). From 8c6a0636ef483a11e04e431f76b855cfd845e501 Mon Sep 17 00:00:00 2001 From: Robert Linde Date: Thu, 9 Nov 2017 15:54:04 +0100 Subject: [PATCH 09/35] Add instructions to seed a space to readme (#61) --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 93326ce..82513c1 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,16 @@ Contentful is a content management platform for web applications, mobile apps an Without any changes, this app is connected to a Contentful space with read-only access. To experience the full end-to-end Contentful experience, you need to connect the app to a Contentful space with read _and_ write access. This enables you to see how content editing in the Contentful web app works and how content changes propagate to this app. -## Common setup You can clone the space for this example app to your own Contentful account by using our CLI tool. +``` +contentful space seed -s '' -t the-example-app +``` + +If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://github.com/contentful/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). + +Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: + ``` http://localhost:3000?space_id=&delivery_token=&preview_token= ``` From b0a2e9942e3979888305861e2b75d1ea7fe0abff Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 9 Nov 2017 15:54:12 +0100 Subject: [PATCH 10/35] Change modal text; add link to model's repo to localization files (#57) --- i18n/locales/en-US.json | 8 ++++---- views/layout.pug | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index 279e21e..f785f69 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -1,10 +1,10 @@ { "defaultTitle": "The Example App", "whatIsThisApp": "Help", - "metaDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaTwitterCard": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaImageAlt": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaImageDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", + "metaDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaTwitterCard": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaImageAlt": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaImageDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", "viewOnGithub": "GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", "contentDeliveryApiLabel": "Content Delivery API", diff --git a/views/layout.pug b/views/layout.pug index 1ed85f7..351f56b 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -136,7 +136,7 @@ html | . p | #{translate('modalSpaceIntro', currentLocale.code)}  - a(href='https://github.com/contentful/content-models/blob/master/the-example-app/README.md ' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) + a(href='https://github.com/contentful/content-models/tree/master/the-example-app' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) | . .modal__cta-wrapper a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} From b73d733626f5bc02067c26cd037a3052a9097f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 15:39:51 +0100 Subject: [PATCH 11/35] fix(links): link correct GH repository --- views/layout.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/layout.pug b/views/layout.pug index 351f56b..90ee474 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -33,7 +33,7 @@ html use(xlink:href='/icons/icons.svg#info') span #{translate('whatIsThisApp', currentLocale.code)} .header__upper-copy - a.header__upper-link(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') + a.header__upper-link(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') svg.header__upper-icon use(xlink:href='/icons/icons.svg#github') | #{translate('viewOnGithub', currentLocale.code)} From 1cc8e622191540887ffe67dc83f2d338c779726a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 15:43:01 +0100 Subject: [PATCH 12/35] fix(i18n): adjust view on github link label --- i18n/locales/de-DE.json | 2 +- i18n/locales/en-US.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index f7d217a..bf3f98c 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -5,7 +5,7 @@ "metaTwitterCard": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageAlt": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", - "viewOnGithub": "GitHub", + "viewOnGithub": "Auf GitHub ansehen", "apiSwitcherHelp": "Ansehen des veröffentlichten und unveröffentlichten Inhalts durch Wechsel von Delivery und Preview APIs.", "contentDeliveryApiLabel": "Content Delivery API", "contentDeliveryApiHelp": "Diese API zeigt veröffentlichte Inhalte", diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index f785f69..fa93f79 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -5,7 +5,7 @@ "metaTwitterCard": "This is \"The Example App\", a reference for building your own applications using Contentful.", "metaImageAlt": "This is \"The Example App\", a reference for building your own applications using Contentful.", "metaImageDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", - "viewOnGithub": "GitHub", + "viewOnGithub": "View on GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", "contentDeliveryApiLabel": "Content Delivery API", "contentDeliveryApiHelp": "This API fetches published content from the Content Delivery API", From dfd68e84bd2137c188a1717d495026594265299e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 15:45:13 +0100 Subject: [PATCH 13/35] fix(style): move GitHub link to the left --- public/stylesheets/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 5b2a029..8d6c8bc 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1 +1 @@ -/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 16px 0 0}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} From a43c5aa7285cc3e9a3341dfcc1c2791a9accfc95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20L=C3=B6lh=C3=B6ffel?= Date: Thu, 9 Nov 2017 16:03:55 +0100 Subject: [PATCH 14/35] new screenshot --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 82513c1..ba015d8 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ We hope this app will give you a better understanding of how decoupling content Contentful is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations. +Screenshot of the example app ## Requirements From 1cfd5759bd22bbc4eb32ab536173b23a0489ce06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20L=C3=B6lh=C3=B6ffel?= Date: Thu, 9 Nov 2017 17:24:44 +0100 Subject: [PATCH 15/35] Update README.md (#63) * Update README.md * Update README.md * Https mistake and Heroku buton * fixup * fixup --- README.md | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index ba015d8..0b334df 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,20 @@ ## The node.js example app -The node.js Example App aims at getting across the very basics of how to work with our headless content management system and how to build apps using our officially supported JavaScript SDK. You’ll learn best practices for using the SDK to deliver content to your app and additionally learn some techniques for modelling your content in Contentful. +The node.js example app teaches the very basics of how to work with Contentful: -We hope this app will give you a better understanding of how decoupling content from its presentation enables greater flexibility and facilitates shipping higher quality software more quickly. +- consume content from the Contentful Delivery and Preview APIs +- model content +- edit content through the Contentful web app -Contentful is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations. +The app demonstrates how decoupling content from its presentation enables greater flexibility and facilitates shipping higher quality software more quickly. Screenshot of the example app +You can see a hosted version of `The node.js example app` on Heroku. + +## What is Contentful? +Contentful is content infrastructure for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful APIs. Contentful offers tools for editorial teams and enabling cooperation between organizations. + ## Requirements * Node 8 @@ -16,23 +23,7 @@ Contentful is a content management platform for web applications, mobile apps an Without any changes, this app is connected to a Contentful space with read-only access. To experience the full end-to-end Contentful experience, you need to connect the app to a Contentful space with read _and_ write access. This enables you to see how content editing in the Contentful web app works and how content changes propagate to this app. -You can clone the space for this example app to your own Contentful account by using our CLI tool. - -``` -contentful space seed -s '' -t the-example-app -``` - -If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://github.com/contentful/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). - -Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: - -``` -http://localhost:3000?space_id=&delivery_token=&preview_token= -``` - -If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://www.npmjs.com/package/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). - -Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: +## Common setup Clone the repo and install the dependencies. @@ -52,12 +43,12 @@ To start the express server, run the following npm run start:dev ``` -Open [http://localhost:3000](http://localhost:3000) and take a look around. +Open [http://localhost:3000](http://localhost:3000) and take a look around. ## Steps for read and write access (recommended) -Step 1: Install the [Contentful CLI](https://www.npmjs.com/package/contentful-cli) +Step 1: Install the [Contentful CLI](https://www.npmjs.com/package/contentful-cli)) Step 2: Login to Contentful through the CLI. It will help you to create a [free account](https://www.contentful.com/sign-up/) if you don't have one already. ``` @@ -71,15 +62,15 @@ Step 4: Seed the new space with the content model. Replace the `SPACE_ID` with t ``` contentful space seed -s '' -t the-example-app ``` -Step 5: Head to the Contentful web app's API section and grab `SPACE_ID`, `DELIVERY_ACCESS_TOKEN`, `PREVIEW_ACCESS_TOKEN`. +Step 5: Head to the Contentful web app's API section and grab `SPACE_ID`, `DELIVERY_ACCESS_TOKEN`, `PREVIEW_ACCESS_TOKEN`. Step 6: Open `variables.env` and inject your credentials so it looks like this ``` NODE_ENV=development -CONTENTFUL_SPACE_ID= -CONTENTFUL_DELIVERY_TOKEN= -CONTENTFUL_PREVIEW_TOKEN= +CONTENTFUL_SPACE_ID={{SPACE_ID}} +CONTENTFUL_DELIVERY_TOKEN={{DELIVERY_ACCESS_TOKEN}} +CONTENTFUL_PREVIEW_TOKEN={{PREVIEW_ACCESS_TOKEN}} PORT=3000 ``` @@ -91,6 +82,12 @@ Final Step: Open [http://localhost:3000?enable_editorial_features](http://localhost:3000?enable_editorial_features) and take a look around. This URL flag adds an “Edit” button in the app on every editable piece of content which will take you back to Contentful web app where you can make changes. It also adds “Draft” and “Pending Changes” status indicators to all content if relevant. +## Deploy to Heroku +You can also deploy this app to Heroku. +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + +Open [http://localhost:3000?enable_editorial_features](http://localhost:3000?enable_editorial_features) and take a look around. This URL flag adds an “Edit” button in the app on every editable piece of content which will take you back to Contentful web app where you can make changes. It also adds “Draft” and “Pending Changes” status indicators to all content if relevant. + ## Deploy to Heroku You can also deploy this app to Heroku: From e2af6c515b640405a04192ca68367edad2d6a51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 17:35:42 +0100 Subject: [PATCH 16/35] docs(README): add linebreak --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b334df..cda36c3 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,8 @@ Final Step: Open [http://localhost:3000?enable_editorial_features](http://localhost:3000?enable_editorial_features) and take a look around. This URL flag adds an “Edit” button in the app on every editable piece of content which will take you back to Contentful web app where you can make changes. It also adds “Draft” and “Pending Changes” status indicators to all content if relevant. ## Deploy to Heroku -You can also deploy this app to Heroku. +You can also deploy this app to Heroku: + [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) Open [http://localhost:3000?enable_editorial_features](http://localhost:3000?enable_editorial_features) and take a look around. This URL flag adds an “Edit” button in the app on every editable piece of content which will take you back to Contentful web app where you can make changes. It also adds “Draft” and “Pending Changes” status indicators to all content if relevant. From 4ae6c82f487c66b43318059f079002a9ec68b368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Thu, 9 Nov 2017 17:37:56 +0100 Subject: [PATCH 17/35] docs(README): minor adjustments --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cda36c3..c60f234 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Open [http://localhost:3000](http://localhost:3000) and take a look around. ## Steps for read and write access (recommended) -Step 1: Install the [Contentful CLI](https://www.npmjs.com/package/contentful-cli)) +Step 1: Install the [Contentful CLI](https://www.npmjs.com/package/contentful-cli) Step 2: Login to Contentful through the CLI. It will help you to create a [free account](https://www.contentful.com/sign-up/) if you don't have one already. ``` @@ -68,9 +68,9 @@ Step 6: Open `variables.env` and inject your credentials so it looks like this ``` NODE_ENV=development -CONTENTFUL_SPACE_ID={{SPACE_ID}} -CONTENTFUL_DELIVERY_TOKEN={{DELIVERY_ACCESS_TOKEN}} -CONTENTFUL_PREVIEW_TOKEN={{PREVIEW_ACCESS_TOKEN}} +CONTENTFUL_SPACE_ID= +CONTENTFUL_DELIVERY_TOKEN= +CONTENTFUL_PREVIEW_TOKEN= PORT=3000 ``` From ffb968469172224fd917022047e4c59309619ff2 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 15 Nov 2017 14:01:54 +0100 Subject: [PATCH 18/35] chore: Improve error page (#66) * chore: Improve error page * fix: Fix middlware order * fix: Remove console.log --- app.js | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/app.js b/app.js index 1d07038..dfb0c9d 100644 --- a/app.js +++ b/app.js @@ -44,22 +44,18 @@ app.use(function (req, res, next) { app.use(settings) // Make data available for our views to consume -app.use(async function (request, response, next) { +app.use(catchErrors(async function (request, response, next) { // Get enabled locales from Contentful - const space = await getSpace() - response.locals.locales = space.locales + response.locals.locales = [{code: 'en-US', name: 'U.S. English'}] + response.locals.currentLocale = response.locals.locales[0] + // Inject custom helpers + response.locals.helpers = helpers - const defaultLocale = response.locals.locales - .find((locale) => locale.default) - - if (request.query.locale) { - response.locals.currentLocale = space.locales - .find((locale) => locale.code === request.query.locale) - } - - if (!response.locals.currentLocale) { - response.locals.currentLocale = defaultLocale - } + // Make query string available in templates to render links properly + const qs = querystring.stringify(request.query) + response.locals.queryString = qs ? `?${qs}` : '' + response.locals.query = request.query + response.locals.currentPath = request.path // Initialize translations and include them on templates initializeTranslations() @@ -80,14 +76,20 @@ app.use(async function (request, response, next) { response.locals.currentApi = apis .find((api) => api.id === (request.query.api || 'cda')) - // Inject custom helpers - response.locals.helpers = helpers + const space = await getSpace() + response.locals.locales = space.locales - // Make query string available in templates to render links properly - const qs = querystring.stringify(request.query) - response.locals.queryString = qs ? `?${qs}` : '' - response.locals.query = request.query - response.locals.currentPath = request.path + const defaultLocale = response.locals.locales + .find((locale) => locale.default) + + if (request.query.locale) { + response.locals.currentLocale = space.locales + .find((locale) => locale.code === request.query.locale) + } + + if (!response.locals.currentLocale) { + response.locals.currentLocale = defaultLocale + } next() })) From b536c109c4139c40912475599262f477370172cf Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 15 Nov 2017 16:36:23 +0100 Subject: [PATCH 19/35] fix: no more duplicate error messges (#71) * fix: Fix middlware order * fix: Remove console.log * feat: Uniq error meassages --- routes/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/settings.js b/routes/settings.js index e89fd30..2789e79 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -59,7 +59,7 @@ module.exports.getSettings = async (request, response, next) => { module.exports.postSettings = async (request, response, next) => { const currentLocale = response.locals.currentLocale let errorList = [] - const { spaceId, deliveryToken, previewToken, editorialFeatures, qs } = request.body + const { spaceId, deliveryToken, previewToken, editorialFeatures } = request.body const settings = { spaceId, deliveryToken, From 4487b8e5e497fba5d98d85e293423da1d6487340 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 16 Nov 2017 10:45:53 +0100 Subject: [PATCH 20/35] fix: fix cli link (#72) --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index c60f234..832727f 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,15 @@ Contentful is content infrastructure for web applications, mobile apps and conne Without any changes, this app is connected to a Contentful space with read-only access. To experience the full end-to-end Contentful experience, you need to connect the app to a Contentful space with read _and_ write access. This enables you to see how content editing in the Contentful web app works and how content changes propagate to this app. ## Common setup +You can clone the space for this example app to your own Contentful account by using our CLI tool. + +``` +contentful space seed -s '' -t the-example-app +``` + +If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://www.npmjs.com/package/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). + +Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: Clone the repo and install the dependencies. From 81d5233d936dd81fd36fd5c9563ad84677217d7c Mon Sep 17 00:00:00 2001 From: shm <41867+shm@users.noreply.github.com> Date: Thu, 16 Nov 2017 13:37:19 +0100 Subject: [PATCH 21/35] Add instructions to run app as Docker container (#68) --- README.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 832727f..b80f704 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ To start the express server, run the following npm run start:dev ``` -Open [http://localhost:3000](http://localhost:3000) and take a look around. +Open [http://localhost:3000](http://localhost:3000) and take a look around. ## Steps for read and write access (recommended) @@ -71,7 +71,7 @@ Step 4: Seed the new space with the content model. Replace the `SPACE_ID` with t ``` contentful space seed -s '' -t the-example-app ``` -Step 5: Head to the Contentful web app's API section and grab `SPACE_ID`, `DELIVERY_ACCESS_TOKEN`, `PREVIEW_ACCESS_TOKEN`. +Step 5: Head to the Contentful web app's API section and grab `SPACE_ID`, `DELIVERY_ACCESS_TOKEN`, `PREVIEW_ACCESS_TOKEN`. Step 6: Open `variables.env` and inject your credentials so it looks like this @@ -96,13 +96,6 @@ You can also deploy this app to Heroku: [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) -Open [http://localhost:3000?enable_editorial_features](http://localhost:3000?enable_editorial_features) and take a look around. This URL flag adds an “Edit” button in the app on every editable piece of content which will take you back to Contentful web app where you can make changes. It also adds “Draft” and “Pending Changes” status indicators to all content if relevant. - -## Deploy to Heroku -You can also deploy this app to Heroku: - -[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) - ## Use Docker You can also run this app as a Docker container: From b5a2e80a2835ba6ad8dd189d8c0418a4a03fee88 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 30 Nov 2017 12:46:30 +0100 Subject: [PATCH 22/35] feat: Minor fixes (#73) * feat: Address JPs Feedback * fix: settings config * fix: fix tests --- public/scripts/index.js | 4 ++++ public/stylesheets/style.css | 4 ++++ routes/settings.js | 2 +- views/layout.pug | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/public/scripts/index.js b/public/scripts/index.js index 561d08c..0ca00ad 100644 --- a/public/scripts/index.js +++ b/public/scripts/index.js @@ -1 +1,5 @@ +<<<<<<< HEAD !function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(3),o=i(r),a=n(4),s=i(a),l=n(5),c=i(l),u=n(6),d=i(u),f=n(7),p=i(f),g=n(8),m=i(g),h=n(9),b=i(h),E=n(10),v=i(E),_=n(11),w=i(_),y=n(12),N=i(y),O=n(14),M=i(O),x=n(15),C=i(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),i=null;(0,N.default)(e,function(){},function(){i&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return i.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),i=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-higlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),i=function(e){var i=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===i&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=i})})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s/g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s>>>>>> feat: Minor fixes (#73) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 8d6c8bc..d692606 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1 +1,5 @@ +<<<<<<< HEAD /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} +======= +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} +>>>>>>> feat: Minor fixes (#73) diff --git a/routes/settings.js b/routes/settings.js index 2789e79..e89fd30 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -59,7 +59,7 @@ module.exports.getSettings = async (request, response, next) => { module.exports.postSettings = async (request, response, next) => { const currentLocale = response.locals.currentLocale let errorList = [] - const { spaceId, deliveryToken, previewToken, editorialFeatures } = request.body + const { spaceId, deliveryToken, previewToken, editorialFeatures, qs } = request.body const settings = { spaceId, deliveryToken, diff --git a/views/layout.pug b/views/layout.pug index 90ee474..98683d4 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -136,7 +136,7 @@ html | . p | #{translate('modalSpaceIntro', currentLocale.code)}  - a(href='https://github.com/contentful/content-models/tree/master/the-example-app' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) + a(href='https://github.com/contentful/content-models/blob/master/the-example-app/README.md ' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) | . .modal__cta-wrapper a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} From 35d575202abab58ea17c5916ebb3d9b01892d559 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Fri, 1 Dec 2017 14:49:36 +0100 Subject: [PATCH 23/35] chore: Update README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b80f704..31b8e64 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ The app demonstrates how decoupling content from its presentation enables greate You can see a hosted version of `The node.js example app` on Heroku. ## What is Contentful? -Contentful is content infrastructure for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful APIs. Contentful offers tools for editorial teams and enabling cooperation between organizations. + +[Contentful](https://www.contentful.com) provides a content infrastructure for digital teams to power content in websites, apps, and devices. Unlike a CMS, Contentful was built to integrate with the modern software stack. It offers a central hub for structured content, powerful management and delivery APIs, and a customizable web app that enable developers and content creators to ship digital products faster. ## Requirements From ed2e50c55e24c3a4ff33de7537b6b03face43c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Mon, 11 Dec 2017 16:30:46 +0100 Subject: [PATCH 24/35] test(e2e): replace integrated tests with standalone repository --- .gitignore | 3 + circle.yml | 6 +- package.json | 4 +- test/e2e/run-e2e-test.js | 37 ---- test/e2e/specs/.eslintrc.js | 11 -- test/e2e/specs/the-example-app-spec.js | 253 ------------------------- test/run-e2e-test.js | 44 +++++ 7 files changed, 51 insertions(+), 307 deletions(-) delete mode 100644 test/e2e/run-e2e-test.js delete mode 100644 test/e2e/specs/.eslintrc.js delete mode 100644 test/e2e/specs/the-example-app-spec.js create mode 100644 test/run-e2e-test.js diff --git a/.gitignore b/.gitignore index ef0f335..b29653e 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,6 @@ package-lock.json # cypress test result files cypress + +# e2e test directory +test/e2e diff --git a/circle.yml b/circle.yml index e7c1136..7da0572 100644 --- a/circle.yml +++ b/circle.yml @@ -3,10 +3,8 @@ machine: version: "8" dependencies: pre: - - curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - sudo dpkg -i google-chrome.deb - - sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome - - rm google-chrome.deb + - git clone https://github.com/contentful/the-example-app-e2e-tests.git ./test/e2e + - cd ./test/e2e && npm install test: post: - tar -czf $CIRCLE_ARTIFACTS/cypress-result_`date +%Y-%m-%d_%H-%M-%S`.tar.gz ./cypress diff --git a/package.json b/package.json index f3970f8..4efd13e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "format": "eslint --fix . bin --ignore public node_modules", "pretest": "npm run lint", "test": "npm run test:unit && npm run test:integration && npm run test:e2e", - "test:e2e": "node test/e2e/run-e2e-test.js", + "test:e2e": "node test/run-e2e-test.js", "test:integration": "jest test/integration", "test:integration:watch": "jest test/integration --watch", "test:unit": "jest test/unit", @@ -27,6 +27,7 @@ "contentful": "^5.0.2", "cookie-parser": "~1.4.3", "dotenv": "^4.0.0", + "execa": "^0.8.0", "express": "~4.14.0", "helmet": "^3.9.0", "loadash": "^1.0.0", @@ -37,7 +38,6 @@ "devDependencies": { "cheerio": "^1.0.0-rc.2", "cookie": "^0.3.1", - "cypress": "^1.0.3", "eslint": "^3.16.0", "eslint-config-standard": "^6.2.1", "eslint-plugin-promise": "^3.4.2", diff --git a/test/e2e/run-e2e-test.js b/test/e2e/run-e2e-test.js deleted file mode 100644 index 6873122..0000000 --- a/test/e2e/run-e2e-test.js +++ /dev/null @@ -1,37 +0,0 @@ -const http = require('http') -const { resolve } = require('path') - -require('dotenv').config({ path: 'variables.env' }) - -const cypress = require('cypress') -const app = require('../../app') - -const TEST_PORT = 3007 - -app.set('port', TEST_PORT) - -const server = http.createServer(app) - -const { CONTENTFUL_SPACE_ID, CONTENTFUL_DELIVERY_TOKEN, CONTENTFUL_PREVIEW_TOKEN } = process.env - -server.on('error', console.error) -server.listen(TEST_PORT, function () { - cypress.run({ - spec: resolve(__dirname, 'specs', 'the-example-app-spec.js'), - headed: !process.env.CI, - env: { - CONTENTFUL_SPACE_ID, CONTENTFUL_DELIVERY_TOKEN, CONTENTFUL_PREVIEW_TOKEN - } - }) - .then((result) => { - server.close() - if (result.failures > 0) { - process.exit(1) - return - } - process.exit(0) - }).catch(() => { - server.close() - process.exit(1) - }) -}) diff --git a/test/e2e/specs/.eslintrc.js b/test/e2e/specs/.eslintrc.js deleted file mode 100644 index d104be1..0000000 --- a/test/e2e/specs/.eslintrc.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - 'env': { - 'node': true, - 'mocha': true - }, - 'globals': { - 'Cypress': true, - 'cy': true, - 'expect': true - } -} diff --git a/test/e2e/specs/the-example-app-spec.js b/test/e2e/specs/the-example-app-spec.js deleted file mode 100644 index ec548db..0000000 --- a/test/e2e/specs/the-example-app-spec.js +++ /dev/null @@ -1,253 +0,0 @@ -describe('The Example App', () => { - context('basics', () => { - beforeEach(() => { - cy.visit('/') - }) - - it('meta tags', () => { - cy.title().should('equals', 'Home — The Example App', 'Home page should have correct meta title') - cy.get('meta[name="description"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') - - cy.get('meta[name="twitter:card"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') - - cy.get('meta[property="og:title"]').should('attr', 'content', 'Home — The Example App') - cy.get('meta[property="og:type"]').should('attr', 'content', 'article') - cy.get('meta[property="og:url"]').should('exist') - cy.get('meta[property="og:image"]').should('exist') - cy.get('meta[property="og:image:type"]').should('attr', 'content', 'image/jpeg') - cy.get('meta[property="og:image:width"]').should('attr', 'content', '1200') - cy.get('meta[property="og:image:height"]').should('attr', 'content', '1200') - cy.get('meta[property="og:description"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') - - cy.get('link[rel="apple-touch-icon"]') - .should('attr', 'sizes', '120x120') - .should('attr', 'href', '/apple-touch-icon.png') - cy.get('link[rel="icon"]').should('have.length.gte', 2, 'containts at least 2 favicons') - cy.get('link[rel="manifest"]').should('attr', 'href', '/manifest.json') - cy.get('link[rel="mask-icon"]') - .should('attr', 'href', '/safari-pinned-tab.svg') - .should('attr', 'color', '#4a90e2') - cy.get('meta[name="theme-color"]').should('attr', 'content', '#ffffff') - }) - - it('global elements', () => { - cy.get('.header__upper') - .should('contain', 'Help') - .should('contain', 'GitHub') - - cy.get('.main__footer .footer__lower') - .should('contain', 'Powered by Contentful') - .should('contain', 'GitHub') - .should('contain', 'Imprint') - .should('contain', 'Contact us') - }) - - it('about modal', () => { - cy.get('section.modal .modal__wrapper').should('hidden') - cy.get('.header__upper-title a').click() - cy.get('section.modal .modal__wrapper').should('visible') - cy.get('section.modal .modal__title').should('contain', 'A reference for developers using Contentful') - cy.get('section.modal .modal__content').should('contain', 'This is "The Example App" in node.js. While building your own apps with Contentful,') - - // Close on background - cy.get('section.modal .modal__overlay').click({force: true}) - cy.get('section.modal .modal__wrapper').should('hidden') - cy.get('.header__upper-title a').click() - cy.get('section.modal .modal__wrapper').should('visible') - - // Close on X - cy.get('section.modal .modal__close-button').click() - cy.get('section.modal .modal__wrapper').should('hidden') - cy.get('.header__upper-title a').click() - cy.get('section.modal .modal__wrapper').should('visible') - - // Close on "Got this" button - cy.get('section.modal .modal__cta').click() - cy.get('section.modal .modal__wrapper').should('hidden') - }) - - it('header dropdowns show and hide', () => { - cy.get('.header__controls > *:first-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 0) - cy.get('.header__controls > *:first-child .header__controls_label').click() - cy.get('.header__controls > *:first-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 1) - // Should hide dropdown after a while - cy.wait(300) - cy.get('.header__controls > *:first-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 0) - - cy.get('.header__controls > *:last-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 0) - cy.get('.header__controls > *:last-child .header__controls_label').click() - cy.get('.header__controls > *:last-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 1) - // Should hide dropdown after a while - cy.wait(300) - cy.get('.header__controls > *:last-child .header__controls_dropdown').should('have.css', 'opacity').and('be', 0) - }) - - it('header dropdowns change app context', () => { - cy.get('.header__controls > *:first-child .header__controls_label').click() - cy.get('.header__controls > *:first-child .header__controls_dropdown button:last-child').click() - cy.location('search').should('contain', 'api=cpa') - - cy.get('.header__controls > *:last-child .header__controls_label').click() - cy.get('.header__controls > *:last-child .header__controls_dropdown button:last-child').click() - cy.location('search') - .should('contain', 'locale=de') - .should('contain', 'api=cpa') - }) - }) - - context('Home', () => { - it('renders home page', () => { - cy.visit('/') - cy.get('main .module-highlighted-course').should('have.length.gte', 1, 'should have at least one highlighted course') - }) - }) - - context('Courses', () => { - afterEach(() => { - cy.title().should('match', / — The Example App$/, 'Title has contextual suffix (appname)') - }) - - it('renders course overview', () => { - cy.visit('/courses') - cy.get('.course-card').should('have.length.gte', 2, 'renders at least 2 courses') - cy.get('.layout-sidebar__sidebar-header > h2').should('contain', 'Categories', 'Shows category title in sidebar') - cy.get('.sidebar-menu__list > .sidebar-menu__item:first-child').should('contain', 'All courses', 'Shows all courses link') - cy.get('.sidebar-menu__list > .sidebar-menu__item').should('have.length.gte', 2, 'renders at least one category selector') - cy.get('.sidebar-menu__list > .sidebar-menu__item:first-child > a').should('have.class', 'active', 'All courses is selected by default') - }) - - it('can filter course overview', () => { - cy.visit('/courses') - - cy.get('.sidebar-menu__list > .sidebar-menu__item:nth-child(2) > a').click() - cy.get('.sidebar-menu__list > .sidebar-menu__item:nth-child(1) > a').should('not.have.class', 'active', 'All courses link is no more active') - cy.get('.sidebar-menu__list > .sidebar-menu__item:nth-child(2) > a').should('have.class', 'active', 'First category filter link should be active') - cy.get('main h1').invoke('text').then((text) => console.log('headline content:', text)) - - cy.get('.sidebar-menu__list > .sidebar-menu__item:nth-child(2) > a').invoke('text').then((firstCategoryTitle) => { - cy.get('main h1').invoke('text').then((headline) => { - expect(headline).to.match(new RegExp(`^${firstCategoryTitle} \\([0-9]+\\)$`), 'Title now contains the category name with number of courses') - }) - }) - cy.get('.course-card').should('have.length.gte', 1, 'filtered courses contain at least one course') - }) - - it('tracks the watched state of lessons', () => { - // Home - cy.visit('/') - - // Navigate to courses - cy.get('header.header .main-navigation ul > li:last-child a').click() - - // Click title of course card to open it - cy.get('.course-card .course-card__title a').first().click() - - // Check that overview link is visited and active - cy.get('.table-of-contents .table-of-contents__list .table-of-contents__item:nth-child(1) a') - .should('have.class', 'active') - .should('have.class', 'visited') - // Check that lesson link is neither visited nor active - cy.get('.table-of-contents .table-of-contents__list .table-of-contents__item:nth-child(2) a') - .should('not.have.class', 'active') - .should('not.have.class', 'visited') - - // Start first lesson - cy.get('.course__overview a.course__overview-cta').click() - // Check that overview link is visited but not active - cy.get('.table-of-contents .table-of-contents__list .table-of-contents__item:nth-child(1) a') - .should('not.have.class', 'active') - .should('have.class', 'visited') - // Check that lesson link is visited and active - cy.get('.table-of-contents .table-of-contents__list .table-of-contents__item:nth-child(2) a') - .should('have.class', 'active') - .should('have.class', 'visited') - }) - }) - - context('Settings', () => { - beforeEach(() => { - cy.visit('/settings') - }) - - it('renders setting with default values', () => { - cy.title().should('equals', 'Settings — The Example App') - cy.get('main h1').should('have.text', 'Settings') - cy.get('.status-block') - .should('have.length', 1) - .invoke('text').then((text) => { - expect(text).to.match(/Connected to space “.+”/) - }) - cy.get('input#input-space-id').should('have.value', Cypress.env('CONTENTFUL_SPACE_ID')) - cy.get('input#input-delivery-token').should('have.value', Cypress.env('CONTENTFUL_DELIVERY_TOKEN')) - cy.get('input#input-preview-token').should('have.value', Cypress.env('CONTENTFUL_PREVIEW_TOKEN')) - }) - - it('checks for required fields', () => { - cy.get('input#input-space-id').clear() - cy.get('input#input-delivery-token').clear() - cy.get('input#input-preview-token').clear() - cy.get('input[type=submit]').click() - - cy.get('.status-block--info').should('not.exist') - cy.get('.status-block--success').should('not.exist') - cy.get('.status-block--error').should('exist') - - cy.get('input#input-space-id').parent().children('.form-item__error-wrapper') - .should('exist') - .find('.form-item__error-message') - .should('have.text', 'This field is required') - cy.get('input#input-delivery-token').parent().children('.form-item__error-wrapper') - .should('exist') - .find('.form-item__error-message') - .should('have.text', 'This field is required') - cy.get('input#input-preview-token').parent().children('.form-item__error-wrapper') - .should('exist') - .find('.form-item__error-message') - .should('have.text', 'This field is required') - }) - - it('validates field with actual client', () => { - cy.get('input#input-space-id').clear().type(Math.random().toString(36).substring(12)) - cy.get('input#input-delivery-token').clear().type(Math.random().toString(36)) - cy.get('input#input-preview-token').clear().type(Math.random().toString(36)) - cy.get('input[type=submit]').click() - - cy.get('.status-block--info').should('not.exist') - cy.get('.status-block--success').should('not.exist') - cy.get('.status-block--error').should('exist') - - cy.get('input#input-delivery-token').parent().children('.form-item__error-wrapper') - .should('exist') - .find('.form-item__error-message') - .should('have.text', 'Your Delivery API key is invalid.') - }) - - it('shows success message when valid credentials are supplied', () => { - cy.get('input#input-space-id').clear().type(Cypress.env('CONTENTFUL_SPACE_ID')) - cy.get('input#input-delivery-token').clear().type(Cypress.env('CONTENTFUL_DELIVERY_TOKEN')) - cy.get('input#input-preview-token').clear().type(Cypress.env('CONTENTFUL_PREVIEW_TOKEN')) - cy.get('input[type=submit]').click() - - cy.get('.status-block--info').should('exist') - cy.get('.status-block--success').should('exist') - cy.get('.status-block--error').should('not.exist') - - cy.get('.form-item__error-wrapper').should('not.exist') - }) - - it('enables editorial features and displays them on home', () => { - cy.get('input#input-editorial-features').check() - cy.get('input[type=submit]').click() - - cy.get('.status-block--info').should('exist') - cy.get('.status-block--success').should('exist') - cy.get('.status-block--error').should('not.exist') - - cy.get('input#input-editorial-features').should('checked') - - cy.visit('/') - - cy.get('.editorial-features').should('exist') - }) - }) -}) diff --git a/test/run-e2e-test.js b/test/run-e2e-test.js new file mode 100644 index 0000000..afe798a --- /dev/null +++ b/test/run-e2e-test.js @@ -0,0 +1,44 @@ +const http = require('http') +const { resolve } = require('path') +const execa = require('execa') + +require('dotenv').config({ path: 'variables.env' }) + +const app = require('../app') + +const TEST_PORT = 3007 + +app.set('port', TEST_PORT) + +const server = http.createServer(app) + +const { CONTENTFUL_SPACE_ID, CONTENTFUL_DELIVERY_TOKEN, CONTENTFUL_PREVIEW_TOKEN } = process.env + +server.on('error', console.error) +server.listen(TEST_PORT, function () { + const cypressBin = resolve(__dirname, 'e2e', 'node_modules', '.bin', 'cypress') + const spec = resolve(__dirname, 'e2e', 'specs', 'the-example-app-spec.js') + execa(cypressBin, [ + 'run', + '--spec', + spec, + !process.env.CI ? '--headed' : null, + '--env', + `CONTENTFUL_SPACE_ID=${CONTENTFUL_SPACE_ID},CONTENTFUL_DELIVERY_TOKEN=${CONTENTFUL_DELIVERY_TOKEN},CONTENTFUL_PREVIEW_TOKEN=${CONTENTFUL_PREVIEW_TOKEN}` + ].filter(Boolean)) + .then((result) => { + console.log('✔ e2e test succeeded:') + console.log(result.cmd) + console.log(result.stdout) + server.close() + process.exit(0) + }) + .catch((error) => { + console.log(`✖ e2e test failed with status code ${error.code}:`) + console.error(error.cmd) + console.error(error.stdout) + console.error(error.stderr) + server.close() + process.exit(1) + }) +}) From af9c453c520076303ab8aea3506201e4f13a0f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Tue, 12 Dec 2017 14:38:09 +0100 Subject: [PATCH 25/35] test(e2e): run all specs, not only one specific --- test/run-e2e-test.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/run-e2e-test.js b/test/run-e2e-test.js index afe798a..c490ba1 100644 --- a/test/run-e2e-test.js +++ b/test/run-e2e-test.js @@ -17,11 +17,8 @@ const { CONTENTFUL_SPACE_ID, CONTENTFUL_DELIVERY_TOKEN, CONTENTFUL_PREVIEW_TOKEN server.on('error', console.error) server.listen(TEST_PORT, function () { const cypressBin = resolve(__dirname, 'e2e', 'node_modules', '.bin', 'cypress') - const spec = resolve(__dirname, 'e2e', 'specs', 'the-example-app-spec.js') execa(cypressBin, [ 'run', - '--spec', - spec, !process.env.CI ? '--headed' : null, '--env', `CONTENTFUL_SPACE_ID=${CONTENTFUL_SPACE_ID},CONTENTFUL_DELIVERY_TOKEN=${CONTENTFUL_DELIVERY_TOKEN},CONTENTFUL_PREVIEW_TOKEN=${CONTENTFUL_PREVIEW_TOKEN}` From b5d69d71e76bf20bab35490cdc6d6855eb1dc3e5 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 13 Dec 2017 15:57:01 +0100 Subject: [PATCH 26/35] refactor: Improvements * refactor: Update modal * refactor: Update settings page * feat: Add reset credentials * feat: Add .nvmrc and lodash * chore: Remove console.log * chore: nmvrc -> .nvmrc * chore: nmvrc -> .nvmrc --- .nvmrc | 1 + app.js | 2 +- helpers.js | 10 ++ i18n/locales/de-DE.json | 53 +++++-- i18n/locales/en-US.json | 51 +++++-- package.json | 4 +- public/fonts/roboto-bold-webfont.woff | Bin public/fonts/roboto-bold-webfont.woff2 | Bin public/fonts/roboto-bolditalic-webfont.woff | Bin public/fonts/roboto-bolditalic-webfont.woff2 | Bin public/fonts/roboto-italic-webfont.woff | Bin public/fonts/roboto-italic-webfont.woff2 | Bin public/fonts/roboto-medium-webfont.woff | Bin public/fonts/roboto-medium-webfont.woff2 | Bin public/fonts/roboto-mediumitalic-webfont.woff | Bin .../fonts/roboto-mediumitalic-webfont.woff2 | Bin public/fonts/roboto-regular-webfont.woff | Bin public/fonts/roboto-regular-webfont.woff2 | Bin public/icons/icons.svg | 2 +- public/images/android-icon.svg | 6 + public/images/apple.svg | 3 + public/images/dotnet.svg | 144 ++++++++++++++++++ public/images/java.svg | 7 + public/images/javascript.svg | 4 + public/images/logo-node.svg | 14 -- .../images/logo-the-example-app-android.svg | 17 +++ public/images/logo-the-example-app-csharp.svg | 17 +++ public/images/logo-the-example-app-dotnet.svg | 17 +++ public/images/logo-the-example-app-ios.svg | 17 +++ public/images/logo-the-example-app-java.svg | 17 +++ public/images/logo-the-example-app-nodejs.svg | 17 +++ public/images/logo-the-example-app-php.svg | 17 +++ public/images/logo-the-example-app-python.svg | 17 +++ public/images/logo-the-example-app-ruby.svg | 17 +++ public/images/logo-the-example-app-swift.svg | 17 +++ public/images/nodejs-icon.svg | 3 + public/images/php.svg | 17 +++ public/images/python.svg | 14 ++ public/images/ruby.svg | 136 +++++++++++++++++ public/images/swift.svg | 13 ++ public/scripts/index.js | 4 + public/stylesheets/style.css | 4 + routes/landingPage.js | 1 - routes/settings.js | 12 +- views/layout.pug | 83 +++++++--- views/settings.pug | 36 ++++- 46 files changed, 731 insertions(+), 63 deletions(-) create mode 100644 .nvmrc mode change 100755 => 100644 public/fonts/roboto-bold-webfont.woff mode change 100755 => 100644 public/fonts/roboto-bold-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-bolditalic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-bolditalic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-italic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-italic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-medium-webfont.woff mode change 100755 => 100644 public/fonts/roboto-medium-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-mediumitalic-webfont.woff mode change 100755 => 100644 public/fonts/roboto-mediumitalic-webfont.woff2 mode change 100755 => 100644 public/fonts/roboto-regular-webfont.woff mode change 100755 => 100644 public/fonts/roboto-regular-webfont.woff2 create mode 100644 public/images/android-icon.svg create mode 100644 public/images/apple.svg create mode 100644 public/images/dotnet.svg create mode 100644 public/images/java.svg create mode 100644 public/images/javascript.svg delete mode 100644 public/images/logo-node.svg create mode 100644 public/images/logo-the-example-app-android.svg create mode 100644 public/images/logo-the-example-app-csharp.svg create mode 100644 public/images/logo-the-example-app-dotnet.svg create mode 100644 public/images/logo-the-example-app-ios.svg create mode 100644 public/images/logo-the-example-app-java.svg create mode 100644 public/images/logo-the-example-app-nodejs.svg create mode 100644 public/images/logo-the-example-app-php.svg create mode 100644 public/images/logo-the-example-app-python.svg create mode 100644 public/images/logo-the-example-app-ruby.svg create mode 100644 public/images/logo-the-example-app-swift.svg create mode 100644 public/images/nodejs-icon.svg create mode 100644 public/images/php.svg create mode 100644 public/images/python.svg create mode 100644 public/images/ruby.svg create mode 100644 public/images/swift.svg diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..22333f1 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +8.9.3 diff --git a/app.js b/app.js index dfb0c9d..de3cafb 100644 --- a/app.js +++ b/app.js @@ -45,6 +45,7 @@ app.use(settings) // Make data available for our views to consume app.use(catchErrors(async function (request, response, next) { + response.locals.baseUrl = `${request.protocol}://${request.headers.host}` // Get enabled locales from Contentful response.locals.locales = [{code: 'en-US', name: 'U.S. English'}] response.locals.currentLocale = response.locals.locales[0] @@ -90,7 +91,6 @@ app.use(catchErrors(async function (request, response, next) { if (!response.locals.currentLocale) { response.locals.currentLocale = defaultLocale } - next() })) diff --git a/helpers.js b/helpers.js index 72acd75..30867fe 100644 --- a/helpers.js +++ b/helpers.js @@ -19,6 +19,16 @@ module.exports.formatMetaTitle = (title, localeCode = 'en-US') => { return `${title.charAt(0).toUpperCase()}${title.slice(1)} — ${translate('defaultTitle', localeCode)}` } +module.exports.isCustomCredentials = (settings) => { + const spaceId = process.env.CONTENTFUL_SPACE_ID + const deliveryToken = process.env.CONTENTFUL_DELIVERY_TOKEN + const previewToken = process.env.CONTENTFUL_PREVIEW_TOKEN + + return settings.spaceId !== spaceId || + settings.deliveryToken !== deliveryToken || + settings.previewToken !== previewToken +} + /** * Evil users might try to add base64 url data to execute js code * so we should purge any potentially harmful data to mitigate risk diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index bf3f98c..b952868 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -21,14 +21,29 @@ "footerDisclaimer": "Powered by Contentful. Diese Website und deren Materialien existieren nur für Demonstrationszwecken. Sie können diese benutzen, um den Inhalt ihres Contentful Kontos anzusehen.", "imprintLabel": "Impressum", "contactUsLabel": "Kontakt", - "modalTitle": "Ein Beispiel für Entwickler, die Contentful benutzen.", - "modalIntro": "Dies ist \"The Example App\" in node.js. Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalTitle": "Ein Beispiel für Entwickler, die Contentful benutzen", + "modalTitleDotnet": "Ein Beispiel für .NET Entwickler, die Contentful benutzen", + "modalTitleRuby": "Ein Beispiel für Ruby Entwickler, die Contentful benutzen", + "modalTitlePhp": "Ein Beispiel für PHP Entwickler, die Contentful benutzen", + "modalTitlePython": "Ein Beispiel für Python Entwickler, die Contentful benutzen", + "modalTitleSwift": "Ein Beispiel für Swift Entwickler, die Contentful benutzen", + "modalTitleAndroid": "Ein Beispiel für Android Entwickler, die Contentful benutzen", + "modalTitleJava": "Ein Beispiel für Java Entwickler, die Contentful benutzen", + "modalIntro": "Dies ist \"The Node.js Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroDotnet": "Dies ist \"The .NET Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroRuby": "Dies ist \"The Ruby Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroPhp": "Dies ist \"The PHP Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroPython": "Dies ist \"The Python Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroSwift": "Dies ist \"The Swift Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroAndroid": "Dies ist \"The Android Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalIntroJava": "Dies ist \"The Java Example App\". Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", "modalSpaceIntro": "Den Inhalt dieser Anwendung können Sie selbst bearbeiten. Dafür müssen Sie den \"The Example App\" space in Ihren Contentful Account importieren. Anleitung hierzu gibt es", + "modalPlatforms": "Diese App ist auch in den folgenden Plattformen und Sprachen verfügbar:", "modalSpaceLinkLabel": "hier", "modalCTALabel": "Gut, verstanden.", - "editorialFeaturesHint": "Bearbeiten Sie diesen Eintrag in unserer Web App. Sie müssen sich eingelogged haben und Zugang zum Space haben, um diese Funktion nutzen zu können.", + "editorialFeaturesHint": "Bearbeiten Sie diesen Eintrag in der Contentful Web App. Sie müssen sich eingelogged haben und Zugang zum Space haben, um diese Funktion nutzen zu können.", "draftLabel": "Entwurf", - "pendingChangesLabel": "Änderungen vorbehalten", + "pendingChangesLabel": "Änderungen verfügbar", "lessonModuleErrorTitle": "⚠️ Ungültiges Lektionsmodul", "lessonModuleErrorBody": "Konnte den Typ nicht erkennen: ", "nextLessonLabel": "Nächste Lektion ansehen", @@ -64,12 +79,14 @@ "changesSavedLabel": "Änderungen erfolgreich gespeichert!", "errorOcurredTitleLabel": "Fehler aufgetreten", "errorOcurredMessageLabel": "Einige Fehler sind aufgetreten. Bitte schauen Sie sich die Fehlermeldungen neben den Feldern an.", - "connectedToSpaceLabel": "Verbunden mit Space ", + "connectedToSpaceLabel": "Verbundener Space ", "spaceIdLabel": "Space ID", "spaceIdHelpText": "Die Space Id ist eine eindeutige Identifizierung für Ihren Space.", "accessTokenLabel": "Access Token", - "contentDeliveryApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit dieser API an.", - "contentPreviewApiHelpText": "Schauen Sie sich unveröffentlichten Inhalt mit dieser API an. (z.B. Inhalt im Zustand “Entwurf”).", + "cdaAccessTokenLabel": "Content Delivery API Access Token", + "cpaAccessTokenLabel": "Content Preview API Access Token", + "contentDeliveryApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit diesem Token an.", + "contentPreviewApiHelpText": "Schauen Sie sich veröffentlichten Inhalt mit diesem Token an. (z.B. Inhalt im Zustand “Entwurf”).", "enableEditorialFeaturesLabel": "Editoriale Funktionen aktivieren.", "enableEditorialFeaturesHelpText": "Aktivieren, um Bearbeitung und weitere kontextabhängige Helfer zu aktivieren. Damit dies funktioniert, müssen sie Zugang zu dem Space haben.", "saveSettingsButtonLabel": "Einstellungen Speichern", @@ -80,6 +97,22 @@ "beginnerLabel": "Anfänger", "intermediateLabel": "Fortgeschrittener", "advancedLabel": "Experte", - "editInTheWebAppLabel": "In der web app bearbeiten", - "error404Route": "Ein nicht unterstützter HTTP Route" -} + "editInTheWebAppLabel": "In der Contentful Web App bearbeiten", + "error404Route": "Eine nicht unterstützte HTTP Route", + "currentLocaleLabel": "Deutsch (Deutschland)", + "hostedLabel": "Gehostet", + "comingSoonLabel": "Bald verfügbar", + "credentialSourceLabel": "Ursprung der Zugangsdaten:", + "readMoreLabel": "Weiterlesen", + "credentialsLocationLabel": "Ihre Zugangsdaten werden derzeit aus", + "overwriteCredentialsLabel": "Sie können überschrieben werden, indem Sie das Formular unten oder einen Querystring Parameter verwenden.", + "copyLinkLabel": "Einen Link zum Verteilen kopieren", + "resetCredentialsLabel": "Zugangsdaten zurücksetzen", + "resetAboveLabel": "Sie können auf voreingestellten Zugangsdaten zurücksetzen.", + "closeLabel": "Schließen", + "overrideConfigLabel": "Diese Konfiguration kann durch das folgende Formular oder durch Verwendung von Querystring Parameter überschrieben werden.", + "loadedFromLocalFileLabel": "Geladen von der lokalen Datei", + "usingServerCredentialsLabel": "Die Beispielanwendung verwendet derzeit serverseitig gespeicherte Anmeldeinformationen zum Herstellen einer Verbindung mit einem Contentful-Space.", + "usingSessionCredentialsLabel": "Die Beispielanwendung verwendet derzeit Anmeldeinformationen von der Anwendungssitzung, um eine Verbindung zu einem Contentful-Space herzustellen.", + "applicationCredentialsLabel": "Anmeldeinformationen für die Anwendungssitzung" +} \ No newline at end of file diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index fa93f79..18b4fc0 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -21,12 +21,27 @@ "footerDisclaimer": "Powered by Contentful. This website and the materials found on it are for demo purposes. You can use this to preview the content created on your Contentful account.", "imprintLabel": "Imprint", "contactUsLabel": "Contact us", - "modalTitle": "A reference for developers using Contentful", - "modalIntro": "This is \"The Example App\" in node.js. While building your own apps with Contentful, you can reference this app's code, found on", + "modalTitle": "A reference for Node.js developers using Contentful", + "modalTitleDotnet": "A reference for .NET developers using Contentful", + "modalTitleRuby": "A reference for Ruby developers using Contentful", + "modalTitlePhp": "A reference for PHP developers using Contentful", + "modalTitlePython": "A reference for Python developers using Contentful", + "modalTitleSwift": "A reference for Swift developers using Contentful", + "modalTitleAndroid": "A reference for Android developers using Contentful", + "modalTitleJava": "A reference for Java developers using Contentful", + "modalIntro": "This is \"The Node.js Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroDotnet": "This is \"The .NET Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroRuby": "This is \"The Ruby Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroPhp": "This is \"The PHP Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroPython": "This is \"The Python Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroSwift": "This is \"The Swift Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroAndroid": "This is \"The Android Example App\". While building your own apps with Contentful, you can reference this app's code, found on", + "modalIntroJava": "This is \"The Java Example App\". While building your own apps with Contentful, you can reference this app's code, found on", "modalSpaceIntro": "You can also edit the content in the app by cloning the Contentful space to your own Contentful account by following the instructions", + "modalPlatforms": "This app is also available in the following platforms and languages:", "modalSpaceLinkLabel": "here", "modalCTALabel": "Ok, got it.", - "editorialFeaturesHint": "Edit this entry in our web app. You have to be logged in and have access to the connected space to use this feature.", + "editorialFeaturesHint": "Edit this entry in the Contentful web app. You have to be logged in and have access to the connected space to use this feature.", "draftLabel": "draft", "pendingChangesLabel": "pending changes", "lessonModuleErrorTitle": "⚠️ Invalid lesson module", @@ -64,12 +79,14 @@ "changesSavedLabel": "Changes saved successfully!", "errorOcurredTitleLabel": "Error occurred", "errorOcurredMessageLabel": "Some errors occurred. Please check the error messages next to the fields.", - "connectedToSpaceLabel": "Connected to space", + "connectedToSpaceLabel": "Connected space", "spaceIdLabel": "Space ID", "spaceIdHelpText": "The Space ID is a unique identifier for your space.", "accessTokenLabel": "access token", - "contentDeliveryApiHelpText": "View published content using this API.", - "contentPreviewApiHelpText": "Preview unpublished content using this API (i.e. content with “Draft” status).", + "cdaAccessTokenLabel": "Content Delivery API access token", + "cpaAccessTokenLabel": "Content Preview API access token", + "contentDeliveryApiHelpText": "View published content using this token.", + "contentPreviewApiHelpText": "Preview unpublished content using this token (i.e. content with “Draft” status).", "enableEditorialFeaturesLabel": "Enable editorial features", "enableEditorialFeaturesHelpText": "Enable to display an edit link and other contextual helpers for authors. You need to have access to the connected space to make this work.", "saveSettingsButtonLabel": "Save settings", @@ -80,6 +97,22 @@ "beginnerLabel": "Beginner", "intermediateLabel": "Intermediate", "advancedLabel": "Advanced", - "editInTheWebAppLabel": "Edit in the web app", - "error404Route": "a non supported route" -} + "editInTheWebAppLabel": "Edit in the Contentful Web App", + "error404Route": "Verify that you are trying to reach a supported route", + "currentLocaleLabel": "English (United States)", + "hostedLabel": "Hosted", + "comingSoonLabel": "Coming soon", + "credentialSourceLabel": "Credentials source", + "readMoreLabel": "Read more", + "credentialsLocationLabel": "Your credentials are currently loaded from", + "overwriteCredentialsLabel": "They can be overwritten by changing them below or using query string parameters.", + "copyLinkLabel": "Copy session deeplink to clipboard", + "resetCredentialsLabel": "Reset credentials to default", + "resetAboveLabel": "You can reset to the default credentials above.", + "closeLabel": "Close", + "overrideConfigLabel": "This configuration can be overriden through the form below or by using query string parameters.", + "loadedFromLocalFileLabel": "Loaded from local file", + "usingServerCredentialsLabel": "The example app is currently using server side stored credentials to connect to a Contentful space.", + "usingSessionCredentialsLabel": "The example app is currently using application session stored credentials to connect to a Contentful space.", + "applicationCredentialsLabel": "Application session credentials" +} \ No newline at end of file diff --git a/package.json b/package.json index 4efd13e..b6aa42b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "heroku-postbuild": "./bin/vendor/deploy.sh" }, "engines": { - "node": ">=8.4.0" + "node": ">=8.9.3" }, "dependencies": { "body-parser": "~1.15.2", @@ -30,7 +30,7 @@ "execa": "^0.8.0", "express": "~4.14.0", "helmet": "^3.9.0", - "loadash": "^1.0.0", + "lodash": "^4.17.4", "marked": "^0.3.6", "morgan": "~1.7.0", "pug": "~2.0.0-beta6" diff --git a/public/fonts/roboto-bold-webfont.woff b/public/fonts/roboto-bold-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bold-webfont.woff2 b/public/fonts/roboto-bold-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bolditalic-webfont.woff b/public/fonts/roboto-bolditalic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-bolditalic-webfont.woff2 b/public/fonts/roboto-bolditalic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-italic-webfont.woff b/public/fonts/roboto-italic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-italic-webfont.woff2 b/public/fonts/roboto-italic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-medium-webfont.woff b/public/fonts/roboto-medium-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-medium-webfont.woff2 b/public/fonts/roboto-medium-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-mediumitalic-webfont.woff b/public/fonts/roboto-mediumitalic-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-mediumitalic-webfont.woff2 b/public/fonts/roboto-mediumitalic-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-regular-webfont.woff b/public/fonts/roboto-regular-webfont.woff old mode 100755 new mode 100644 diff --git a/public/fonts/roboto-regular-webfont.woff2 b/public/fonts/roboto-regular-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/icons/icons.svg b/public/icons/icons.svg index 013a8eb..6e8867e 100644 --- a/public/icons/icons.svg +++ b/public/icons/icons.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/images/android-icon.svg b/public/images/android-icon.svg new file mode 100644 index 0000000..54a7f13 --- /dev/null +++ b/public/images/android-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/apple.svg b/public/images/apple.svg new file mode 100644 index 0000000..57d9d85 --- /dev/null +++ b/public/images/apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/dotnet.svg b/public/images/dotnet.svg new file mode 100644 index 0000000..e75d272 --- /dev/null +++ b/public/images/dotnet.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/java.svg b/public/images/java.svg new file mode 100644 index 0000000..d131c8a --- /dev/null +++ b/public/images/java.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/images/javascript.svg b/public/images/javascript.svg new file mode 100644 index 0000000..c6370d7 --- /dev/null +++ b/public/images/javascript.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/logo-node.svg b/public/images/logo-node.svg deleted file mode 100644 index 5c3995a..0000000 --- a/public/images/logo-node.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - logo-node - - - - - - - - - - - diff --git a/public/images/logo-the-example-app-android.svg b/public/images/logo-the-example-app-android.svg new file mode 100644 index 0000000..411fe1d --- /dev/null +++ b/public/images/logo-the-example-app-android.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Android + + + + diff --git a/public/images/logo-the-example-app-csharp.svg b/public/images/logo-the-example-app-csharp.svg new file mode 100644 index 0000000..44630a9 --- /dev/null +++ b/public/images/logo-the-example-app-csharp.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The C# + + + + diff --git a/public/images/logo-the-example-app-dotnet.svg b/public/images/logo-the-example-app-dotnet.svg new file mode 100644 index 0000000..b0fd00f --- /dev/null +++ b/public/images/logo-the-example-app-dotnet.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The .NET + + + + diff --git a/public/images/logo-the-example-app-ios.svg b/public/images/logo-the-example-app-ios.svg new file mode 100644 index 0000000..918f817 --- /dev/null +++ b/public/images/logo-the-example-app-ios.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The iOS + + + + diff --git a/public/images/logo-the-example-app-java.svg b/public/images/logo-the-example-app-java.svg new file mode 100644 index 0000000..3956404 --- /dev/null +++ b/public/images/logo-the-example-app-java.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Java + + + + diff --git a/public/images/logo-the-example-app-nodejs.svg b/public/images/logo-the-example-app-nodejs.svg new file mode 100644 index 0000000..d2b8602 --- /dev/null +++ b/public/images/logo-the-example-app-nodejs.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The node.js + + + + diff --git a/public/images/logo-the-example-app-php.svg b/public/images/logo-the-example-app-php.svg new file mode 100644 index 0000000..3c4a6f4 --- /dev/null +++ b/public/images/logo-the-example-app-php.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The PHP + + + + diff --git a/public/images/logo-the-example-app-python.svg b/public/images/logo-the-example-app-python.svg new file mode 100644 index 0000000..bda70c0 --- /dev/null +++ b/public/images/logo-the-example-app-python.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Python + + + + diff --git a/public/images/logo-the-example-app-ruby.svg b/public/images/logo-the-example-app-ruby.svg new file mode 100644 index 0000000..55c2b34 --- /dev/null +++ b/public/images/logo-the-example-app-ruby.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Ruby + + + + diff --git a/public/images/logo-the-example-app-swift.svg b/public/images/logo-the-example-app-swift.svg new file mode 100644 index 0000000..94f0846 --- /dev/null +++ b/public/images/logo-the-example-app-swift.svg @@ -0,0 +1,17 @@ + + + + + + + + + + example app + + + The Swift + + + + diff --git a/public/images/nodejs-icon.svg b/public/images/nodejs-icon.svg new file mode 100644 index 0000000..90f4af0 --- /dev/null +++ b/public/images/nodejs-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/php.svg b/public/images/php.svg new file mode 100644 index 0000000..6f2cb5d --- /dev/null +++ b/public/images/php.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/images/python.svg b/public/images/python.svg new file mode 100644 index 0000000..a49fcb6 --- /dev/null +++ b/public/images/python.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/images/ruby.svg b/public/images/ruby.svg new file mode 100644 index 0000000..b03eda3 --- /dev/null +++ b/public/images/ruby.svg @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/swift.svg b/public/images/swift.svg new file mode 100644 index 0000000..eff1018 --- /dev/null +++ b/public/images/swift.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/scripts/index.js b/public/scripts/index.js index 0ca00ad..43b1bac 100644 --- a/public/scripts/index.js +++ b/public/scripts/index.js @@ -1,5 +1,9 @@ <<<<<<< HEAD +<<<<<<< HEAD !function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var r=n(3),o=i(r),a=n(4),s=i(a),l=n(5),c=i(l),u=n(6),d=i(u),f=n(7),p=i(f),g=n(8),m=i(g),h=n(9),b=i(h),E=n(10),v=i(E),_=n(11),w=i(_),y=n(12),N=i(y),O=n(14),M=i(O),x=n(15),C=i(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),i=null;(0,N.default)(e,function(){},function(){i&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return i.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),i=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-higlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),i=function(e){var i=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===i&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=i})})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s/g,">")}function n(e){return e.nodeName.toLowerCase()}function i(e,t){var n=e&&e.exec(t);return n&&0===n.index}function r(e){return x.test(e)}function o(e){var t,n,i,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,i=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||i.length;){var f=o();if(u+=t(r.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(r.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof r.keywords?s("keyword",r.keywords):N(r.keywords).forEach(function(e){s(e,r.keywords[e])}),r.keywords=a}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return c("self"===e?r:e)})),r.contains.forEach(function(e){i(e,r)}),r.starts&&i(r.starts,o);var l=r.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}i(e)}function d(e,n,r,o){function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+a}function g(){var e,n,i,r;if(!y.keywords)return t(x);for(r="",n=0,y.lexemesRe.lastIndex=0,i=y.lexemesRe.exec(x);i;)r+=t(x.substring(n,i.index)),e=c(y,i),e?(C+=e[1],r+=p(e[0],t(i[0]))):r+=t(i[0]),n=y.lexemesRe.lastIndex,i=y.lexemesRe.exec(x);return r+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var i=s(y,t);if(i){var r=y;r.skip?x+=t:(r.returnEnd||r.excludeEnd||(x+=t),h(),r.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==i.parent);return i.starts&&b(i.starts,""),r.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var i={relevance:0,value:t(e)},r=i;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>r.relevance&&(r=n),n.relevance>i.relevance&&(r=i,i=n)}),r.language&&(i.second_best=r),i}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var i=t?M[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}function m(e){var t,n,i,a,c,u=o(e);r(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,i=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=i.value,i.value=l(n,s(a),c)),i.value=p(i.value),e.innerHTML=i.value,e.className=g(e.className,u,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var i=O[t]=n(e);i.aliases&&i.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,i){var r=e.inherit({className:"comment",begin:t,end:n,contains:[]},i||{});return r.contains.push(e.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(n,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(r,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});r.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,i,e.REGEXP_MODE];var a=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,r]};return i.contains=[r,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},i={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^\\=begin","^\\=end",{contains:[i],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,r,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[r,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i=e.COMMENT("/\\*","\\*/",{contains:["self"]}),r={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[r,e.BACKSLASH_ESCAPE]});return r.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,i,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,i]}]}}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){function r(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(t,"top"),r=f(t,"left"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function g(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+i+"Width"].split("px")[0]}function m(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),i=f(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||r.right-r.left,l=a.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),r.width-=c,r.height-=u}return b(r)}function v(e,t){var n=ge(),i="HTML"===t.nodeName,r=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:r.top-a.top-u,left:r.left-a.left-d,width:r.width,height:r.height});if(f.marginTop=0,f.marginLeft=0,!n&&i){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:i,height:r})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,i){var r={top:0,left:0},o=d(e,t);if("viewport"===i)r=_(o);else{var l=void 0;"scrollParent"===i?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===i?e.ownerDocument.documentElement:i;var c=v(l,o);if("HTML"!==l.nodeName||w(o))r=c;else{var u=h(),f=u.height,p=u.width;r.top+=c.top-c.marginTop,r.bottom=f+c.top,r.left+=c.left-c.marginLeft,r.right=p+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function N(e){return e.width*e.height}function O(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,i,o,r),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var i=x(e),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[a]=t[a]+t[l]/2-i[l]/2,r[s]=n===s?t[s]-i[c]:t[C(s)],r}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;ia[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),i=_e.slice(n+1).concat(_e.slice(0,n));return t?i.reverse():i}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split("-")[0],r=C(i),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[i,r];break;case we.CLOCKWISE:a=Y(i);break;case we.COUNTERCLOCKWISE:a=Y(i,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(i!==s||a.length===l+1)return e;i=e.placement.split("-")[0],r=C(i);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===i&&d(c.right)>d(u.left)||"right"===i&&d(c.left)d(u.top)||"bottom"===i&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&h,E=-1!==["top","bottom"].indexOf(i),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(i=a[l+1]),v&&(o=Q(o)),e.placement=i+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(i[s])&&(e.offsets.popper[l]=o(i[s])),e}function ee(e,t,n,i){var r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,i){var r=(1===i?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){K(n)&&(r[t]+=n*("-"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-("right"===e?o.width:o.height))),be({},n,r)}};return r.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[i])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:i,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var i,r,o;!function(n,a){"use strict";r=[],i=a,void 0!==(o="function"==typeof i?i.apply(t,r):i)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!i(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),r(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),r(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!r(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function i(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function r(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var i={};for(var r in a)n.hasOwnProperty(r)?i[r]=n[r]:i[r]=a[r];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s>>>>>> feat: Minor fixes (#73) +======= +!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=n(3),o=r(i),a=n(4),s=r(a),l=n(5),c=r(l),u=n(6),d=r(u),f=n(7),p=r(f),g=n(8),m=r(g),h=n(9),b=r(h),E=n(10),v=r(E),_=n(11),w=r(_),y=n(12),N=r(y),O=n(14),M=r(O),x=n(15),C=r(x);o.default.registerLanguage("csharp",s.default),o.default.registerLanguage("javascript",c.default),o.default.registerLanguage("java",d.default),o.default.registerLanguage("php",p.default),o.default.registerLanguage("python",m.default),o.default.registerLanguage("ruby",b.default),o.default.registerLanguage("shell",v.default),o.default.registerLanguage("swift",w.default),!NodeList.prototype.forEach&&Array.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".header__controls_group").forEach(function(e){var t=e.querySelector(".header__controls_label"),n=e.querySelector(".header__controls_dropdown"),r=null;(0,N.default)(e,function(){},function(){r&&(n.classList.remove("header__controls_dropdown--active"),window.setTimeout(function(){return r.destroy()},500))}).options({sensitivity:10,interval:150,timeout:300}),t.addEventListener("click",function(e){n.classList.add("header__controls_dropdown--active"),r=new M.default(e.target,n)})});var e=document.getElementById("about-this-modal-trigger"),t=document.getElementById("about-this-modal"),n=document.querySelectorAll("#about-this-modal .close");e.addEventListener("click",function(){t.classList.add("modal--visible")}),n.forEach(function(e){e.addEventListener("click",function(){t.classList.remove("modal--visible")})}),o.default.initHighlightingOnLoad(),(0,C.default)(document.getElementsByClassName("module-highlighted-course__title"),{minFontSize:20,multiLine:!1}),Array.from(document.getElementsByClassName("lesson-module-code")).forEach(function(e){var t=Array.from(e.getElementsByClassName("lesson-module-code__trigger")),n=Array.from(e.getElementsByClassName("lesson-module-code__code")),r=function(e){var r=e.target.getAttribute("data-target");t.forEach(function(e){e.classList.remove("lesson-module-code__trigger--active")}),e.target.classList.add("lesson-module-code__trigger--active"),n.forEach(function(e){e.classList.remove("lesson-module-code__code--active"),e.id===r&&e.classList.add("lesson-module-code__code--active")})};t.forEach(function(e){e.onclick=r})});var r=document.querySelector(".status-block__sharelink");r&&r.addEventListener("click",function(e){e.preventDefault();var t=e.target.getAttribute("href"),n=document.createElement("input");n.value=t,document.body.appendChild(n),n.select();try{document.execCommand("copy")}catch(e){alert("Unable to copy text. Please right click and copy link target.")}document.body.removeChild(n)})})},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;e(t)}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function n(e){return e.nodeName.toLowerCase()}function r(e,t){var n=e&&e.exec(t);return n&&0===n.index}function i(e){return x.test(e)}function o(e){var t,n,r,o,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=C.exec(a))return w(n[1])?n[1]:"no-highlight";for(a=a.split(/\s+/),t=0,r=a.length;t"}function s(e){u+=""}function l(e){("start"===e.event?a:s)(e.node)}for(var c=0,u="",d=[];e.length||r.length;){var f=o();if(u+=t(i.substring(c,f[0].offset)),c=f[0].offset,f===e){d.reverse().forEach(s);do{l(f.splice(0,1)[0]),f=o()}while(f===e&&f.length&&f[0].offset===c);d.reverse().forEach(a)}else"start"===f[0].event?d.push(f[0].node):d.pop(),l(f.splice(0,1)[0])}return u+t(i.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[a(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(i,o){if(!i.compiled){if(i.compiled=!0,i.keywords=i.keywords||i.beginKeywords,i.keywords){var a={},s=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof i.keywords?s("keyword",i.keywords):N(i.keywords).forEach(function(e){s(e,i.keywords[e])}),i.keywords=a}i.lexemesRe=n(i.lexemes||/\w+/,!0),o&&(i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")\\b"),i.begin||(i.begin=/\B|\b/),i.beginRe=n(i.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(i.endRe=n(i.end)),i.terminator_end=t(i.end)||"",i.endsWithParent&&o.terminator_end&&(i.terminator_end+=(i.end?"|":"")+o.terminator_end)),i.illegal&&(i.illegalRe=n(i.illegal)),null==i.relevance&&(i.relevance=1),i.contains||(i.contains=[]),i.contains=Array.prototype.concat.apply([],i.contains.map(function(e){return c("self"===e?i:e)})),i.contains.forEach(function(e){r(e,i)}),i.starts&&r(i.starts,o);var l=i.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([i.terminator_end,i.illegal]).map(t).filter(Boolean);i.terminators=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function d(e,n,i,o){function a(e,t){var n,i;for(n=0,i=t.contains.length;n')+t+a}function g(){var e,n,r,i;if(!y.keywords)return t(x);for(i="",n=0,y.lexemesRe.lastIndex=0,r=y.lexemesRe.exec(x);r;)i+=t(x.substring(n,r.index)),e=c(y,r),e?(C+=e[1],i+=p(e[0],t(r[0]))):i+=t(r[0]),n=y.lexemesRe.lastIndex,r=y.lexemesRe.exec(x);return i+t(x.substr(n))}function m(){var e="string"==typeof y.subLanguage;if(e&&!O[y.subLanguage])return t(x);var n=e?d(y.subLanguage,x,!0,N[y.subLanguage]):f(x,y.subLanguage.length?y.subLanguage:void 0);return y.relevance>0&&(C+=n.relevance),e&&(N[y.subLanguage]=n.top),p(n.language,n.value,!1,!0)}function h(){M+=null!=y.subLanguage?m():g(),x=""}function b(e){M+=e.className?p(e.className,"",!0):"",y=Object.create(e,{parent:{value:y}})}function E(e,t){if(x+=e,null==t)return h(),0;var n=a(t,y);if(n)return n.skip?x+=t:(n.excludeBegin&&(x+=t),h(),n.returnBegin||n.excludeBegin||(x=t)),b(n,t),n.returnBegin?0:t.length;var r=s(y,t);if(r){var i=y;i.skip?x+=t:(i.returnEnd||i.excludeEnd||(x+=t),h(),i.excludeEnd&&(x=t));do{y.className&&(M+=L),y.skip||(C+=y.relevance),y=y.parent}while(y!==r.parent);return r.starts&&b(r.starts,""),i.returnEnd?0:t.length}if(l(t,y))throw new Error('Illegal lexeme "'+t+'" for mode "'+(y.className||"")+'"');return x+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var _,y=o||v,N={},M="";for(_=y;_!==v;_=_.parent)_.className&&(M=p(_.className,"",!0)+M);var x="",C=0;try{for(var T,S,A=0;;){if(y.terminators.lastIndex=A,!(T=y.terminators.exec(n)))break;S=E(n.substring(A,T.index),T[0]),A=T.index+S}for(E(n.substr(A)),_=y;_.parent;_=_.parent)_.className&&(M+=L);return{relevance:C,value:M,language:e,top:y}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:t(n)};throw e}}function f(e,n){n=n||R.languages||N(O);var r={relevance:0,value:t(e)},i=r;return n.filter(w).forEach(function(t){var n=d(t,e,!1);n.language=t,n.relevance>i.relevance&&(i=n),n.relevance>r.relevance&&(i=r,r=n)}),i.language&&(r.second_best=i),r}function p(e){return R.tabReplace||R.useBR?e.replace(T,function(e,t){return R.useBR&&"\n"===e?"
":R.tabReplace?t.replace(/\t/g,R.tabReplace):""}):e}function g(e,t,n){var r=t?M[t]:n,i=[e.trim()];return e.match(/\bhljs\b/)||i.push("hljs"),-1===e.indexOf(r)&&i.push(r),i.join(" ").trim()}function m(e){var t,n,r,a,c,u=o(e);i(u)||(R.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,c=t.textContent,r=u?d(u,c,!0):f(c),n=s(t),n.length&&(a=document.createElementNS("http://www.w3.org/1999/xhtml","div"),a.innerHTML=r.value,r.value=l(n,s(a),c)),r.value=p(r.value),e.innerHTML=r.value,e.className=g(e.className,u,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function h(e){R=a(R,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");y.forEach.call(e,m)}}function E(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function v(t,n){var r=O[t]=n(e);r.aliases&&r.aliases.forEach(function(e){M[e]=t})}function _(){return N(O)}function w(e){return e=(e||"").toLowerCase(),O[e]||O[M[e]]}var y=[],N=Object.keys,O={},M={},x=/^(no-?highlight|plain|text)$/i,C=/\blang(?:uage)?-([\w-]+)\b/i,T=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,L="",R={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=f,e.fixMarkup=p,e.highlightBlock=m,e.configure=h,e.initHighlighting=b,e.initHighlightingOnLoad=E,e.registerLanguage=v,e.listLanguages=_,e.getLanguage=w,e.inherit=a,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var i=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return i.contains.push(e.PHRASAL_WORDS_MODE),i.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),i},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},function(e,t){e.exports=function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},n={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(n,{illegal:/\n/}),i={className:"subst",begin:"{",end:"}",keywords:t},o=e.inherit(i,{illegal:/\n/}),a={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,o]},s={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},i]},l=e.inherit(s,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},o]});i.contains=[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE],o.contains=[l,a,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var c={variants:[s,a,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},c,e.C_NUMBER_MODE,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+u+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[c,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},o={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]};i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,r,e.REGEXP_MODE];var a=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},function(e,t){e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},r={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},i={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php3","php4","php5","php6"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,r,i]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},r,i]}}},function(e,t){e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},n={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[n,r]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[n,r]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[r]},{begin:/(fr|rf|f)"/,end:/"/,contains:[r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},a={className:"params",begin:/\(/,end:/\)/,contains:["self",n,o,i]};return r.contains=[i,o,n],{aliases:["py","gyp"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,o,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,a,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[r]}),e.COMMENT("^\\=begin","^\\=end",{contains:[r],relevance:10}),e.COMMENT("^__END__","\\n$")],a={className:"subst",begin:"#\\{",end:"}",keywords:n},s={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<(-?)\w+$/,end:/^\s*\w+$/}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},c=[s,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(o)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t}),l].concat(o)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[s,{begin:t}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:n},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o),relevance:0}].concat(o);a.contains=c,l.contains=c;var u=[{begin:/^\s*=>/,starts:{end:"$",contains:c}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:c}}];return{aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:o.concat(u).concat(c)}}},function(e,t){e.exports=function(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}},function(e,t){e.exports=function(e){var t={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n={className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r=e.COMMENT("/\\*","\\*/",{contains:["self"]}),i={className:"subst",begin:/\\\(/,end:"\\)",keywords:t,contains:[]},o={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0},a=e.inherit(e.QUOTE_STRING_MODE,{contains:[i,e.BACKSLASH_ESCAPE]});return i.contains=[o],{keywords:t,contains:[a,e.C_LINE_COMMENT_MODE,r,n,o,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,contains:["self",o,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:t,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,r]}]}}},function(e,t,n){"use strict";var r=n(13);e.exports=function(e,t,n){function i(e,t){return m&&(m=clearTimeout(m)),g=0,n.call(e,t)}function o(e){c=e.clientX,u=e.clientY}function a(e,n){if(m&&(m=clearTimeout(m)),Math.abs(d-c)+Math.abs(f-u)1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",r=e.nodeName;if("BODY"===r||"HTML"===r){var i=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||i)[n]}return e[n]}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=f(t,"top"),i=f(t,"left"),o=n?-1:1;return e.top+=r*o,e.bottom+=r*o,e.left+=i*o,e.right+=i*o,e}function g(e,t){var n="x"===t?"Left":"Top",r="Left"===n?"Right":"Bottom";return+e["border"+n+"Width"].split("px")[0]+ +e["border"+r+"Width"].split("px")[0]}function m(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ge()?n["offset"+e]+r["margin"+("Height"===e?"Top":"Left")]+r["margin"+("Height"===e?"Bottom":"Right")]:0)}function h(){var e=window.document.body,t=window.document.documentElement,n=ge()&&window.getComputedStyle(t);return{height:m("Height",e,t,n),width:m("Width",e,t,n)}}function b(e){return Ee({},e,{right:e.left+e.width,bottom:e.top+e.height})}function E(e){var t={};if(ge())try{t=e.getBoundingClientRect();var n=f(e,"top"),r=f(e,"left");t.top+=n,t.left+=r,t.bottom+=n,t.right+=r}catch(e){}else t=e.getBoundingClientRect();var i={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},a="HTML"===e.nodeName?h():{},s=a.width||e.clientWidth||i.right-i.left,l=a.height||e.clientHeight||i.bottom-i.top,c=e.offsetWidth-s,u=e.offsetHeight-l;if(c||u){var d=o(e);c-=g(d,"x"),u-=g(d,"y"),i.width-=c,i.height-=u}return b(i)}function v(e,t){var n=ge(),r="HTML"===t.nodeName,i=E(e),a=E(t),l=s(e),c=o(t),u=+c.borderTopWidth.split("px")[0],d=+c.borderLeftWidth.split("px")[0],f=b({top:i.top-a.top-u,left:i.left-a.left-d,width:i.width,height:i.height});if(f.marginTop=0,f.marginLeft=0,!n&&r){var g=+c.marginTop.split("px")[0],m=+c.marginLeft.split("px")[0];f.top-=u-g,f.bottom-=u-g,f.left-=d-m,f.right-=d-m,f.marginTop=g,f.marginLeft=m}return(n?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=p(f,t)),f}function _(e){var t=e.ownerDocument.documentElement,n=v(e,t),r=Math.max(t.clientWidth,window.innerWidth||0),i=Math.max(t.clientHeight,window.innerHeight||0),o=f(t),a=f(t,"left");return b({top:o-n.top+n.marginTop,left:a-n.left+n.marginLeft,width:r,height:i})}function w(e){var t=e.nodeName;return"BODY"!==t&&"HTML"!==t&&("fixed"===o(e,"position")||w(a(e)))}function y(e,t,n,r){var i={top:0,left:0},o=d(e,t);if("viewport"===r)i=_(o);else{var l=void 0;"scrollParent"===r?(l=s(a(e)),"BODY"===l.nodeName&&(l=e.ownerDocument.documentElement)):l="window"===r?e.ownerDocument.documentElement:r;var c=v(l,o);if("HTML"!==l.nodeName||w(o))i=c;else{var u=h(),f=u.height,p=u.width;i.top+=c.top-c.marginTop,i.bottom=f+c.top,i.left+=c.left-c.marginLeft,i.right=p+c.left}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function N(e){return e.width*e.height}function O(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=y(n,r,o,i),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(e){return Ee({key:e},s[e],{area:N(s[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,r=e.height;return t>=n.clientWidth&&r>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return u+(d?"-"+d:"")}function M(e,t,n){return v(n,d(t,n))}function x(e){var t=window.getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),r=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+r,height:e.offsetHeight+n}}function C(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function T(e,t,n){n=n.split("-")[0];var r=x(e),i={width:r.width,height:r.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return i[a]=t[a]+t[l]/2-r[l]/2,i[s]=n===s?t[s]-r[c]:t[C(s)],i}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var r=L(e,function(e){return e[t]===n});return e.indexOf(r)}function S(e,t,n){return(void 0===n?e:e.slice(0,R(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&i(n)&&(t.offsets.popper=b(t.offsets.popper),t.offsets.reference=b(t.offsets.reference),t=n(t,e))}),t}function A(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=M(this.state,this.popper,this.reference),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=T(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position="absolute",e=S(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function D(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;ra[p]&&(e.offsets.popper[d]+=s[d]+g-a[p]);var m=s[d]+s[c]/2-g/2,h=o(e.instance.popper,"margin"+u).replace("px",""),E=m-b(e.offsets.popper)[d]-h;return E=Math.max(Math.min(a[c]-g,E),0),e.arrowElement=n,e.offsets.arrow={},e.offsets.arrow[d]=Math.round(E),e.offsets.arrow[f]="",e}function Q(e){return"end"===e?"start":"start"===e?"end":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=_e.indexOf(e),r=_e.slice(n+1).concat(_e.slice(0,n));return t?r.reverse():r}function X(e,t){if(D(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),r=e.placement.split("-")[0],i=C(r),o=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case we.FLIP:a=[r,i];break;case we.CLOCKWISE:a=Y(r);break;case we.COUNTERCLOCKWISE:a=Y(r,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(r!==s||a.length===l+1)return e;r=e.placement.split("-")[0],i=C(r);var c=e.offsets.popper,u=e.offsets.reference,d=Math.floor,f="left"===r&&d(c.right)>d(u.left)||"right"===r&&d(c.left)d(u.top)||"bottom"===r&&d(c.top)d(n.right),m=d(c.top)d(n.bottom),b="left"===r&&p||"right"===r&&g||"top"===r&&m||"bottom"===r&&h,E=-1!==["top","bottom"].indexOf(r),v=!!t.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&h);(f||b||v)&&(e.flipped=!0,(f||b)&&(r=a[l+1]),v&&(o=Q(o)),e.placement=r+(o?"-"+o:""),e.offsets.popper=Ee({},e.offsets.popper,T(e.instance.popper,e.offsets.reference,e.placement)),e=S(e.instance.modifiers,e,"flip"))}),e}function J(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),s=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[s]o(r[s])&&(e.offsets.popper[l]=o(r[s])),e}function ee(e,t,n,r){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+i[1],a=i[2];if(!o)return e;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}return b(s)[t]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,r){var i=[0,0],o=-1!==["right","left"].indexOf(r),a=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=a.indexOf(L(a,function(e){return-1!==e.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return c=c.map(function(e,r){var i=(1===r?!o:o)?"height":"width",a=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return ee(e,i,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,r){K(n)&&(i[t]+=n*("-"===e[r-1]?-1:1))})}),i}function ne(e,t){var n=t.offset,r=e.placement,i=e.offsets,o=i.popper,a=i.reference,s=r.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:te(n,o,a,s),"left"===s?(o.top+=l[0],o.left-=l[1]):"right"===s?(o.top+=l[0],o.left+=l[1]):"top"===s?(o.left+=l[0],o.top-=l[1]):"bottom"===s&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function re(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var r=y(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=r;var i=t.priority,o=e.offsets.popper,a={primary:function(e){var n=o[e];return o[e]r[e]&&!t.escapeWithReference&&(i=Math.min(o[n],r[e]-("right"===e?o.width:o.height))),be({},n,i)}};return i.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";o=Ee({},o,a[t](e))}),e.offsets.popper=o,e}function ie(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var i=e.offsets,o=i.reference,a=i.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",c=s?"width":"height",u={start:be({},l,o[l]),end:be({},l,o[l]+o[c]-a[c])};e.offsets.popper=Ee({},a,u[r])}return e}function oe(e){if(!V(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right=0){ce=1;break}var de=se&&window.Promise,fe=de?n:r,pe=void 0,ge=function(){return void 0===pe&&(pe=-1!==navigator.appVersion.indexOf("MSIE 10")),pe},me=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},he=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=fe(this.update.bind(this)),this.options=Ee({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ee({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){r.options.modifiers[t]=Ee({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return Ee({name:e},r.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&i(e.onLoad)&&e.onLoad(r.reference,r.popper,r.options,e,r.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return he(e,[{key:"update",value:function(){return A.call(this)}},{key:"destroy",value:function(){return B.call(this)}},{key:"enableEventListeners",value:function(){return F.call(this)}},{key:"disableEventListeners",value:function(){return j.call(this)}}]),e}();Oe.Utils=("undefined"!=typeof window?window:e).PopperUtils,Oe.placements=ve,Oe.Defaults=Ne,t.default=Oe}.call(t,n(0))},function(e,t,n){(function(n){var r,i,o;!function(n,a){"use strict";i=[],r=a,void 0!==(o="function"==typeof r?r.apply(t,i):r)&&(e.exports=o)}(0,function(){"use strict";function e(e,a){if(!r(e)||!a.reProcess&&e.getAttribute("textFitted"))return!1;a.reProcess||e.setAttribute("textFitted",1);var s,l,c,u,d,f,p;if(c=e.innerHTML,u=n(e),l=t(e),!u||!a.widthOnly&&!l)throw a.widthOnly?new Error("Set a static width on the target element "+e.outerHTML+" before using textFit!"):new Error("Set a static height and width on the target element "+e.outerHTML+" before using textFit!");-1===c.indexOf("textFitted")?(s=document.createElement("span"),s.className="textFitted",s.style.display="inline-block",s.innerHTML=c,e.innerHTML="",e.appendChild(s)):(s=e.querySelector("span.textFitted"),i(s,"textFitAlignVert")&&(s.className=s.className.replace("textFitAlignVert",""),s.style.height="",e.className.replace("textFitAlignVertFlex",""))),a.alignHoriz&&(e.style["text-align"]="center",s.style["text-align"]="center");var g=a.multiLine;for(a.detectMultiLine&&!g&&s.scrollHeight>=2*parseInt(window.getComputedStyle(s)["font-size"],10)&&(g=!0),g||(e.style["white-space"]="nowrap"),d=a.minFontSize+1,p=a.maxFontSize+1;d<=p;)f=parseInt((d+p)/2,10),s.style.fontSize=f+"px",s.scrollWidth<=u&&(a.widthOnly||s.scrollHeight<=l)?d=f+1:p=f-1;if(s.style.fontSize=f-1+"px",a.alignVert){o();var m=s.scrollHeight;"static"===window.getComputedStyle(e).position&&(e.style.position="relative"),i(s,"textFitAlignVert")||(s.className=s.className+" textFitAlignVert"),s.style.height=m+"px",a.alignVertWithFlexbox&&!i(e,"textFitAlignVertFlex")&&(e.className=e.className+" textFitAlignVertFlex")}}function t(e){var t=window.getComputedStyle(e,null);return e.clientHeight-parseInt(t.getPropertyValue("padding-top"),10)-parseInt(t.getPropertyValue("padding-bottom"),10)}function n(e){var t=window.getComputedStyle(e,null);return e.clientWidth-parseInt(t.getPropertyValue("padding-left"),10)-parseInt(t.getPropertyValue("padding-right"),10)}function r(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function i(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}function o(){if(!document.getElementById("textFitStyleSheet")){var e=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join(""),t=document.createElement("style");t.type="text/css",t.id="textFitStyleSheet",t.innerHTML=e,document.body.appendChild(t)}}var a={alignVert:!1,alignHoriz:!1,multiLine:!1,detectMultiLine:!0,minFontSize:6,maxFontSize:80,reProcess:!0,widthOnly:!1,alignVertWithFlexbox:!1};return function(t,n){n||(n={});var r={};for(var i in a)n.hasOwnProperty(i)?r[i]=n[i]:r[i]=a[i];"function"==typeof t.toArray&&(t=t.toArray());var o=Object.prototype.toString.call(t);"[object Array]"!==o&&"[object NodeList]"!==o&&"[object HTMLCollection]"!==o&&(t=[t]);for(var s=0;s>>>>>> refactor: Improvements diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index d692606..9820780 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1,5 +1,9 @@ <<<<<<< HEAD +<<<<<<< HEAD /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} ======= /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} >>>>>>> feat: Minor fixes (#73) +======= +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}.status-block__message form button{margin:0;padding:0;background:none;color:#5c9fef;line-height:1.5em;min-width:0;font-size:14px;text-decoration:underline;height:auto}.status-block__message form button:hover{color:#3c80cf}.status-block__readmore{display:none;padding-top:1.5em}.status-block__readmore--active{display:block}.status-block__readmore-trigger{text-decoration:underline}.status-block__readmore-trigger:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='10' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%233c80cf' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.status-block__readmore-trigger.active:after{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.status-block__readmore-trigger:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='10' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%235c9fef' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content ul{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0;margin:0;margin-top:2em}.modal__content ul li{width:50px;height:100px;margin:0 10px;text-align:center}.modal__content ul li img{width:50px;height:50px}.modal__content ul li img.inactive{filter:url('data:image/svg+xml;charset=utf-8,#filter');-webkit-filter:grayscale(1);filter:grayscale(1)}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-highlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-highlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-highlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-highlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-highlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-highlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-highlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-highlighted-course__description-wrapper p{margin:0}.module-highlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-highlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-copy a{color:#5c9fef}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;text-align:center;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-highlighted-course__title{font-size:3.25em}.module-highlighted-course__description-wrapper{font-size:1.25em}} +>>>>>>> refactor: Improvements diff --git a/routes/landingPage.js b/routes/landingPage.js index d0c8fca..3ba213c 100644 --- a/routes/landingPage.js +++ b/routes/landingPage.js @@ -31,6 +31,5 @@ module.exports.getLandingPage = async (request, response, next) => { if (shouldAttachEntryState(response)) { landingPage = await attachEntryState(landingPage) } - console.log(landingPage.fields.contentModules[0].fields.course.fields.image) response.render('landingPage', { title: pathname, landingPage }) } diff --git a/routes/settings.js b/routes/settings.js index e89fd30..6066700 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -59,7 +59,14 @@ module.exports.getSettings = async (request, response, next) => { module.exports.postSettings = async (request, response, next) => { const currentLocale = response.locals.currentLocale let errorList = [] - const { spaceId, deliveryToken, previewToken, editorialFeatures, qs } = request.body + let { spaceId, deliveryToken, previewToken, editorialFeatures } = request.body + + if (request.query.reset) { + spaceId = process.env.CONTENTFUL_SPACE_ID + deliveryToken = process.env.CONTENTFUL_DELIVERY_TOKEN + previewToken = process.env.CONTENTFUL_PREVIEW_TOKEN + } + const settings = { spaceId, deliveryToken, @@ -169,7 +176,6 @@ module.exports.postSettings = async (request, response, next) => { settings, errors, hasErrors: errorList.length > 0, - success: errorList.length === 0, - queryString: qs + success: errorList.length === 0 }) } diff --git a/views/layout.pug b/views/layout.pug index 98683d4..67dff1b 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -77,7 +77,7 @@ html .header__lower.layout-centered .header__logo a.header__logo-link(href=`/${queryString}`) - img(src='/images/logo-node.svg' alt=translate('logoAlt', currentLocale.code)) + img(src='/images/logo-the-example-app-nodejs.svg' alt=translate('logoAlt', currentLocale.code)) nav.header__navigation.main-navigation ul li @@ -126,24 +126,69 @@ html a(href='https://github.com/contentful' target='_blank' rel='noopener') svg use(xlink:href='/icons/icons.svg#github') - section.modal#about-this-modal - .modal__overlay.close - .modal__wrapper - h1.modal__title #{translate('modalTitle', currentLocale.code)} - .modal__content - p #{translate('modalIntro', currentLocale.code)}  - a(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') GitHub - | . - p - | #{translate('modalSpaceIntro', currentLocale.code)}  - a(href='https://github.com/contentful/content-models/blob/master/the-example-app/README.md ' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) - | . - .modal__cta-wrapper - a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} - .modal__close-wrapper - a(href='#').modal__close-button.close - svg - use(xlink:href='/icons/icons.svg#cross') +section.modal#about-this-modal + .modal__overlay.close + .modal__wrapper + h1.modal__title= translate("modalTitleDotnet", currentLocale.code) + .modal__content + p + | #{translate("modalIntro", currentLocale.code)}  + a(href="https://github.com/contentful/the-example-app.nodejs" target="_blank" rel="noopener") Github + | . + p + | #{translate("modalSpaceIntro", currentLocale.code)}  + a(href="https://github.com/contentful/content-models/blob/master/the-example-app/README.md " target="_blank" rel="noopener") #{translate("modalSpaceLinkLabel", currentLocale.code)} + | . + p= translate("modalPlatforms", currentLocale.code) + ul + li + img(src='/images/nodejs-icon.svg') + br + a(href="https://the-example-app-nodejs.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.nodejs" rel="noopener" target="_blank") GitHub + li + img(src='/images/dotnet.svg') + br + a(href="https://the-example-app-csharp.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.csharp" rel="noopener" target="_blank") GitHub + li + img(src='/images/ruby.svg') + br + a(href="https://the-example-app-rb.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.rb" rel="noopener" target="_blank") GitHub + li + img(src='/images/php.svg') + br + a(href="https://the-example-app-php.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.php" rel="noopener" target="_blank") GitHub + li + img(src='/images/python.svg') + br + a(href="https://the-example-app-py.herokuapp.com/" rel="noopener" target="_blank")= translate("hostedLabel", currentLocale.code) + br + a(href="https://github.com/contentful/the-example-app.py" rel="noopener" target="_blank") GitHub + li + img.inactive(src='/images/swift.svg') + br + = translate("comingSoonLabel", currentLocale.code) + li + img.inactive(src='/images/java.svg') + br + = translate("comingSoonLabel", currentLocale.code) + li + img.inactive(src='/images/android-icon.svg') + br + = translate("comingSoonLabel", currentLocale.code) + .modal__cta-wrapper + a.modal__cta.close(href="#")= translate("modalCTALabel", currentLocale.code) + .modal__close-wrapper + a.modal__close-button.close(href="#") + svg + use(xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/icons/icons.svg#cross") script(src='/scripts/index.js') diff --git a/views/settings.pug b/views/settings.pug index 9f713d6..c0783ed 100644 --- a/views/settings.pug +++ b/views/settings.pug @@ -35,11 +35,41 @@ block content svg.status-block__icon.status-block__icon--info use(xlink:href='/icons/icons.svg#info') .status-block__content - .status-block__message #{translate('connectedToSpaceLabel', currentLocale.code)} “#{space.name}” + .status-block__message + if !helpers.isCustomCredentials(settings) + p + em #{translate('usingServerCredentialsLabel', currentLocale.code)} + p + strong #{translate('connectedToSpaceLabel', currentLocale.code)}: + br + span #{space.name} (#{settings.spaceId}) + p + strong #{translate('credentialSourceLabel', currentLocale.code)}: + br + span #{translate('loadedFromLocalFileLabel', currentLocale.code)} + a(href="https://github.com/contentful/the-example-app.nodejs/blob/master/variables.env" target="_blank" rel="noopener") variable.env + p + em #{translate('overrideConfigLabel', currentLocale.code)} + else + p + em #{translate('usingSessionCredentialsLabel', currentLocale.code)} + p + strong #{translate('connectedToSpaceLabel', currentLocale.code)}: + br + span #{space.name} (#{settings.spaceId}) - form(action=`/settings` method="POST" class="form") + form(action='/settings?reset=true' method='POST') + p + strong #{translate('applicationCredentialsLabel', currentLocale.code)}: + br + button(type="submit") #{translate('resetCredentialsLabel', currentLocale.code)} + br + a(href=`${baseUrl}/?space_id=${settings.spaceId}&preview_token=${settings.previewToken}&delivery_token=${settings.deliveryToken}&api=${currentApi.id}${settings.editorialFeatures ? '&enable_editorial_features' : ''}` class="status-block__sharelink") #{translate('copyLinkLabel', currentLocale.code)} + p + em #{translate('overrideConfigLabel', currentLocale.code)} + + form(action=`/settings${queryString}` method="POST" class="form") .form-item - input(type="hidden" name="qs" value=queryString) label(for="input-space-id") #{translate('spaceIdLabel', currentLocale.code)} input(type="text" name="spaceId" id="input-space-id" value=settings.spaceId) if 'spaceId' in errors From a5c0761405cec3c0ec2758670ff907ffea160024 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 13 Dec 2017 15:48:23 +0100 Subject: [PATCH 27/35] feat: Add new diffing --- .gitignore | 1 + lib/entry-state.js | 26 ++++++++++++++++++++++++-- services/contentful.js | 5 +++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b29653e..96bd2a3 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,4 @@ cypress # e2e test directory test/e2e +.vscode diff --git a/lib/entry-state.js b/lib/entry-state.js index 1d81a1c..b825988 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -1,8 +1,9 @@ const { getEntry } = require('./../services/contentful') +const { isObject, isArray } = require('lodash') async function getPublishedEntry (entry) { try { - return await getEntry(entry.sys.id) + return await getEntry(entry.sys.id, entry.sys.contentType.sys.id) } catch (err) { return null } @@ -12,11 +13,32 @@ module.exports = async function attachEntryState (entry) { const publishedEntry = await getPublishedEntry(entry) entry.draft = false entry.pendingChanges = false - if (!publishedEntry) { entry.draft = true } + const entriesToCompare = Object.keys(entry.fields).map((key) => { + const field = entry.fields[key] + if (isObject(field)) { + return [entry.fields[key], publishedEntry.fields[key]] + } + }).filter(Boolean) + entriesToCompare.forEach((item) => { + const originalItem = item[0] + const publishedItem = item[1] + if (isArray(originalItem)) { + originalItem.forEach((innerItem, index) => { + if (!isArray(innerItem) && isObject(innerItem) && (!innerItem.fields || originalItem[index].sys.updatedAt !== publishedItem[index].sys.updatedAt)) { + entry.pendingChanges = true + return + } + }) + } else if (isObject(item[0]) && (!item[0].fields || item[0].sys.updatedAt !== item[1].sys.updatedAt)) { + entry.pendingChanges = true + return + } + }) + if (entry && publishedEntry && (entry.sys.updatedAt !== publishedEntry.sys.updatedAt)) { entry.pendingChanges = true } diff --git a/services/contentful.js b/services/contentful.js index 68c47ca..500c9f5 100644 --- a/services/contentful.js +++ b/services/contentful.js @@ -52,8 +52,9 @@ module.exports.getSpace = assert((api = `cda`) => { * @returns {Object} */ -module.exports.getEntry = assert((entryId, api = `cda`) => { - return getClient(api).getEntry(entryId) +module.exports.getEntry = assert((entryId, contentType, api = `cda`) => { + return getClient(api).getEntries({content_type: contentType, 'sys.id': entryId}) + .then((response) => response.items[0]) }, 'Entry') /** From 50da1968e9b144d1c06df1e0574ad1deb2e13200 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Wed, 13 Dec 2017 16:04:51 +0100 Subject: [PATCH 28/35] chore: Add comments --- lib/entry-state.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/entry-state.js b/lib/entry-state.js index b825988..945c6c9 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -16,16 +16,18 @@ module.exports = async function attachEntryState (entry) { if (!publishedEntry) { entry.draft = true } - + // We group fields of type link (i.e. Only objects/array) from the same entry in preview and delivery const entriesToCompare = Object.keys(entry.fields).map((key) => { const field = entry.fields[key] if (isObject(field)) { return [entry.fields[key], publishedEntry.fields[key]] } }).filter(Boolean) + entriesToCompare.forEach((item) => { const originalItem = item[0] const publishedItem = item[1] + // If the field is an array of reference we need to check its item if they have pending changes if (isArray(originalItem)) { originalItem.forEach((innerItem, index) => { if (!isArray(innerItem) && isObject(innerItem) && (!innerItem.fields || originalItem[index].sys.updatedAt !== publishedItem[index].sys.updatedAt)) { @@ -33,12 +35,13 @@ module.exports = async function attachEntryState (entry) { return } }) + // If the field is a single reference we just check if it has pending changes } else if (isObject(item[0]) && (!item[0].fields || item[0].sys.updatedAt !== item[1].sys.updatedAt)) { entry.pendingChanges = true return } }) - + // We check if the root element has pending changes if (entry && publishedEntry && (entry.sys.updatedAt !== publishedEntry.sys.updatedAt)) { entry.pendingChanges = true } From e3509ccc5cc41ce413e5270c41df8937e6a664c0 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 14 Dec 2017 11:03:02 +0100 Subject: [PATCH 29/35] chore: return when the paren entry is draft --- lib/entry-state.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/entry-state.js b/lib/entry-state.js index 945c6c9..be252e2 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -15,6 +15,7 @@ module.exports = async function attachEntryState (entry) { entry.pendingChanges = false if (!publishedEntry) { entry.draft = true + return } // We group fields of type link (i.e. Only objects/array) from the same entry in preview and delivery const entriesToCompare = Object.keys(entry.fields).map((key) => { From 1d8bf9c3dd9e5baf7a5b6caf9872e0bbdc74a083 Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 14 Dec 2017 11:25:50 +0100 Subject: [PATCH 30/35] fix: strip milliseconds from date --- lib/entry-state.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/entry-state.js b/lib/entry-state.js index be252e2..a3f8501 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -37,15 +37,21 @@ module.exports = async function attachEntryState (entry) { } }) // If the field is a single reference we just check if it has pending changes - } else if (isObject(item[0]) && (!item[0].fields || item[0].sys.updatedAt !== item[1].sys.updatedAt)) { + } else if (isObject(item[0]) && (!item[0].fields || !isDateEqual(item[0].sys.updatedAt !== item[1].sys.updatedAt))) { entry.pendingChanges = true return } }) // We check if the root element has pending changes - if (entry && publishedEntry && (entry.sys.updatedAt !== publishedEntry.sys.updatedAt)) { + if (entry && publishedEntry && (!isDateEqual(entry.sys.updatedAt !== publishedEntry.sys.updatedAt))) { entry.pendingChanges = true } return entry } + +function isDateEqual (lhs, rhs) { + const lhsDate = new Date(lhs) + const rhsDate = new Date(rhs) + return lhsDate.setMilliseconds(0) === rhsDate.setMilliseconds(0) +} From c7860317170651150dc5145c917d4a804b3d121a Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 14 Dec 2017 11:31:48 +0100 Subject: [PATCH 31/35] refactor: Refactor draft check --- lib/entry-state.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/entry-state.js b/lib/entry-state.js index a3f8501..d8cf844 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -31,13 +31,13 @@ module.exports = async function attachEntryState (entry) { // If the field is an array of reference we need to check its item if they have pending changes if (isArray(originalItem)) { originalItem.forEach((innerItem, index) => { - if (!isArray(innerItem) && isObject(innerItem) && (!innerItem.fields || originalItem[index].sys.updatedAt !== publishedItem[index].sys.updatedAt)) { + if (!isArray(innerItem) && isLinkDraft(innerItem, publishedItem[index])) { entry.pendingChanges = true return } }) // If the field is a single reference we just check if it has pending changes - } else if (isObject(item[0]) && (!item[0].fields || !isDateEqual(item[0].sys.updatedAt !== item[1].sys.updatedAt))) { + } else if (isLinkDraft(item[0], item[1])) { entry.pendingChanges = true return } @@ -50,8 +50,13 @@ module.exports = async function attachEntryState (entry) { return entry } +function isLinkDraft (previewLink, deliveryLink) { + return isObject(previewLink) && (!previewLink.fields || !isDateEqual(previewLink.sys.updatedAt !== previewLink.sys.updatedAt)) +} + function isDateEqual (lhs, rhs) { const lhsDate = new Date(lhs) const rhsDate = new Date(rhs) return lhsDate.setMilliseconds(0) === rhsDate.setMilliseconds(0) } + From 9e8796a7ba7242a11d8adaa9be2d577fd04a708b Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 14 Dec 2017 12:00:06 +0100 Subject: [PATCH 32/35] chore: Fix common setup section --- README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/README.md b/README.md index 31b8e64..3562f60 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,6 @@ You can see a hosted version of `The node.js example app` on Date: Thu, 14 Dec 2017 12:46:28 +0100 Subject: [PATCH 34/35] fix: Add edit in web app link for course list --- views/courses.pug | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/views/courses.pug b/views/courses.pug index cfb44ca..f9a612e 100644 --- a/views/courses.pug +++ b/views/courses.pug @@ -21,6 +21,19 @@ block content section.layout-sidebar__content .courses h1= title + if settings.editorialFeatures + .editorial-features + .editorial-features__item + a.editorial-features__text( + href=`https://app.contentful.com/spaces/${settings.spaceId}/entries/?contentTypeId=course` + target='_blank' + rel='noopener' + ) #{translate('editInTheWebAppLabel', currentLocale.code)} + .editorial-features__hint-wrapper + svg.editorial-features__hint-icon + use(xlink:href='/icons/icons.svg#info') + .editorial-features__hint-message #{translate('editorialFeaturesHint', currentLocale.code)} + .grid-list each course in courses .grid-list__item From 4ceb2697febd1f439da1fde21604ae8d9c7405cb Mon Sep 17 00:00:00 2001 From: Khaled Garbaya Date: Thu, 14 Dec 2017 13:55:51 +0100 Subject: [PATCH 35/35] fix: Fix Mario --- lib/entry-state.js | 11 +++++++---- routes/courses.js | 1 - 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/entry-state.js b/lib/entry-state.js index d8cf844..35f72bd 100644 --- a/lib/entry-state.js +++ b/lib/entry-state.js @@ -15,7 +15,7 @@ module.exports = async function attachEntryState (entry) { entry.pendingChanges = false if (!publishedEntry) { entry.draft = true - return + return entry } // We group fields of type link (i.e. Only objects/array) from the same entry in preview and delivery const entriesToCompare = Object.keys(entry.fields).map((key) => { @@ -39,11 +39,11 @@ module.exports = async function attachEntryState (entry) { // If the field is a single reference we just check if it has pending changes } else if (isLinkDraft(item[0], item[1])) { entry.pendingChanges = true - return + return entry } }) // We check if the root element has pending changes - if (entry && publishedEntry && (!isDateEqual(entry.sys.updatedAt !== publishedEntry.sys.updatedAt))) { + if (entry && publishedEntry && (entry.sys.updatedAt !== publishedEntry.sys.updatedAt)) { entry.pendingChanges = true } @@ -51,7 +51,10 @@ module.exports = async function attachEntryState (entry) { } function isLinkDraft (previewLink, deliveryLink) { - return isObject(previewLink) && (!previewLink.fields || !isDateEqual(previewLink.sys.updatedAt !== previewLink.sys.updatedAt)) + if (isObject(previewLink)) { + return !previewLink.fields || !isDateEqual(previewLink.sys.updatedAt, previewLink.sys.updatedAt) + } + return false } function isDateEqual (lhs, rhs) { diff --git a/routes/courses.js b/routes/courses.js index 37dd244..e66c6c0 100644 --- a/routes/courses.js +++ b/routes/courses.js @@ -29,7 +29,6 @@ module.exports.getCourses = async (request, response, next) => { let courses = [] let categories = [] courses = await getCourses(response.locals.currentLocale.code, response.locals.currentApi.id) - // Attach entry state flags when using preview API if (shouldAttachEntryState(response)) { courses = await Promise.all(courses.map(attachEntryState))