!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}((function(e){"use strict";e.defineMode("elm",(function(){function e(e,t,r){return t(r),r(e,t)}var t=/[a-z]/,r=/[A-Z]/,n=/[a-zA-Z0-9_]/,i=/[0-9]/,o=/[0-9A-Fa-f]/,f=/[-&*+.\\/<>=?^|:]/,u=/[(),[\]{}]/,a=/[ \v\f]/;function s(){return function(s,x){if(s.eatWhile(a))return null;var h=s.next();if(u.test(h))return"{"===h&&s.eat("-")?e(s,x,l(1)):"["===h&&s.match("glsl|")?e(s,x,p):"builtin";if("'"===h)return e(s,x,m);if('"'===h)return s.eat('"')?s.eat('"')?e(s,x,c):"string":e(s,x,d);if(r.test(h))return s.eatWhile(n),"variable-2";if(t.test(h)){var k=1===s.pos;return s.eatWhile(n),k?"def":"variable"}if(i.test(h)){if("0"===h){if(s.eat(/[xX]/))return s.eatWhile(o),"number"}else s.eatWhile(i);return s.eat(".")&&s.eatWhile(i),s.eat(/[eE]/)&&(s.eat(/[-+]/),s.eatWhile(i)),"number"}return f.test(h)?"-"===h&&s.eat("-")?(s.skipToEnd(),"comment"):(s.eatWhile(f),"keyword"):"_"===h?"keyword":"error"}}function l(e){return 0==e?s():function(t,r){for(;!t.eol();){var n=t.next();if("{"==n&&t.eat("-"))++e;else if("-"==n&&t.eat("}")&&0===--e)return r(s()),"comment"}return r(l(e)),"comment"}}function c(e,t){for(;!e.eol();){if('"'===e.next()&&e.eat('"')&&e.eat('"'))return t(s()),"string"}return"string"}function d(e,t){for(;e.skipTo('\\"');)e.next(),e.next();return e.skipTo('"')?(e.next(),t(s()),"string"):(e.skipToEnd(),t(s()),"error")}function m(e,t){for(;e.skipTo("\\'");)e.next(),e.next();return e.skipTo("'")?(e.next(),t(s()),"string"):(e.skipToEnd(),t(s()),"error")}function p(e,t){for(;!e.eol();){if("|"===e.next()&&e.eat("]"))return t(s()),"string"}return"string"}var x={case:1,of:1,as:1,if:1,then:1,else:1,let:1,in:1,type:1,alias:1,module:1,where:1,import:1,exposing:1,port:1};return{startState:function(){return{f:s()}},copyState:function(e){return{f:e.f}},token:function(e,t){var r=t.f(e,(function(e){t.f=e})),n=e.current();return x.hasOwnProperty(n)?"keyword":r}}})),e.defineMIME("text/x-elm","elm")}));