roy-lang 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "rails", "~> 3.1"
6
+
7
+ gem "execjs", ">= 1.3.2"
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Tim McGilchrist
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ Ruby Roy
2
+ ==================
3
+
4
+ Ruby Roy is a bridge to the offical Roy compiler.
5
+
6
+ Roy.compile File.read("script.roy")
7
+
8
+ Installation
9
+ ------------------
10
+
11
+ gem install roy-lang
12
+
13
+ Dependencies
14
+ ------------------
15
+
16
+ This library includes a copy of the Roy source code, updated as each offical
17
+ version of Roy is released.
18
+
19
+
20
+ ### JSON
21
+
22
+ The `json` library is also required but is not explicitly stated as a
23
+ gem dependency. If you're on Ruby 1.8 you'll need to install the
24
+ `json` or `json_pure` gem. On Ruby 1.9, `json` is included in the
25
+ standard library.
26
+
27
+ ### ExecJS
28
+
29
+ The [ExecJS](https://github.com/sstephenson/execjs) library is used to automatically choose the best JavaScript engine for your platform. Check out its [README](https://github.com/sstephenson/execjs/blob/master/README.md) for a complete list of supported engines.
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require 'rake/testtask'
6
+
7
+ task :default => :test
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.warning = true
11
+ end
@@ -0,0 +1,192 @@
1
+ var roy={};
2
+ (function(){function z(a,b,f){if(a===b)return 0!==a||1/a==1/b;if(null==a)return a===b;var x=typeof a;if(x!=typeof b||!a!=!b)return!1;if(c.isNaN(a))return c.isNaN(b);var d=c.isString(a),h=c.isString(b);if(d||h)return d&&h&&""+a==""+b;d=c.isNumber(a);h=c.isNumber(b);if(d||h)return d&&h&&+a==+b;d=c.isBoolean(a);h=c.isBoolean(b);if(d||h)return d&&h&&+a==+b;d=c.isDate(a);h=c.isDate(b);if(d||h)return d&&h&&a.getTime()==b.getTime();d=c.isRegExp(a);h=c.isRegExp(b);if(d||h)return d&&h&&a.source==b.source&&
3
+ a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase;if("object"!=x)return!1;a._chain&&(a=a._wrapped);b._chain&&(b=b._wrapped);if(c.isFunction(a.isEqual))return a.isEqual(b);for(x=f.length;x--;)if(f[x]==a)return!0;f.push(a);x=0;d=!0;if(a.length===+a.length||b.length===+b.length){if(x=a.length,d=x==b.length)for(;x--&&(d=x in a==x in b&&z(a[x],b[x],f)););}else{for(var i in a)if(e.call(a,i)&&(x++,!(d=e.call(b,i)&&z(a[i],b[i],f))))break;if(d){for(i in b)if(e.call(b,i)&&!x--)break;
4
+ d=!x}}f.pop();return d}var B=this,y=B._,n={},j=Array.prototype,d=Object.prototype,a=j.slice,i=j.unshift,l=d.toString,e=d.hasOwnProperty,g=j.forEach,b=j.map,s=j.reduce,w=j.reduceRight,v=j.filter,k=j.every,q=j.some,r=j.indexOf,m=j.lastIndexOf,d=Array.isArray,p=Object.keys,f=Function.prototype.bind,c=function(a){return new A(a)};"undefined"!==typeof module&&module.exports?(module.exports=c,c._=c):B._=c;c.VERSION="1.2.0";var t=c.each=c.forEach=function(a,b,c){if(a!=null)if(g&&a.forEach===g)a.forEach(b,
5
+ c);else if(a.length===+a.length)for(var f=0,d=a.length;f<d;f++){if(f in a&&b.call(c,a[f],f,a)===n)break}else for(f in a)if(e.call(a,f)&&b.call(c,a[f],f,a)===n)break};c.map=function(a,c,f){var d=[];if(a==null)return d;if(b&&a.map===b)return a.map(c,f);t(a,function(a,b,u){d[d.length]=c.call(f,a,b,u)});return d};c.reduce=c.foldl=c.inject=function(a,b,f,d){var e=f!==void 0;a==null&&(a=[]);if(s&&a.reduce===s){d&&(b=c.bind(b,d));return e?a.reduce(b,f):a.reduce(b)}t(a,function(a,u,c){if(e)f=b.call(d,f,a,
6
+ u,c);else{f=a;e=true}});if(!e)throw new TypeError("Reduce of empty array with no initial value");return f};c.reduceRight=c.foldr=function(a,b,f,d){a==null&&(a=[]);if(w&&a.reduceRight===w){d&&(b=c.bind(b,d));return f!==void 0?a.reduceRight(b,f):a.reduceRight(b)}a=(c.isArray(a)?a.slice():c.toArray(a)).reverse();return c.reduce(a,b,f,d)};c.find=c.detect=function(a,b,c){var f;o(a,function(a,u,d){if(b.call(c,a,u,d)){f=a;return true}});return f};c.filter=c.select=function(a,b,c){var f=[];if(a==null)return f;
7
+ if(v&&a.filter===v)return a.filter(b,c);t(a,function(a,u,d){b.call(c,a,u,d)&&(f[f.length]=a)});return f};c.reject=function(a,b,c){var f=[];if(a==null)return f;t(a,function(a,u,d){b.call(c,a,u,d)||(f[f.length]=a)});return f};c.every=c.all=function(a,b,c){var f=true;if(a==null)return f;if(k&&a.every===k)return a.every(b,c);t(a,function(a,u,d){if(!(f=f&&b.call(c,a,u,d)))return n});return f};var o=c.some=c.any=function(a,b,f){var b=b||c.identity,d=false;if(a==null)return d;if(q&&a.some===q)return a.some(b,
8
+ f);t(a,function(a,u,c){if(d=d|b.call(f,a,u,c))return n});return!!d};c.include=c.contains=function(a,b){var c=false;if(a==null)return c;if(r&&a.indexOf===r)return a.indexOf(b)!=-1;o(a,function(a){if(c=a===b)return true});return c};c.invoke=function(b,f){var d=a.call(arguments,2);return c.map(b,function(a){return(f.call?f||a:a[f]).apply(a,d)})};c.pluck=function(a,b){return c.map(a,function(a){return a[b]})};c.max=function(a,b,f){if(!b&&c.isArray(a))return Math.max.apply(Math,a);if(!b&&c.isEmpty(a))return-Infinity;
9
+ var d={computed:-Infinity};t(a,function(a,u,c){u=b?b.call(f,a,u,c):a;u>=d.computed&&(d={value:a,computed:u})});return d.value};c.min=function(a,b,f){if(!b&&c.isArray(a))return Math.min.apply(Math,a);if(!b&&c.isEmpty(a))return Infinity;var d={computed:Infinity};t(a,function(a,u,c){u=b?b.call(f,a,u,c):a;u<d.computed&&(d={value:a,computed:u})});return d.value};c.shuffle=function(a){var b=[],c;t(a,function(a,u){if(u==0)b[0]=a;else{c=Math.floor(Math.random()*(u+1));b[u]=b[c];b[c]=a}});return b};c.sortBy=
10
+ function(a,b,f){return c.pluck(c.map(a,function(a,u,c){return{value:a,criteria:b.call(f,a,u,c)}}).sort(function(a,b){var u=a.criteria,c=b.criteria;return u<c?-1:u>c?1:0}),"value")};c.groupBy=function(a,b){var c={};t(a,function(a,u){var f=b(a,u);(c[f]||(c[f]=[])).push(a)});return c};c.sortedIndex=function(a,b,f){f||(f=c.identity);for(var d=0,e=a.length;d<e;){var h=d+e>>1;f(a[h])<f(b)?d=h+1:e=h}return d};c.toArray=function(b){return!b?[]:b.toArray?b.toArray():c.isArray(b)||c.isArguments(b)?a.call(b):
11
+ c.values(b)};c.size=function(a){return c.toArray(a).length};c.first=c.head=function(b,c,f){return c!=null&&!f?a.call(b,0,c):b[0]};c.initial=function(b,c,f){return a.call(b,0,b.length-(c==null||f?1:c))};c.last=function(b,c,f){return c!=null&&!f?a.call(b,b.length-c):b[b.length-1]};c.rest=c.tail=function(b,c,f){return a.call(b,c==null||f?1:c)};c.compact=function(a){return c.filter(a,function(a){return!!a})};c.flatten=function(a){return c.reduce(a,function(a,b){if(c.isArray(b))return a.concat(c.flatten(b));
12
+ a[a.length]=b;return a},[])};c.without=function(b){return c.difference(b,a.call(arguments,1))};c.uniq=c.unique=function(a,b,f){var f=f?c.map(a,f):a,d=[];c.reduce(f,function(f,e,h){if(0==h||(b===true?c.last(f)!=e:!c.include(f,e))){f[f.length]=e;d[d.length]=a[h]}return f},[]);return d};c.union=function(){return c.uniq(c.flatten(arguments))};c.intersection=c.intersect=function(b){var f=a.call(arguments,1);return c.filter(c.uniq(b),function(a){return c.every(f,function(b){return c.indexOf(b,a)>=0})})};
13
+ c.difference=function(a,b){return c.filter(a,function(a){return!c.include(b,a)})};c.zip=function(){for(var b=a.call(arguments),f=c.max(c.pluck(b,"length")),d=Array(f),e=0;e<f;e++)d[e]=c.pluck(b,""+e);return d};c.indexOf=function(a,b,f){if(a==null)return-1;var d;if(f){f=c.sortedIndex(a,b);return a[f]===b?f:-1}if(r&&a.indexOf===r)return a.indexOf(b);f=0;for(d=a.length;f<d;f++)if(a[f]===b)return f;return-1};c.lastIndexOf=function(a,b){if(a==null)return-1;if(m&&a.lastIndexOf===m)return a.lastIndexOf(b);
14
+ for(var c=a.length;c--;)if(a[c]===b)return c;return-1};c.range=function(a,b,c){if(arguments.length<=1){b=a||0;a=0}for(var c=arguments[2]||1,f=Math.max(Math.ceil((b-a)/c),0),d=0,e=Array(f);d<f;){e[d++]=a;a=a+c}return e};c.bind=function(b,c){if(b.bind===f&&f)return f.apply(b,a.call(arguments,1));var d=a.call(arguments,2);return function(){return b.apply(c,d.concat(a.call(arguments)))}};c.bindAll=function(b){var f=a.call(arguments,1);f.length==0&&(f=c.functions(b));t(f,function(a){b[a]=c.bind(b[a],b)});
15
+ return b};c.memoize=function(a,b){var f={};b||(b=c.identity);return function(){var c=b.apply(this,arguments);return e.call(f,c)?f[c]:f[c]=a.apply(this,arguments)}};c.delay=function(b,c){var f=a.call(arguments,2);return setTimeout(function(){return b.apply(b,f)},c)};c.defer=function(b){return c.delay.apply(c,[b,1].concat(a.call(arguments,1)))};var h=function(a,b,c){var f;return function(){var d=this,e=arguments,h=function(){f=null;a.apply(d,e)};c&&clearTimeout(f);if(c||!f)f=setTimeout(h,b)}};c.throttle=
16
+ function(a,b){return h(a,b,false)};c.debounce=function(a,b){return h(a,b,true)};c.once=function(a){var b=false,c;return function(){if(b)return c;b=true;return c=a.apply(this,arguments)}};c.wrap=function(b,c){return function(){var f=[b].concat(a.call(arguments));return c.apply(this,f)}};c.compose=function(){var b=a.call(arguments);return function(){for(var c=a.call(arguments),f=b.length-1;f>=0;f--)c=[b[f].apply(this,c)];return c[0]}};c.after=function(a,b){return function(){if(--a<1)return b.apply(this,
17
+ arguments)}};c.keys=p||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],c;for(c in a)e.call(a,c)&&(b[b.length]=c);return b};c.values=function(a){return c.map(a,c.identity)};c.functions=c.methods=function(a){var b=[],f;for(f in a)c.isFunction(a[f])&&b.push(f);return b.sort()};c.extend=function(b){t(a.call(arguments,1),function(a){for(var c in a)a[c]!==void 0&&(b[c]=a[c])});return b};c.defaults=function(b){t(a.call(arguments,1),function(a){for(var c in a)b[c]==null&&(b[c]=
18
+ a[c])});return b};c.clone=function(a){return c.isArray(a)?a.slice():c.extend({},a)};c.tap=function(a,b){b(a);return a};c.isEqual=function(a,b){return z(a,b,[])};c.isEmpty=function(a){if(c.isArray(a)||c.isString(a))return a.length===0;for(var b in a)if(e.call(a,b))return false;return true};c.isElement=function(a){return!!(a&&a.nodeType==1)};c.isArray=d||function(a){return l.call(a)==="[object Array]"};c.isObject=function(a){return a===Object(a)};c.isArguments=function(a){return!(!a||!e.call(a,"callee"))};
19
+ c.isFunction=function(a){return!(!a||!a.constructor||!a.call||!a.apply)};c.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};c.isNumber=function(a){return!!(a===0||a&&a.toExponential&&a.toFixed)};c.isNaN=function(a){return a!==a};c.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};c.isDate=function(a){return!(!a||!a.getTimezoneOffset||!a.setUTCFullYear)};c.isRegExp=function(a){return!(!a||!a.test||!a.exec||!(a.ignoreCase||a.ignoreCase===false))};c.isNull=
20
+ function(a){return a===null};c.isUndefined=function(a){return a===void 0};c.noConflict=function(){B._=y;return this};c.identity=function(a){return a};c.times=function(a,b,c){for(var f=0;f<a;f++)b.call(c,f)};c.escape=function(a){return(""+a).replace(/&(?!\w+;|#\d+;|#x[\da-f]+;)/gi,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};c.mixin=function(a){t(c.functions(a),function(b){D(b,c[b]=a[b])})};var C=0;c.uniqueId=function(a){var b=
21
+ C++;return a?a+b:b};c.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};c.template=function(a,b){var f=c.templateSettings,f="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(f.escape,function(a,b){return"',_.escape("+b.replace(/\\'/g,"'")+"),'"}).replace(f.interpolate,function(a,b){return"',"+b.replace(/\\'/g,"'")+",'"}).replace(f.evaluate||null,function(a,
22
+ b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",f=new Function("obj",f);return b?f(b):f};var A=function(a){this._wrapped=a};c.prototype=A.prototype;var E=function(a,b){return b?c(a).chain():a},D=function(b,f){A.prototype[b]=function(){var b=a.call(arguments);i.call(b,this._wrapped);return E(f.apply(c,b),this._chain)}};c.mixin(c);t("pop,push,reverse,shift,sort,splice,unshift".split(","),
23
+ function(a){var b=j[a];A.prototype[a]=function(){b.apply(this._wrapped,arguments);return E(this._wrapped,this._chain)}});t(["concat","join","slice"],function(a){var b=j[a];A.prototype[a]=function(){return E(b.apply(this._wrapped,arguments),this._chain)}});A.prototype.chain=function(){this._chain=true;return this};A.prototype.value=function(){return this._wrapped}})();
24
+ (function(){var z={parent:!0},B={underscore:_},y={},n=function(j){if(!B[j])y[j](B[j]={});return B[j]};y["unicode-categories"]=function(j){var d={Lu:/\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189\u018A\u018B\u018E\u018F\u0190\u0191\u0193\u0194\u0196\u0197\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1\u01B2\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6\u01F7\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243\u0244\u0245\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03CF\u03D2\u03D3\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD\u03FE\u03FF\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FB8\u1FB9\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FD8\u1FD9\u1FDA\u1FDB\u1FE8\u1FE9\u1FEA\u1FEB\u1FEC\u1FF8\u1FF9\u1FFA\u1FFB\u2102\u2107\u210B\u210C\u210D\u2110\u2111\u2112\u2115\u2119\u211A\u211B\u211C\u211D\u2124\u2126\u2128\u212A\u212B\u212C\u212D\u2130\u2131\u2132\u2133\u213E\u213F\u2145\u2183\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C60\u2C62\u2C63\u2C64\u2C67\u2C69\u2C6B\u2C6D\u2C6E\u2C6F\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A/,
25
+ Ll:/\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u00AA\u00B5\u00BA\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E\u017F\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199\u019A\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD\u01BE\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D\u025E\u025F\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E\u028F\u0290\u0291\u0292\u0293\u0295\u0296\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE\u02AF\u0371\u0373\u0377\u037B\u037C\u037D\u0390\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03D0\u03D1\u03D5\u03D6\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF\u03F0\u03F1\u03F2\u03F3\u03F5\u03F8\u03FB\u03FC\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0450\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D\u045E\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0561\u0562\u0563\u0564\u0565\u0566\u0567\u0568\u0569\u056A\u056B\u056C\u056D\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579\u057A\u057B\u057C\u057D\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u0587\u1D00\u1D01\u1D02\u1D03\u1D04\u1D05\u1D06\u1D07\u1D08\u1D09\u1D0A\u1D0B\u1D0C\u1D0D\u1D0E\u1D0F\u1D10\u1D11\u1D12\u1D13\u1D14\u1D15\u1D16\u1D17\u1D18\u1D19\u1D1A\u1D1B\u1D1C\u1D1D\u1D1E\u1D1F\u1D20\u1D21\u1D22\u1D23\u1D24\u1D25\u1D26\u1D27\u1D28\u1D29\u1D2A\u1D2B\u1D62\u1D63\u1D64\u1D65\u1D66\u1D67\u1D68\u1D69\u1D6A\u1D6B\u1D6C\u1D6D\u1D6E\u1D6F\u1D70\u1D71\u1D72\u1D73\u1D74\u1D75\u1D76\u1D77\u1D79\u1D7A\u1D7B\u1D7C\u1D7D\u1D7E\u1D7F\u1D80\u1D81\u1D82\u1D83\u1D84\u1D85\u1D86\u1D87\u1D88\u1D89\u1D8A\u1D8B\u1D8C\u1D8D\u1D8E\u1D8F\u1D90\u1D91\u1D92\u1D93\u1D94\u1D95\u1D96\u1D97\u1D98\u1D99\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u1E96\u1E97\u1E98\u1E99\u1E9A\u1E9B\u1E9C\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42\u1F43\u1F44\u1F45\u1F50\u1F51\u1F52\u1F53\u1F54\u1F55\u1F56\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F70\u1F71\u1F72\u1F73\u1F74\u1F75\u1F76\u1F77\u1F78\u1F79\u1F7A\u1F7B\u1F7C\u1F7D\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FB0\u1FB1\u1FB2\u1FB3\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2\u1FC3\u1FC4\u1FC6\u1FC7\u1FD0\u1FD1\u1FD2\u1FD3\u1FD6\u1FD7\u1FE0\u1FE1\u1FE2\u1FE3\u1FE4\u1FE5\u1FE6\u1FE7\u1FF2\u1FF3\u1FF4\u1FF6\u1FF7\u2071\u207F\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146\u2147\u2148\u2149\u214E\u2184\u2C30\u2C31\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76\u2C77\u2C78\u2C79\u2C7A\u2C7B\u2C7C\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F\uA730\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771\uA772\uA773\uA774\uA775\uA776\uA777\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05\uFB06\uFB13\uFB14\uFB15\uFB16\uFB17\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A/,
26
+ Lt:/\u01C5\u01C8\u01CB\u01F2\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FBC\u1FCC/,Lm:/\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE\u02BF\u02C0\u02C1\u02C6\u02C7\u02C8\u02C9\u02CA\u02CB\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02E0\u02E1\u02E2\u02E3\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1C78\u1C79\u1C7A\u1C7B\u1C7C\u1C7D\u1D2C\u1D2D\u1D2E\u1D2F\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3B\u1D3C\u1D3D\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D\u1D4E\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D\u1D5E\u1D5F\u1D60\u1D61\u1D78\u1D9B\u1D9C\u1D9D\u1D9E\u1D9F\u1DA0\u1DA1\u1DA2\u1DA3\u1DA4\u1DA5\u1DA6\u1DA7\u1DA8\u1DA9\u1DAA\u1DAB\u1DAC\u1DAD\u1DAE\u1DAF\u1DB0\u1DB1\u1DB2\u1DB3\u1DB4\u1DB5\u1DB6\u1DB7\u1DB8\u1DB9\u1DBA\u1DBB\u1DBC\u1DBD\u1DBE\u1DBF\u2090\u2091\u2092\u2093\u2094\u2C7D\u2D6F\u2E2F\u3005\u3031\u3032\u3033\u3034\u3035\u303B\u309D\u309E\u30FC\u30FD\u30FE\uA015\uA60C\uA67F\uA717\uA718\uA719\uA71A\uA71B\uA71C\uA71D\uA71E\uA71F\uA770\uA788\uFF70\uFF9E\uFF9F/,
27
+ Lo:/\u01BB\u01C0\u01C1\u01C2\u01C3\u0294\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u05F0\u05F1\u05F2\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\u063B\u063C\u063D\u063E\u063F\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u066E\u066F\u0671\u0672\u0673\u0674\u0675\u0676\u0677\u0678\u0679\u067A\u067B\u067C\u067D\u067E\u067F\u0680\u0681\u0682\u0683\u0684\u0685\u0686\u0687\u0688\u0689\u068A\u068B\u068C\u068D\u068E\u068F\u0690\u0691\u0692\u0693\u0694\u0695\u0696\u0697\u0698\u0699\u069A\u069B\u069C\u069D\u069E\u069F\u06A0\u06A1\u06A2\u06A3\u06A4\u06A5\u06A6\u06A7\u06A8\u06A9\u06AA\u06AB\u06AC\u06AD\u06AE\u06AF\u06B0\u06B1\u06B2\u06B3\u06B4\u06B5\u06B6\u06B7\u06B8\u06B9\u06BA\u06BB\u06BC\u06BD\u06BE\u06BF\u06C0\u06C1\u06C2\u06C3\u06C4\u06C5\u06C6\u06C7\u06C8\u06C9\u06CA\u06CB\u06CC\u06CD\u06CE\u06CF\u06D0\u06D1\u06D2\u06D3\u06D5\u06EE\u06EF\u06FA\u06FB\u06FC\u06FF\u0710\u0712\u0713\u0714\u0715\u0716\u0717\u0718\u0719\u071A\u071B\u071C\u071D\u071E\u071F\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u0728\u0729\u072A\u072B\u072C\u072D\u072E\u072F\u074D\u074E\u074F\u0750\u0751\u0752\u0753\u0754\u0755\u0756\u0757\u0758\u0759\u075A\u075B\u075C\u075D\u075E\u075F\u0760\u0761\u0762\u0763\u0764\u0765\u0766\u0767\u0768\u0769\u076A\u076B\u076C\u076D\u076E\u076F\u0770\u0771\u0772\u0773\u0774\u0775\u0776\u0777\u0778\u0779\u077A\u077B\u077C\u077D\u077E\u077F\u0780\u0781\u0782\u0783\u0784\u0785\u0786\u0787\u0788\u0789\u078A\u078B\u078C\u078D\u078E\u078F\u0790\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u0798\u0799\u079A\u079B\u079C\u079D\u079E\u079F\u07A0\u07A1\u07A2\u07A3\u07A4\u07A5\u07B1\u07CA\u07CB\u07CC\u07CD\u07CE\u07CF\u07D0\u07D1\u07D2\u07D3\u07D4\u07D5\u07D6\u07D7\u07D8\u07D9\u07DA\u07DB\u07DC\u07DD\u07DE\u07DF\u07E0\u07E1\u07E2\u07E3\u07E4\u07E5\u07E6\u07E7\u07E8\u07E9\u07EA\u0904\u0905\u0906\u0907\u0908\u0909\u090A\u090B\u090C\u090D\u090E\u090F\u0910\u0911\u0912\u0913\u0914\u0915\u0916\u0917\u0918\u0919\u091A\u091B\u091C\u091D\u091E\u091F\u0920\u0921\u0922\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092A\u092B\u092C\u092D\u092E\u092F\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093D\u0950\u0958\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u0960\u0961\u0972\u097B\u097C\u097D\u097E\u097F\u0985\u0986\u0987\u0988\u0989\u098A\u098B\u098C\u098F\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099A\u099B\u099C\u099D\u099E\u099F\u09A0\u09A1\u09A2\u09A3\u09A4\u09A5\u09A6\u09A7\u09A8\u09AA\u09AB\u09AC\u09AD\u09AE\u09AF\u09B0\u09B2\u09B6\u09B7\u09B8\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF\u09E0\u09E1\u09F0\u09F1\u0A05\u0A06\u0A07\u0A08\u0A09\u0A0A\u0A0F\u0A10\u0A13\u0A14\u0A15\u0A16\u0A17\u0A18\u0A19\u0A1A\u0A1B\u0A1C\u0A1D\u0A1E\u0A1F\u0A20\u0A21\u0A22\u0A23\u0A24\u0A25\u0A26\u0A27\u0A28\u0A2A\u0A2B\u0A2C\u0A2D\u0A2E\u0A2F\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74\u0A85\u0A86\u0A87\u0A88\u0A89\u0A8A\u0A8B\u0A8C\u0A8D\u0A8F\u0A90\u0A91\u0A93\u0A94\u0A95\u0A96\u0A97\u0A98\u0A99\u0A9A\u0A9B\u0A9C\u0A9D\u0A9E\u0A9F\u0AA0\u0AA1\u0AA2\u0AA3\u0AA4\u0AA5\u0AA6\u0AA7\u0AA8\u0AAA\u0AAB\u0AAC\u0AAD\u0AAE\u0AAF\u0AB0\u0AB2\u0AB3\u0AB5\u0AB6\u0AB7\u0AB8\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05\u0B06\u0B07\u0B08\u0B09\u0B0A\u0B0B\u0B0C\u0B0F\u0B10\u0B13\u0B14\u0B15\u0B16\u0B17\u0B18\u0B19\u0B1A\u0B1B\u0B1C\u0B1D\u0B1E\u0B1F\u0B20\u0B21\u0B22\u0B23\u0B24\u0B25\u0B26\u0B27\u0B28\u0B2A\u0B2B\u0B2C\u0B2D\u0B2E\u0B2F\u0B30\u0B32\u0B33\u0B35\u0B36\u0B37\u0B38\u0B39\u0B3D\u0B5C\u0B5D\u0B5F\u0B60\u0B61\u0B71\u0B83\u0B85\u0B86\u0B87\u0B88\u0B89\u0B8A\u0B8E\u0B8F\u0B90\u0B92\u0B93\u0B94\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8\u0BA9\u0BAA\u0BAE\u0BAF\u0BB0\u0BB1\u0BB2\u0BB3\u0BB4\u0BB5\u0BB6\u0BB7\u0BB8\u0BB9\u0BD0\u0C05\u0C06\u0C07\u0C08\u0C09\u0C0A\u0C0B\u0C0C\u0C0E\u0C0F\u0C10\u0C12\u0C13\u0C14\u0C15\u0C16\u0C17\u0C18\u0C19\u0C1A\u0C1B\u0C1C\u0C1D\u0C1E\u0C1F\u0C20\u0C21\u0C22\u0C23\u0C24\u0C25\u0C26\u0C27\u0C28\u0C2A\u0C2B\u0C2C\u0C2D\u0C2E\u0C2F\u0C30\u0C31\u0C32\u0C33\u0C35\u0C36\u0C37\u0C38\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85\u0C86\u0C87\u0C88\u0C89\u0C8A\u0C8B\u0C8C\u0C8E\u0C8F\u0C90\u0C92\u0C93\u0C94\u0C95\u0C96\u0C97\u0C98\u0C99\u0C9A\u0C9B\u0C9C\u0C9D\u0C9E\u0C9F\u0CA0\u0CA1\u0CA2\u0CA3\u0CA4\u0CA5\u0CA6\u0CA7\u0CA8\u0CAA\u0CAB\u0CAC\u0CAD\u0CAE\u0CAF\u0CB0\u0CB1\u0CB2\u0CB3\u0CB5\u0CB6\u0CB7\u0CB8\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05\u0D06\u0D07\u0D08\u0D09\u0D0A\u0D0B\u0D0C\u0D0E\u0D0F\u0D10\u0D12\u0D13\u0D14\u0D15\u0D16\u0D17\u0D18\u0D19\u0D1A\u0D1B\u0D1C\u0D1D\u0D1E\u0D1F\u0D20\u0D21\u0D22\u0D23\u0D24\u0D25\u0D26\u0D27\u0D28\u0D2A\u0D2B\u0D2C\u0D2D\u0D2E\u0D2F\u0D30\u0D31\u0D32\u0D33\u0D34\u0D35\u0D36\u0D37\u0D38\u0D39\u0D3D\u0D60\u0D61\u0D7A\u0D7B\u0D7C\u0D7D\u0D7E\u0D7F\u0D85\u0D86\u0D87\u0D88\u0D89\u0D8A\u0D8B\u0D8C\u0D8D\u0D8E\u0D8F\u0D90\u0D91\u0D92\u0D93\u0D94\u0D95\u0D96\u0D9A\u0D9B\u0D9C\u0D9D\u0D9E\u0D9F\u0DA0\u0DA1\u0DA2\u0DA3\u0DA4\u0DA5\u0DA6\u0DA7\u0DA8\u0DA9\u0DAA\u0DAB\u0DAC\u0DAD\u0DAE\u0DAF\u0DB0\u0DB1\u0DB3\u0DB4\u0DB5\u0DB6\u0DB7\u0DB8\u0DB9\u0DBA\u0DBB\u0DBD\u0DC0\u0DC1\u0DC2\u0DC3\u0DC4\u0DC5\u0DC6\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E32\u0E33\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EAF\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EDC\u0EDD\u0F00\u0F40\u0F41\u0F42\u0F43\u0F44\u0F45\u0F46\u0F47\u0F49\u0F4A\u0F4B\u0F4C\u0F4D\u0F4E\u0F4F\u0F50\u0F51\u0F52\u0F53\u0F54\u0F55\u0F56\u0F57\u0F58\u0F59\u0F5A\u0F5B\u0F5C\u0F5D\u0F5E\u0F5F\u0F60\u0F61\u0F62\u0F63\u0F64\u0F65\u0F66\u0F67\u0F68\u0F69\u0F6A\u0F6B\u0F6C\u0F88\u0F89\u0F8A\u0F8B\u1000\u1001\u1002\u1003\u1004\u1005\u1006\u1007\u1008\u1009\u100A\u100B\u100C\u100D\u100E\u100F\u1010\u1011\u1012\u1013\u1014\u1015\u1016\u1017\u1018\u1019\u101A\u101B\u101C\u101D\u101E\u101F\u1020\u1021\u1022\u1023\u1024\u1025\u1026\u1027\u1028\u1029\u102A\u103F\u1050\u1051\u1052\u1053\u1054\u1055\u105A\u105B\u105C\u105D\u1061\u1065\u1066\u106E\u106F\u1070\u1075\u1076\u1077\u1078\u1079\u107A\u107B\u107C\u107D\u107E\u107F\u1080\u1081\u108E\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u1100\u1101\u1102\u1103\u1104\u1105\u1106\u1107\u1108\u1109\u110A\u110B\u110C\u110D\u110E\u110F\u1110\u1111\u1112\u1113\u1114\u1115\u1116\u1117\u1118\u1119\u111A\u111B\u111C\u111D\u111E\u111F\u1120\u1121\u1122\u1123\u1124\u1125\u1126\u1127\u1128\u1129\u112A\u112B\u112C\u112D\u112E\u112F\u1130\u1131\u1132\u1133\u1134\u1135\u1136\u1137\u1138\u1139\u113A\u113B\u113C\u113D\u113E\u113F\u1140\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u1148\u1149\u114A\u114B\u114C\u114D\u114E\u114F\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u1158\u1159\u115F\u1160\u1161\u1162\u1163\u1164\u1165\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D\u116E\u116F\u1170\u1171\u1172\u1173\u1174\u1175\u1176\u1177\u1178\u1179\u117A\u117B\u117C\u117D\u117E\u117F\u1180\u1181\u1182\u1183\u1184\u1185\u1186\u1187\u1188\u1189\u118A\u118B\u118C\u118D\u118E\u118F\u1190\u1191\u1192\u1193\u1194\u1195\u1196\u1197\u1198\u1199\u119A\u119B\u119C\u119D\u119E\u119F\u11A0\u11A1\u11A2\u11A8\u11A9\u11AA\u11AB\u11AC\u11AD\u11AE\u11AF\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5\u11B6\u11B7\u11B8\u11B9\u11BA\u11BB\u11BC\u11BD\u11BE\u11BF\u11C0\u11C1\u11C2\u11C3\u11C4\u11C5\u11C6\u11C7\u11C8\u11C9\u11CA\u11CB\u11CC\u11CD\u11CE\u11CF\u11D0\u11D1\u11D2\u11D3\u11D4\u11D5\u11D6\u11D7\u11D8\u11D9\u11DA\u11DB\u11DC\u11DD\u11DE\u11DF\u11E0\u11E1\u11E2\u11E3\u11E4\u11E5\u11E6\u11E7\u11E8\u11E9\u11EA\u11EB\u11EC\u11ED\u11EE\u11EF\u11F0\u11F1\u11F2\u11F3\u11F4\u11F5\u11F6\u11F7\u11F8\u11F9\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120A\u120B\u120C\u120D\u120E\u120F\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121A\u121B\u121C\u121D\u121E\u121F\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122A\u122B\u122C\u122D\u122E\u122F\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u1238\u1239\u123A\u123B\u123C\u123D\u123E\u123F\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124A\u124B\u124C\u124D\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125A\u125B\u125C\u125D\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1268\u1269\u126A\u126B\u126C\u126D\u126E\u126F\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u1278\u1279\u127A\u127B\u127C\u127D\u127E\u127F\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128A\u128B\u128C\u128D\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u1298\u1299\u129A\u129B\u129C\u129D\u129E\u129F\u12A0\u12A1\u12A2\u12A3\u12A4\u12A5\u12A6\u12A7\u12A8\u12A9\u12AA\u12AB\u12AC\u12AD\u12AE\u12AF\u12B0\u12B2\u12B3\u12B4\u12B5\u12B8\u12B9\u12BA\u12BB\u12BC\u12BD\u12BE\u12C0\u12C2\u12C3\u12C4\u12C5\u12C8\u12C9\u12CA\u12CB\u12CC\u12CD\u12CE\u12CF\u12D0\u12D1\u12D2\u12D3\u12D4\u12D5\u12D6\u12D8\u12D9\u12DA\u12DB\u12DC\u12DD\u12DE\u12DF\u12E0\u12E1\u12E2\u12E3\u12E4\u12E5\u12E6\u12E7\u12E8\u12E9\u12EA\u12EB\u12EC\u12ED\u12EE\u12EF\u12F0\u12F1\u12F2\u12F3\u12F4\u12F5\u12F6\u12F7\u12F8\u12F9\u12FA\u12FB\u12FC\u12FD\u12FE\u12FF\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u1308\u1309\u130A\u130B\u130C\u130D\u130E\u130F\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131A\u131B\u131C\u131D\u131E\u131F\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u1328\u1329\u132A\u132B\u132C\u132D\u132E\u132F\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u1338\u1339\u133A\u133B\u133C\u133D\u133E\u133F\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134A\u134B\u134C\u134D\u134E\u134F\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u1358\u1359\u135A\u1380\u1381\u1382\u1383\u1384\u1385\u1386\u1387\u1388\u1389\u138A\u138B\u138C\u138D\u138E\u138F\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\u13F0\u13F1\u13F2\u13F3\u13F4\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140A\u140B\u140C\u140D\u140E\u140F\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141A\u141B\u141C\u141D\u141E\u141F\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142A\u142B\u142C\u142D\u142E\u142F\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143A\u143B\u143C\u143D\u143E\u143F\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144A\u144B\u144C\u144D\u144E\u144F\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145A\u145B\u145C\u145D\u145E\u145F\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146A\u146B\u146C\u146D\u146E\u146F\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147A\u147B\u147C\u147D\u147E\u147F\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148A\u148B\u148C\u148D\u148E\u148F\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149A\u149B\u149C\u149D\u149E\u149F\u14A0\u14A1\u14A2\u14A3\u14A4\u14A5\u14A6\u14A7\u14A8\u14A9\u14AA\u14AB\u14AC\u14AD\u14AE\u14AF\u14B0\u14B1\u14B2\u14B3\u14B4\u14B5\u14B6\u14B7\u14B8\u14B9\u14BA\u14BB\u14BC\u14BD\u14BE\u14BF\u14C0\u14C1\u14C2\u14C3\u14C4\u14C5\u14C6\u14C7\u14C8\u14C9\u14CA\u14CB\u14CC\u14CD\u14CE\u14CF\u14D0\u14D1\u14D2\u14D3\u14D4\u14D5\u14D6\u14D7\u14D8\u14D9\u14DA\u14DB\u14DC\u14DD\u14DE\u14DF\u14E0\u14E1\u14E2\u14E3\u14E4\u14E5\u14E6\u14E7\u14E8\u14E9\u14EA\u14EB\u14EC\u14ED\u14EE\u14EF\u14F0\u14F1\u14F2\u14F3\u14F4\u14F5\u14F6\u14F7\u14F8\u14F9\u14FA\u14FB\u14FC\u14FD\u14FE\u14FF\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150A\u150B\u150C\u150D\u150E\u150F\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151A\u151B\u151C\u151D\u151E\u151F\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152A\u152B\u152C\u152D\u152E\u152F\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153A\u153B\u153C\u153D\u153E\u153F\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154A\u154B\u154C\u154D\u154E\u154F\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155A\u155B\u155C\u155D\u155E\u155F\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156A\u156B\u156C\u156D\u156E\u156F\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157A\u157B\u157C\u157D\u157E\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158A\u158B\u158C\u158D\u158E\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159A\u159B\u159C\u159D\u159E\u159F\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u15A7\u15A8\u15A9\u15AA\u15AB\u15AC\u15AD\u15AE\u15AF\u15B0\u15B1\u15B2\u15B3\u15B4\u15B5\u15B6\u15B7\u15B8\u15B9\u15BA\u15BB\u15BC\u15BD\u15BE\u15BF\u15C0\u15C1\u15C2\u15C3\u15C4\u15C5\u15C6\u15C7\u15C8\u15C9\u15CA\u15CB\u15CC\u15CD\u15CE\u15CF\u15D0\u15D1\u15D2\u15D3\u15D4\u15D5\u15D6\u15D7\u15D8\u15D9\u15DA\u15DB\u15DC\u15DD\u15DE\u15DF\u15E0\u15E1\u15E2\u15E3\u15E4\u15E5\u15E6\u15E7\u15E8\u15E9\u15EA\u15EB\u15EC\u15ED\u15EE\u15EF\u15F0\u15F1\u15F2\u15F3\u15F4\u15F5\u15F6\u15F7\u15F8\u15F9\u15FA\u15FB\u15FC\u15FD\u15FE\u15FF\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160A\u160B\u160C\u160D\u160E\u160F\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161A\u161B\u161C\u161D\u161E\u161F\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162A\u162B\u162C\u162D\u162E\u162F\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163A\u163B\u163C\u163D\u163E\u163F\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164A\u164B\u164C\u164D\u164E\u164F\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165A\u165B\u165C\u165D\u165E\u165F\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166A\u166B\u166C\u166F\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168A\u168B\u168C\u168D\u168E\u168F\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169A\u16A0\u16A1\u16A2\u16A3\u16A4\u16A5\u16A6\u16A7\u16A8\u16A9\u16AA\u16AB\u16AC\u16AD\u16AE\u16AF\u16B0\u16B1\u16B2\u16B3\u16B4\u16B5\u16B6\u16B7\u16B8\u16B9\u16BA\u16BB\u16BC\u16BD\u16BE\u16BF\u16C0\u16C1\u16C2\u16C3\u16C4\u16C5\u16C6\u16C7\u16C8\u16C9\u16CA\u16CB\u16CC\u16CD\u16CE\u16CF\u16D0\u16D1\u16D2\u16D3\u16D4\u16D5\u16D6\u16D7\u16D8\u16D9\u16DA\u16DB\u16DC\u16DD\u16DE\u16DF\u16E0\u16E1\u16E2\u16E3\u16E4\u16E5\u16E6\u16E7\u16E8\u16E9\u16EA\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170A\u170B\u170C\u170E\u170F\u1710\u1711\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172A\u172B\u172C\u172D\u172E\u172F\u1730\u1731\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174A\u174B\u174C\u174D\u174E\u174F\u1750\u1751\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176A\u176B\u176C\u176E\u176F\u1770\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178A\u178B\u178C\u178D\u178E\u178F\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179A\u179B\u179C\u179D\u179E\u179F\u17A0\u17A1\u17A2\u17A3\u17A4\u17A5\u17A6\u17A7\u17A8\u17A9\u17AA\u17AB\u17AC\u17AD\u17AE\u17AF\u17B0\u17B1\u17B2\u17B3\u17DC\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182A\u182B\u182C\u182D\u182E\u182F\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183A\u183B\u183C\u183D\u183E\u183F\u1840\u1841\u1842\u1844\u1845\u1846\u1847\u1848\u1849\u184A\u184B\u184C\u184D\u184E\u184F\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185A\u185B\u185C\u185D\u185E\u185F\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186A\u186B\u186C\u186D\u186E\u186F\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1887\u1888\u1889\u188A\u188B\u188C\u188D\u188E\u188F\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189A\u189B\u189C\u189D\u189E\u189F\u18A0\u18A1\u18A2\u18A3\u18A4\u18A5\u18A6\u18A7\u18A8\u18AA\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190A\u190B\u190C\u190D\u190E\u190F\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191A\u191B\u191C\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195A\u195B\u195C\u195D\u195E\u195F\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196A\u196B\u196C\u196D\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198A\u198B\u198C\u198D\u198E\u198F\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199A\u199B\u199C\u199D\u199E\u199F\u19A0\u19A1\u19A2\u19A3\u19A4\u19A5\u19A6\u19A7\u19A8\u19A9\u19C1\u19C2\u19C3\u19C4\u19C5\u19C6\u19C7\u1A00\u1A01\u1A02\u1A03\u1A04\u1A05\u1A06\u1A07\u1A08\u1A09\u1A0A\u1A0B\u1A0C\u1A0D\u1A0E\u1A0F\u1A10\u1A11\u1A12\u1A13\u1A14\u1A15\u1A16\u1B05\u1B06\u1B07\u1B08\u1B09\u1B0A\u1B0B\u1B0C\u1B0D\u1B0E\u1B0F\u1B10\u1B11\u1B12\u1B13\u1B14\u1B15\u1B16\u1B17\u1B18\u1B19\u1B1A\u1B1B\u1B1C\u1B1D\u1B1E\u1B1F\u1B20\u1B21\u1B22\u1B23\u1B24\u1B25\u1B26\u1B27\u1B28\u1B29\u1B2A\u1B2B\u1B2C\u1B2D\u1B2E\u1B2F\u1B30\u1B31\u1B32\u1B33\u1B45\u1B46\u1B47\u1B48\u1B49\u1B4A\u1B4B\u1B83\u1B84\u1B85\u1B86\u1B87\u1B88\u1B89\u1B8A\u1B8B\u1B8C\u1B8D\u1B8E\u1B8F\u1B90\u1B91\u1B92\u1B93\u1B94\u1B95\u1B96\u1B97\u1B98\u1B99\u1B9A\u1B9B\u1B9C\u1B9D\u1B9E\u1B9F\u1BA0\u1BAE\u1BAF\u1C00\u1C01\u1C02\u1C03\u1C04\u1C05\u1C06\u1C07\u1C08\u1C09\u1C0A\u1C0B\u1C0C\u1C0D\u1C0E\u1C0F\u1C10\u1C11\u1C12\u1C13\u1C14\u1C15\u1C16\u1C17\u1C18\u1C19\u1C1A\u1C1B\u1C1C\u1C1D\u1C1E\u1C1F\u1C20\u1C21\u1C22\u1C23\u1C4D\u1C4E\u1C4F\u1C5A\u1C5B\u1C5C\u1C5D\u1C5E\u1C5F\u1C60\u1C61\u1C62\u1C63\u1C64\u1C65\u1C66\u1C67\u1C68\u1C69\u1C6A\u1C6B\u1C6C\u1C6D\u1C6E\u1C6F\u1C70\u1C71\u1C72\u1C73\u1C74\u1C75\u1C76\u1C77\u2135\u2136\u2137\u2138\u2D30\u2D31\u2D32\u2D33\u2D34\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B\u2D3C\u2D3D\u2D3E\u2D3F\u2D40\u2D41\u2D42\u2D43\u2D44\u2D45\u2D46\u2D47\u2D48\u2D49\u2D4A\u2D4B\u2D4C\u2D4D\u2D4E\u2D4F\u2D50\u2D51\u2D52\u2D53\u2D54\u2D55\u2D56\u2D57\u2D58\u2D59\u2D5A\u2D5B\u2D5C\u2D5D\u2D5E\u2D5F\u2D60\u2D61\u2D62\u2D63\u2D64\u2D65\u2D80\u2D81\u2D82\u2D83\u2D84\u2D85\u2D86\u2D87\u2D88\u2D89\u2D8A\u2D8B\u2D8C\u2D8D\u2D8E\u2D8F\u2D90\u2D91\u2D92\u2D93\u2D94\u2D95\u2D96\u2DA0\u2DA1\u2DA2\u2DA3\u2DA4\u2DA5\u2DA6\u2DA8\u2DA9\u2DAA\u2DAB\u2DAC\u2DAD\u2DAE\u2DB0\u2DB1\u2DB2\u2DB3\u2DB4\u2DB5\u2DB6\u2DB8\u2DB9\u2DBA\u2DBB\u2DBC\u2DBD\u2DBE\u2DC0\u2DC1\u2DC2\u2DC3\u2DC4\u2DC5\u2DC6\u2DC8\u2DC9\u2DCA\u2DCB\u2DCC\u2DCD\u2DCE\u2DD0\u2DD1\u2DD2\u2DD3\u2DD4\u2DD5\u2DD6\u2DD8\u2DD9\u2DDA\u2DDB\u2DDC\u2DDD\u2DDE\u3006\u303C\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u309F\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4\u30F5\u30F6\u30F7\u30F8\u30F9\u30FA\u30FF\u3105\u3106\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312A\u312B\u312C\u312D\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318A\u318B\u318C\u318D\u318E\u31A0\u31A1\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31F0\u31F1\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3400\u4DB5\u4E00\u9FC3\uA000\uA001\uA002\uA003\uA004\uA005\uA006\uA007\uA008\uA009\uA00A\uA00B\uA00C\uA00D\uA00E\uA00F\uA010\uA011\uA012\uA013\uA014\uA016\uA017\uA018\uA019\uA01A\uA01B\uA01C\uA01D\uA01E\uA01F\uA020\uA021\uA022\uA023\uA024\uA025\uA026\uA027\uA028\uA029\uA02A\uA02B\uA02C\uA02D\uA02E\uA02F\uA030\uA031\uA032\uA033\uA034\uA035\uA036\uA037\uA038\uA039\uA03A\uA03B\uA03C\uA03D\uA03E\uA03F\uA040\uA041\uA042\uA043\uA044\uA045\uA046\uA047\uA048\uA049\uA04A\uA04B\uA04C\uA04D\uA04E\uA04F\uA050\uA051\uA052\uA053\uA054\uA055\uA056\uA057\uA058\uA059\uA05A\uA05B\uA05C\uA05D\uA05E\uA05F\uA060\uA061\uA062\uA063\uA064\uA065\uA066\uA067\uA068\uA069\uA06A\uA06B\uA06C\uA06D\uA06E\uA06F\uA070\uA071\uA072\uA073\uA074\uA075\uA076\uA077\uA078\uA079\uA07A\uA07B\uA07C\uA07D\uA07E\uA07F\uA080\uA081\uA082\uA083\uA084\uA085\uA086\uA087\uA088\uA089\uA08A\uA08B\uA08C\uA08D\uA08E\uA08F\uA090\uA091\uA092\uA093\uA094\uA095\uA096\uA097\uA098\uA099\uA09A\uA09B\uA09C\uA09D\uA09E\uA09F\uA0A0\uA0A1\uA0A2\uA0A3\uA0A4\uA0A5\uA0A6\uA0A7\uA0A8\uA0A9\uA0AA\uA0AB\uA0AC\uA0AD\uA0AE\uA0AF\uA0B0\uA0B1\uA0B2\uA0B3\uA0B4\uA0B5\uA0B6\uA0B7\uA0B8\uA0B9\uA0BA\uA0BB\uA0BC\uA0BD\uA0BE\uA0BF\uA0C0\uA0C1\uA0C2\uA0C3\uA0C4\uA0C5\uA0C6\uA0C7\uA0C8\uA0C9\uA0CA\uA0CB\uA0CC\uA0CD\uA0CE\uA0CF\uA0D0\uA0D1\uA0D2\uA0D3\uA0D4\uA0D5\uA0D6\uA0D7\uA0D8\uA0D9\uA0DA\uA0DB\uA0DC\uA0DD\uA0DE\uA0DF\uA0E0\uA0E1\uA0E2\uA0E3\uA0E4\uA0E5\uA0E6\uA0E7\uA0E8\uA0E9\uA0EA\uA0EB\uA0EC\uA0ED\uA0EE\uA0EF\uA0F0\uA0F1\uA0F2\uA0F3\uA0F4\uA0F5\uA0F6\uA0F7\uA0F8\uA0F9\uA0FA\uA0FB\uA0FC\uA0FD\uA0FE\uA0FF\uA100\uA101\uA102\uA103\uA104\uA105\uA106\uA107\uA108\uA109\uA10A\uA10B\uA10C\uA10D\uA10E\uA10F\uA110\uA111\uA112\uA113\uA114\uA115\uA116\uA117\uA118\uA119\uA11A\uA11B\uA11C\uA11D\uA11E\uA11F\uA120\uA121\uA122\uA123\uA124\uA125\uA126\uA127\uA128\uA129\uA12A\uA12B\uA12C\uA12D\uA12E\uA12F\uA130\uA131\uA132\uA133\uA134\uA135\uA136\uA137\uA138\uA139\uA13A\uA13B\uA13C\uA13D\uA13E\uA13F\uA140\uA141\uA142\uA143\uA144\uA145\uA146\uA147\uA148\uA149\uA14A\uA14B\uA14C\uA14D\uA14E\uA14F\uA150\uA151\uA152\uA153\uA154\uA155\uA156\uA157\uA158\uA159\uA15A\uA15B\uA15C\uA15D\uA15E\uA15F\uA160\uA161\uA162\uA163\uA164\uA165\uA166\uA167\uA168\uA169\uA16A\uA16B\uA16C\uA16D\uA16E\uA16F\uA170\uA171\uA172\uA173\uA174\uA175\uA176\uA177\uA178\uA179\uA17A\uA17B\uA17C\uA17D\uA17E\uA17F\uA180\uA181\uA182\uA183\uA184\uA185\uA186\uA187\uA188\uA189\uA18A\uA18B\uA18C\uA18D\uA18E\uA18F\uA190\uA191\uA192\uA193\uA194\uA195\uA196\uA197\uA198\uA199\uA19A\uA19B\uA19C\uA19D\uA19E\uA19F\uA1A0\uA1A1\uA1A2\uA1A3\uA1A4\uA1A5\uA1A6\uA1A7\uA1A8\uA1A9\uA1AA\uA1AB\uA1AC\uA1AD\uA1AE\uA1AF/,
28
+ Nl:/\u16EE\u16EF\u16F0\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182\u2185\u2186\u2187\u2188\u3007\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u3038\u3039\u303A/,Mn:/\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B\u036C\u036D\u036E\u036F\u0483\u0484\u0485\u0486\u0487\u0591\u0592\u0593\u0594\u0595\u0596\u0597\u0598\u0599\u059A\u059B\u059C\u059D\u059E\u059F\u05A0\u05A1\u05A2\u05A3\u05A4\u05A5\u05A6\u05A7\u05A8\u05A9\u05AA\u05AB\u05AC\u05AD\u05AE\u05AF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610\u0611\u0612\u0613\u0614\u0615\u0616\u0617\u0618\u0619\u061A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\u0653\u0654\u0655\u0656\u0657\u0658\u0659\u065A\u065B\u065C\u065D\u065E\u0670\u06D6\u06D7\u06D8\u06D9\u06DA\u06DB\u06DC\u06DF\u06E0\u06E1\u06E2\u06E3\u06E4\u06E7\u06E8\u06EA\u06EB\u06EC\u06ED\u0711\u0730\u0731\u0732\u0733\u0734\u0735\u0736\u0737\u0738\u0739\u073A\u073B\u073C\u073D\u073E\u073F\u0740\u0741\u0742\u0743\u0744\u0745\u0746\u0747\u0748\u0749\u074A\u07A6\u07A7\u07A8\u07A9\u07AA\u07AB\u07AC\u07AD\u07AE\u07AF\u07B0\u07EB\u07EC\u07ED\u07EE\u07EF\u07F0\u07F1\u07F2\u07F3\u0901\u0902\u093C\u0941\u0942\u0943\u0944\u0945\u0946\u0947\u0948\u094D\u0951\u0952\u0953\u0954\u0962\u0963\u0981\u09BC\u09C1\u09C2\u09C3\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1\u0AC2\u0AC3\u0AC4\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41\u0B42\u0B43\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E\u0C3F\u0C40\u0C46\u0C47\u0C48\u0C4A\u0C4B\u0C4C\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41\u0D42\u0D43\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2\u0DD3\u0DD4\u0DD6\u0E31\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0EB1\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBB\u0EBC\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71\u0F72\u0F73\u0F74\u0F75\u0F76\u0F77\u0F78\u0F79\u0F7A\u0F7B\u0F7C\u0F7D\u0F7E\u0F80\u0F81\u0F82\u0F83\u0F84\u0F86\u0F87\u0F90\u0F91\u0F92\u0F93\u0F94\u0F95\u0F96\u0F97\u0F99\u0F9A\u0F9B\u0F9C\u0F9D\u0F9E\u0F9F\u0FA0\u0FA1\u0FA2\u0FA3\u0FA4\u0FA5\u0FA6\u0FA7\u0FA8\u0FA9\u0FAA\u0FAB\u0FAC\u0FAD\u0FAE\u0FAF\u0FB0\u0FB1\u0FB2\u0FB3\u0FB4\u0FB5\u0FB6\u0FB7\u0FB8\u0FB9\u0FBA\u0FBB\u0FBC\u0FC6\u102D\u102E\u102F\u1030\u1032\u1033\u1034\u1035\u1036\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E\u105F\u1060\u1071\u1072\u1073\u1074\u1082\u1085\u1086\u108D\u135F\u1712\u1713\u1714\u1732\u1733\u1734\u1752\u1753\u1772\u1773\u17B7\u17B8\u17B9\u17BA\u17BB\u17BC\u17BD\u17C6\u17C9\u17CA\u17CB\u17CC\u17CD\u17CE\u17CF\u17D0\u17D1\u17D2\u17D3\u17DD\u180B\u180C\u180D\u18A9\u1920\u1921\u1922\u1927\u1928\u1932\u1939\u193A\u193B\u1A17\u1A18\u1B00\u1B01\u1B02\u1B03\u1B34\u1B36\u1B37\u1B38\u1B39\u1B3A\u1B3C\u1B42\u1B6B\u1B6C\u1B6D\u1B6E\u1B6F\u1B70\u1B71\u1B72\u1B73\u1B80\u1B81\u1BA2\u1BA3\u1BA4\u1BA5\u1BA8\u1BA9\u1C2C\u1C2D\u1C2E\u1C2F\u1C30\u1C31\u1C32\u1C33\u1C36\u1C37\u1DC0\u1DC1\u1DC2\u1DC3\u1DC4\u1DC5\u1DC6\u1DC7\u1DC8\u1DC9\u1DCA\u1DCB\u1DCC\u1DCD\u1DCE\u1DCF\u1DD0\u1DD1\u1DD2\u1DD3\u1DD4\u1DD5\u1DD6\u1DD7\u1DD8\u1DD9\u1DDA\u1DDB\u1DDC\u1DDD\u1DDE\u1DDF\u1DE0\u1DE1\u1DE2\u1DE3\u1DE4\u1DE5\u1DE6\u1DFE\u1DFF\u20D0\u20D1\u20D2\u20D3\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC\u20E1\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB\u20EC\u20ED\u20EE\u20EF\u20F0\u2DE0\u2DE1\u2DE2\u2DE3\u2DE4\u2DE5\u2DE6\u2DE7\u2DE8\u2DE9\u2DEA\u2DEB\u2DEC\u2DED\u2DEE\u2DEF\u2DF0\u2DF1\u2DF2\u2DF3\u2DF4\u2DF5\u2DF6\u2DF7\u2DF8\u2DF9\u2DFA\u2DFB\u2DFC\u2DFD\u2DFE\u2DFF\u302A\u302B\u302C\u302D\u302E\u302F\u3099\u309A\uA66F\uA67C\uA67D\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA926\uA927\uA928\uA929\uA92A\uA92B\uA92C\uA92D\uA947\uA948\uA949\uA94A\uA94B\uA94C\uA94D\uA94E\uA94F\uA950\uA951\uAA29\uAA2A\uAA2B\uAA2C\uAA2D\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uFB1E\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E\uFE0F\uFE20\uFE21\uFE22\uFE23\uFE24\uFE25\uFE26/,
29
+ Mc:/\u0903\u093E\u093F\u0940\u0949\u094A\u094B\u094C\u0982\u0983\u09BE\u09BF\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E\u0A3F\u0A40\u0A83\u0ABE\u0ABF\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6\u0BC7\u0BC8\u0BCA\u0BCB\u0BCC\u0BD7\u0C01\u0C02\u0C03\u0C41\u0C42\u0C43\u0C44\u0C82\u0C83\u0CBE\u0CC0\u0CC1\u0CC2\u0CC3\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E\u0D3F\u0D40\u0D46\u0D47\u0D48\u0D4A\u0D4B\u0D4C\u0D57\u0D82\u0D83\u0DCF\u0DD0\u0DD1\u0DD8\u0DD9\u0DDA\u0DDB\u0DDC\u0DDD\u0DDE\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062\u1063\u1064\u1067\u1068\u1069\u106A\u106B\u106C\u106D\u1083\u1084\u1087\u1088\u1089\u108A\u108B\u108C\u108F\u17B6\u17BE\u17BF\u17C0\u17C1\u17C2\u17C3\u17C4\u17C5\u17C7\u17C8\u1923\u1924\u1925\u1926\u1929\u192A\u192B\u1930\u1931\u1933\u1934\u1935\u1936\u1937\u1938\u19B0\u19B1\u19B2\u19B3\u19B4\u19B5\u19B6\u19B7\u19B8\u19B9\u19BA\u19BB\u19BC\u19BD\u19BE\u19BF\u19C0\u19C8\u19C9\u1A19\u1A1A\u1A1B\u1B04\u1B35\u1B3B\u1B3D\u1B3E\u1B3F\u1B40\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1C24\u1C25\u1C26\u1C27\u1C28\u1C29\u1C2A\u1C2B\u1C34\u1C35\uA823\uA824\uA827\uA880\uA881\uA8B4\uA8B5\uA8B6\uA8B7\uA8B8\uA8B9\uA8BA\uA8BB\uA8BC\uA8BD\uA8BE\uA8BF\uA8C0\uA8C1\uA8C2\uA8C3\uA952\uA953\uAA2F\uAA30\uAA33\uAA34\uAA4D/,
30
+ Nd:/\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9\u07C0\u07C1\u07C2\u07C3\u07C4\u07C5\u07C6\u07C7\u07C8\u07C9\u0966\u0967\u0968\u0969\u096A\u096B\u096C\u096D\u096E\u096F\u09E6\u09E7\u09E8\u09E9\u09EA\u09EB\u09EC\u09ED\u09EE\u09EF\u0A66\u0A67\u0A68\u0A69\u0A6A\u0A6B\u0A6C\u0A6D\u0A6E\u0A6F\u0AE6\u0AE7\u0AE8\u0AE9\u0AEA\u0AEB\u0AEC\u0AED\u0AEE\u0AEF\u0B66\u0B67\u0B68\u0B69\u0B6A\u0B6B\u0B6C\u0B6D\u0B6E\u0B6F\u0BE6\u0BE7\u0BE8\u0BE9\u0BEA\u0BEB\u0BEC\u0BED\u0BEE\u0BEF\u0C66\u0C67\u0C68\u0C69\u0C6A\u0C6B\u0C6C\u0C6D\u0C6E\u0C6F\u0CE6\u0CE7\u0CE8\u0CE9\u0CEA\u0CEB\u0CEC\u0CED\u0CEE\u0CEF\u0D66\u0D67\u0D68\u0D69\u0D6A\u0D6B\u0D6C\u0D6D\u0D6E\u0D6F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\u0F20\u0F21\u0F22\u0F23\u0F24\u0F25\u0F26\u0F27\u0F28\u0F29\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099\u17E0\u17E1\u17E2\u17E3\u17E4\u17E5\u17E6\u17E7\u17E8\u17E9\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819\u1946\u1947\u1948\u1949\u194A\u194B\u194C\u194D\u194E\u194F\u19D0\u19D1\u19D2\u19D3\u19D4\u19D5\u19D6\u19D7\u19D8\u19D9\u1B50\u1B51\u1B52\u1B53\u1B54\u1B55\u1B56\u1B57\u1B58\u1B59\u1BB0\u1BB1\u1BB2\u1BB3\u1BB4\u1BB5\u1BB6\u1BB7\u1BB8\u1BB9\u1C40\u1C41\u1C42\u1C43\u1C44\u1C45\u1C46\u1C47\u1C48\u1C49\u1C50\u1C51\u1C52\u1C53\u1C54\u1C55\u1C56\u1C57\u1C58\u1C59\uA620\uA621\uA622\uA623\uA624\uA625\uA626\uA627\uA628\uA629\uA8D0\uA8D1\uA8D2\uA8D3\uA8D4\uA8D5\uA8D6\uA8D7\uA8D8\uA8D9\uA900\uA901\uA902\uA903\uA904\uA905\uA906\uA907\uA908\uA909\uAA50\uAA51\uAA52\uAA53\uAA54\uAA55\uAA56\uAA57\uAA58\uAA59\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19/,
31
+ Pc:/\u005F\u203F\u2040\u2054\uFE33\uFE34\uFE4D\uFE4E\uFE4F\uFF3F/};j.ECMA=ECMA={};(function(){var a=function(a){return a.source},i=[/$_/,d.Lu,d.Ll,d.Lt,d.Lm,d.Lo,d.Nl],l=i.concat([d.Nd,d.Mc,d.Mn,d.Pc]),i="["+i.map(a).join("")+"]",a="["+l.map(a).join("")+"]";ECMA.start=RegExp(i);ECMA.part=RegExp(a);ECMA.identifier=RegExp("^"+i+a+"*")})();(function(){var a,i;for(a in d)i=d[a].source,j[a]=RegExp("["+i+"]")})()};y["./compile"]=function(j){var d=n("./typeinference").typecheck,a=n("./macroexpand").macroexpand,
32
+ i=n("./modules").loadModule,l=n("./modules").exportType,e=n("./types"),g=n("./typeinference").nodeToType,b=n("./nodes").nodes,s=n("./parser").parser,w=n("./typeparser").parser,v=n("./lexer"),k=n("underscore");s.yy=w.yy=b;s.lexer=w.lexer={lex:function(){var a=this.tokens[this.pos]?this.tokens[this.pos++]:["EOF"];this.yytext=a[1];this.yylineno=a[2];return a[0]},setInput:function(a){this.tokens=a;this.pos=0},upcomingInput:function(){return""}};var q=function(a){return k.reduceRight(a,function(a,c){if(!a.body.length&&
33
+ c instanceof b.Comment)return a.comments.unshift(c),a;a.body.unshift(c);return a},{body:[],comments:[]})},r=0,m=function(a){a||(a=0);var b="",c;for(c=0;c<r+a;c++)b+=" ";return b},p=function(a,b){var c="\n"+m(b),f=a.join("\n"+m(b));return f?f+c:""},f=function(){r++;return m()},c=function(){r--;return m()},t=function(a,d,e){e||(e={});var h=function(a){return t(a,d)};return a.accept({visitFunction:function(){f();var b=q(a.body),d=k.map(a.whereDecls,h),e=k.map(b.body,h),i=[];0<d.length&&i.push(d.join(";\n"+
34
+ m())+";");1<e.length&&i.push(e.slice(0,e.length-1).join(";\n"+m())+";");d=e[e.length-1];e="";a.name&&(e="var "+a.name+" = ");var g="";b.comments.length&&(g=m()+k.map(b.comments,h).join("\n"+m())+"\n");return e+"function("+function(a){return k.map(a,function(a){return a.name}).join(", ")}(a.args)+") {\n"+m()+p(i)+"return "+d+";\n"+g+c()+"}"},visitIfThenElse:function(){var b=h(a.condition),d=function(a){return h(a)+";"},e=q(a.ifTrue),i=q(a.ifFalse);f();f();var g=p(k.map(e.body.slice(0,e.body.length-
35
+ 1),d)),l=h(e.body[e.body.length-1]),o="";e.comments.length&&(o=m()+k.map(e.comments,h).join("\n"+m())+"\n");var d=p(k.map(i.body.slice(0,i.body.length-1),d)),e=h(i.body[i.body.length-1]),t="";i.comments.length&&(t=m()+k.map(i.comments,h).join("\n"+m())+"\n");c();c();return"(function() {\n"+m(1)+"if("+b+") {\n"+m(2)+g+"return "+l+";\n"+o+m(1)+"} else {\n"+m(2)+d+"return "+e+";\n"+t+m(1)+"}\n"+m()+"})()"},visitLet:function(){return"var "+a.name+" = "+h(a.value)},visitAssignment:function(){return h(a.name)+
36
+ " = "+h(a.value)+";"},visitData:function(){return k.map(a.tags,h).join(";\n")},visitExpression:function(){return a.value instanceof b.Function||a.value instanceof b.Call?h(a.value):"("+h(a.value)+")"},visitReplacement:function(){return a.value},visitQuoted:function(){var b={visitReplacement:function(a){return"new nodes.Replacement("+h(a.value)+")"},visitIdentifier:function(a){return"new nodes.Identifier("+JSON.stringify(a.value)+")"},visitAccess:function(a){return"new nodes.Access("+c(a.value)+", "+
37
+ JSON.stringify(a.property)+")"},visitPropertyAccess:function(a){return"new nodes.PropertyAccess("+c(a.value)+", "+JSON.stringify(a.property)+")"},visitCall:function(a){return"new nodes.Call("+c(a.func)+", ["+k.map(a.args,c).join(", ")+"])"}},c=function(a){return a.accept(b)};return c(a.value)},visitReturn:function(){return"__monad__.return("+h(a.value)+");"},visitBind:function(){var b=a.rest.slice(0,a.rest.length-1),d=a.rest[a.rest.length-1];return"__monad__.bind("+h(a.value)+", function("+a.name+
38
+ ") {\n"+f()+k.map(b,h).join(";\n"+m())+"\n"+m()+"return "+h(d)+"\n"+c()+"});"},visitDo:function(){var d=[],e,i,g=0;k.each(a.body,function(c,f){c instanceof b.Bind?(i?i.rest=a.body.slice(g+1,f+1):e=c,g=f,i=c):i||d.push(h(c))});i&&(i.rest=a.body.slice(g+1));return"(function(){\n"+f()+"var __monad__ = "+h(a.value)+";\n"+m()+(!e?"return ":"")+d.join("\n"+m())+(e?"return "+h(e):"")+"\n"+c()+"})()"},visitTag:function(){var b=k.map(a.vars,function(a,b){return a.value+"_"+b}),d=k.map(b,function(a,b){return"this._"+
39
+ b+" = "+a});f();var e="if(!(this instanceof "+a.name+")) {\n"+m(1)+"return new "+a.name+"("+b.join(", ")+");\n"+m()+"}",d=0===d.length?"":"\n"+m()+d.join(";\n"+m())+";";c();return"var "+a.name+" = function("+b.join(", ")+") {\n"+m(1)+e+d+m()+"\n}"},visitMatch:function(){var b=k.map(a.cases,function(b){var c=function(b,f){return k.flatten(k.map(b.vars,function(b,d){var e=f.slice();e.push(d);return b.accept({visitIdentifier:function(){if("_"==b.value)return[];var c=k.map(e,function(a){return"._"+a}).join("");
40
+ return["var "+b.value+" = "+h(a.value)+c+";"]},visitPattern:function(){return c(b,e)}})}))},f=c(b.pattern,[]),d=function(a,b){return k.flatten(k.map(a.vars,function(a,c){var f=b.slice();f.push(c);return a.accept({visitIdentifier:function(){return[]},visitPattern:function(){var b=d(a,f);b.unshift({path:f,tag:a.tag});return b}})}))},e=d(b.pattern,[]),i=h(a.value),g=k.map(e,function(a){return" && "+i+"._"+a.path.join("._")+" instanceof "+a.tag.value}).join(""),e=k.max(e,function(a){return a.path.length});
41
+ return{path:e?e.path:[],condition:"if("+i+" instanceof "+b.pattern.tag.value+g+") {\n"+m(2)+p(f,2)+"return "+h(b.value)+";\n"+m(1)+"}"}}),b=k.map(k.sortBy(b,function(a){return-a.path.length}),function(a){return a.condition});return"(function() {\n"+m(1)+b.join(" else ")+"\n"+m()+"})()"},visitCall:function(){return"import"==a.func.value?D(JSON.parse(a.args[0].value),d,e):h(a.func)+"("+k.map(a.args,h).join(", ")+")"},visitPropertyAccess:function(){return h(a.value)+"."+a.property},visitAccess:function(){return h(a.value)+
42
+ "["+h(a.property)+"]"},visitBinaryGenericOperator:function(){return[h(a.left),a.name,h(a.right)].join(" ")},visitBinaryNumberOperator:function(){return[h(a.left),a.name,h(a.right)].join(" ")},visitBinaryBooleanOperator:function(){return[h(a.left),a.name,h(a.right)].join(" ")},visitBinaryStringOperator:function(){return[h(a.left),a.name,h(a.right)].join(" ")},visitWith:function(){var b=h(a.left)+", "+h(a.right),c=k.map(["__l__","__r__"],function(a){return"for(__n__ in "+a+") {\n"+m(2)+"__o__[__n__] = "+
43
+ a+"[__n__];\n"+m(1)+"}"});return p(["(function(__l__, __r__) {","var __o__ = {}, __n__;"],1)+p(c,1)+"return __o__;\n"+m()+"})("+b+")"},visitComment:function(){return a.value},visitIdentifier:function(){return a.value},visitNumber:function(){return a.value},visitString:function(){return a.value},visitBoolean:function(){return a.value},visitUnit:function(){return"null"},visitArray:function(){return"["+k.map(a.values,h).join(", ")+"]"},visitTuple:function(){return"["+k.map(a.values,h).join(", ")+"]"},
44
+ visitObject:function(){var b,d=[];f();for(b in a.values)d.push('"'+b+'": '+h(a.values[b]));return"{\n"+m()+d.join(",\n"+m())+"\n"+c()+"}"}})};j.compileNodeWithEnv=t;var o=function(c,f,e,h){f||(f={});e||(e={});h||(h={});h.exported||(h.exported={});var c=v.tokenise(c),c=s.parse(c),c=a(c,f,h),e=d(c,f,e),c=k.map(c,function(a){return a instanceof b.Call&&a.func.value=="export"?l(a.args[0],f,h.exported,h.nodejs):a}),i=[];h.nodejs||i.push("(function() {");h.strict&&i.push('"use strict";');k.each(c,function(a){var c=
45
+ t(a,f,h);c&&i.push(c+(a instanceof b.Comment?"":";"))});h.nodejs||i.push("})();");i.push("");return{type:e,output:i.join("\n")}};j.compile=o;var h=function(){var a={require:n,exports:j},b;for(b in global)a[b]=global[b];return a},C=function(a){var b=n("path"),c=k.map(["",".roy",".lroy"],function(b){return a+b}),f;/\..+$/.test(a)?(f=fs.readFileSync(a,"utf8"),c=[a]):f=k.find(c,function(a){return b.existsSync(a)});if(null==f)throw Error("File(s) not found: "+c.join(", "));return f},A=function(a){var b=
46
+ n("readline"),c=n("path"),f=n("vm"),d=n("./prettyprint").prettyPrint,e=process.stdout,i=process.openStdin(),g=b.createInterface(i,e),l={},t={},k={},m=h(),p=function(b){var c=[].slice.call(arguments,1);a.colorConsole&&(c[0]="\u001b["+b+"m"+c[0],c[c.length-1]+="\u001b[0m");console.log.apply(console,c)},b=n("fs").readFileSync(c.dirname(__dirname)+"/lib/prelude.roy","utf8");f.runInNewContext(o(b,l).output,m,"eval");g.setPrompt("roy> ");g.on("close",function(){i.destroy()});g.on("line",function(a){var b,
47
+ c,e,h,i,u,j=a.replace(/^\s+/,"").split(" ");try{switch(j[0]){case ":q":process.exit();break;case ":l":e=j[1];h=C(e);b=o(h,l,k,{nodejs:!0,filename:".",run:!0});break;case ":t":j[1]in l?console.log(l[j[1]].toString()):p(33,j[1],"is not defined.");break;case ":s":t[j[1]]?p(33,j[1],"=",d(t[j[1]])):j[1]?p(33,j[1],"is not defined."):(console.log("Usage :s command "),console.log(":s [identifier] :: show original code about identifier."));break;case ":?":p(32,"Commands available from the prompt");console.log(":l -- load and run an external file");
48
+ console.log(":q -- exit REPL");console.log(":s -- show original code about identifier");console.log(":t -- show the type of the identifier");console.log(":? -- show help");break;default:i=v.tokenise(a),u=s.parse(i),u[0].accept({visitLet:function(a){t[a.name]=a.value}}),b=o(a,l,k,{nodejs:!0,filename:".",run:!0})}b&&(c=f.runInNewContext(b.output,m,"eval"),"undefined"!=typeof c&&p(32,("object"==typeof c?JSON.stringify(c):c)+" : "+b.type))}catch(n){p(31,n.stack||n.toString())}g.prompt()});g.prompt()},
49
+ E=function(a,b,c){a=n("fs");b=k.map(b,function(a,b){return a instanceof e.TagType?"type "+a.toString().replace(/#/g,""):b+": "+a.toString()}).join("\n")+"\n";a.writeFile(c,b,"utf8")},D=function(a,b,c){var f=function(a){k.each(a,function(a,c){var f=[new e.TagNameType(c)];k.each(function(){f.push(new e.Variable)});b[c]=new e.TagType(f)})};if(c.nodejs){if(c.run)var d=n("path"),a=d.resolve(d.dirname(c.filename),a);c=i(a,c);f(c.types);f=a.substr(a.lastIndexOf("/")+1);b[f]=new e.Variable;var h={};k.each(c.env,
50
+ function(a,c){h[c]=g(a,b,{})});b[f]=new e.ObjectType(h);console.log("Using sync CommonJS module:",a);return f+" = require("+JSON.stringify(a)+")"}c=i(a,c);f(c.types);k.each(c.env,function(a,c){b[c]=g(a,b,{})});console&&console.log("Using browser module:",a);return""},w=function(){var a=process.argv.slice(2),b={colorConsole:!1},c=n("fs"),f=n("path"),d=JSON.parse(c.readFileSync(f.dirname(__dirname)+"/package.json","utf8"));if(3>process.argv.length)console.log("Roy: "+d.description),console.log(d.author),
51
+ console.log(":? for help"),A(b);else{var l,t,m=!1,p=!1,C=!0;switch(a[0]){case "-v":case "--version":console.log("Roy: "+d.description);console.log(d.version);process.exit();break;case "--help":case "-h":console.log("Roy: "+d.description+"\n");console.log("-v : show current version");console.log("-r [file] : run Roy-code without JavaScript output");console.log("-p : run without prelude (standard library)");console.log("-c : colorful REPL mode");console.log("-h : show this help");
52
+ return;case "--stdio":l="";process.stdin.resume();process.stdin.setEncoding("utf8");process.stdin.on("data",function(a){l+=a});process.stdin.on("end",function(){console.log(o(l).output)});return;case "-p":C=!1;case "-r":t=n("vm");p=!0;a.shift();break;case "-b":case "--browser":m=!0;a.shift();break;case "-c":case "--color":b.colorConsole=!0;A(b);return}var s=/\.l?roy$/,j=/\.lroy$/,q,r={},w={},D=h();p?C&&a.unshift(f.dirname(__dirname)+"/lib/prelude.roy"):(b=[],(!a.length||"lib/prelude.roy"!=a[0])&&
53
+ b.push(f.dirname(__dirname)+"/lib/prelude"),k.each(b,function(a){a=i(a,{filename:"."});k.each(a.env,function(a,b){r[b]=new e.Variable;r[b]=g(a,r,w)})}));k.each(a,function(a){var b=c.readFileSync(a,"utf8");a.match(j)?b=b.match(/^ {4,}.+$/mg).join("\n").replace(/^ {4}/gm,""):console.assert(a.match(s),'Filename must end with ".roy" or ".lroy"');q={};b=o(b,r,w,{nodejs:!m,filename:a,run:p,exported:q});p?output=t.runInNewContext(b.output,D,"eval"):c.writeFile(a.replace(s,".js"),b.output,"utf8");E(r,q,a.replace(s,
54
+ ".roym"))})}};j.main=w;j&&!z.parent&&w()};y["./lexer"]=function(j){var d=n("unicode-categories"),a=RegExp(d.ECMA.identifier.source.replace("\\u03BB","")),i=/^-?[0-9]+(\.[0-9]+)?/,l=/^\/\/.*/,e=/^[^\n\S]+/,g=/^(?:\n[^\n\S]*)+/,b=/^#([a-z]+)/,s,w,v,k,q,r={where:!0},m=function(){var a=s.slice(0,1),b;switch(a){case "<":b=s.slice(0,2);if("<-"==b)return k.push(["LEFTARROW",b,q]),2;if("<<"==b)return k.push(["MATH",b,q]),2;k.push(["COMPARE",a,q]);return 1;case ">":b=s.slice(0,2);if(">>"==b)return k.push(["MATH",
55
+ b,q]),2;k.push(["COMPARE",a,q]);return 1;case "=":b=s.slice(0,2);if("=="==b)return k.push(["COMPARE",b,q]),2;k.push([a,a,q]);return 1;case "!":b=s.slice(0,2);if("!="==b)return k.push(["COMPARE",b,q]),2;k.push([a,a,q]);return 1;case "*":case "/":case "%":return k.push(["MATH",a,q]),1;case "[":case "|":b=s.slice(0,2);switch(b){case "[|":case "|]":return k.push([b,b,q]),2;case "||":return k.push(["BOOLOP",b,q]),2}k.push([a,a,q]);return 1;case ")":return"TERMINATOR"==k[k.length-1][0]&&k.pop(),k.push([a,
56
+ a,q]),1;case "+":b=s.slice(0,2);if("++"==b)return k.push(["CONCAT",a,q]),2;k.push([a,a,q]);return 1;case "-":b=s.slice(0,2);if("->"==b)return k.push(["RIGHTARROW",b,q]),2;k.push([a,a,q]);return 1;case "&":b=s.slice(0,2);if("&&"==b)return k.push(["BOOLOP",b,q]),2;k.push([a,a,q]);return 1;case "\u03bb":case "\\":return k.push(["LAMBDA",a,q]),1;case "\u2190":return k.push(["LEFTARROW",a,q]),1;case "\u2192":return k.push(["RIGHTARROW",a,q]),1;case "\u21d2":return k.push(["RIGHTFATARROW",a,q]),1;case "]":case ":":case ".":case ",":case "{":case "}":case "(":return k.push([a,
57
+ a,q]),1}return 0};j.tokenise=function(d){w=0;v=[];k=[];q=1;for(var f=0;s=d.slice(f);){var c;var t=c=void 0,o=a.exec(s);if(o){c=o[0];switch(c){case "true":case "false":t="BOOLEAN";break;case "Function":case "let":case "if":case "then":case "else":case "data":case "type":case "match":case "case":case "do":case "return":case "macro":case "with":case "where":t=c.toUpperCase();break;default:t="IDENTIFIER"}k.push([t,c,q]);c=o[0].length}else c=0;if(!c&&((c=i.exec(s))?(k.push(["NUMBER",c[0],q]),c=c[0].length):
58
+ c=0,!c)){a:{c=s.charAt(0);t=!1;o=void 0;if('"'==c||"'"==c)for(var h=1;h<s.length;h++)if(t)t=!1;else if(o=s.charAt(h),"\\"==o)t=!0;else if(o==c){k.push(["STRING",s.substring(0,h+1),q]);c=h+1;break a}c=0}if(!c&&((c=b.exec(s))?(k.push(["GENERIC",c[1],q]),c=c[0].length):c=0,!c))if((c=l.exec(s))?(k.push(["COMMENT",c[0],q]),c=c[0].length):c=0,!c)if(c=e.exec(s),!(c=c?c[0].length:0)){if(c=g.exec(s)){t=c[0].lastIndexOf("\n")+1;o=c[0].length-t;if(o>w)v.push(o),k.push(["INDENT",o-w,q]);else{if(o<w)for(h=v[v.length-
59
+ 1];o<h;)k.push(["OUTDENT",h-o,q]),v.pop(),h=v[v.length-1];0<k.length&&(h=a.exec(s.slice(c[0].length)),(!h||!r[h[0]])&&k.push(["TERMINATOR",c[0].substring(0,t),q]))}w=o;c=c[0].length}else c=0;c=c||m()}}if(!c)throw"Couldn't tokenise: "+s.substring(0,-1<s.indexOf("\n")?s.indexOf("\n"):s.length);q+=d.slice(f,f+c).split("\n").length-1;f+=c}k.push(["EOF","",q]);return k};z.parent||(j.tokenise("// Testing\n \nlet x =\n 8\n if true then 10 else 100\n if true then\n false\n else\n true\n // Inner comment\n console.log 10 * 20\n console.log [1, 2, 3].length\n true\nconsole.log 'example'"),
60
+ console.log(k))};y["./nodes"]=function(j){j.nodes={Expression:function(d){this.value=d;this.accept=function(a){if(a.visitExpression)return a.visitExpression(this)}},Arg:function(d,a){this.name=d;this.type=a;this.accept=function(a){if(a.visitArg)return a.visitArg(this)}},Function:function(d,a,i,l,e){this.name=d;this.args=a;this.body=i;this.type=l;this.whereDecls=e||[];this.accept=function(a){if(a.visitFunction)return a.visitFunction(this)}},Data:function(d,a,i){this.name=d;this.args=a;this.tags=i;
61
+ this.accept=function(a){if(a.visitData)return a.visitData(this)}},Type:function(d,a){this.name=d;this.value=a;this.accept=function(a){if(a.visitType)return a.visitType(this)}},Generic:function(d){this.value=d;this.accept=function(a){if(a.visitGeneric)return a.visitGeneric(this)}},TypeFunction:function(d){this.args=d;this.accept=function(a){if(a.visitTypeFunction)return a.visitTypeFunction(this)}},TypeName:function(d,a){this.value=d;this.args=a;this.accept=function(a){if(a.visitTypeName)return a.visitTypeName(this)}},
62
+ TypeObject:function(d){this.values=d;this.accept=function(a){if(a.visitTypeObject)return a.visitTypeObject(this)}},TypeArray:function(d){this.value=d;this.accept=function(a){if(a.visitTypeArray)return a.visitTypeArray(this)}},Return:function(d){this.value=d;this.accept=function(a){if(a.visitReturn)return a.visitReturn(this)}},Bind:function(d,a){this.name=d;this.value=a;this.rest=[];this.accept=function(a){if(a.visitBind)return a.visitBind(this)}},Do:function(d,a){this.value=d;this.body=a;this.accept=
63
+ function(a){if(a.visitDo)return a.visitDo(this)}},Match:function(d,a){this.value=d;this.cases=a;this.accept=function(a){if(a.visitMatch)return a.visitMatch(this)}},Case:function(d,a){this.pattern=d;this.value=a;this.accept=function(a){if(a.visitCase)return a.visitCase(this)}},Tag:function(d,a){this.name=d;this.vars=a;this.accept=function(a){if(a.visitTag)return a.visitTag(this)}},Pattern:function(d,a){this.tag=d;this.vars=a;this.accept=function(a){if(a.visitPattern)return a.visitPattern(this)}},Assignment:function(d,
64
+ a){this.name=d;this.value=a;this.accept=function(a){if(a.visitAssignment)return a.visitAssignment(this)}},Let:function(d,a,i){this.name=d;this.value=a;this.type=i;this.accept=function(a){if(a.visitLet)return a.visitLet(this)}},Call:function(d,a){this.func=d;this.args=a;this.accept=function(a){if(a.visitCall)return a.visitCall(this)}},IfThenElse:function(d,a,i){this.condition=d;this.ifTrue=a;this.ifFalse=i;this.accept=function(a){if(a.visitIfThenElse)return a.visitIfThenElse(this)}},Comment:function(d){this.value=
65
+ d;this.accept=function(a){if(a.visitComment)return a.visitComment(this)}},PropertyAccess:function(d,a){this.value=d;this.property=a;this.accept=function(a){if(a.visitPropertyAccess)return a.visitPropertyAccess(this)}},Access:function(d,a){this.value=d;this.property=a;this.accept=function(a){if(a.visitAccess)return a.visitAccess(this)}},BinaryGenericOperator:function(d,a,i){this.name=d;this.left=a;this.right=i;this.accept=function(a){if(a.visitBinaryGenericOperator)return a.visitBinaryGenericOperator(this)}},
66
+ BinaryNumberOperator:function(d,a,i){this.name=d;this.left=a;this.right=i;this.accept=function(a){if(a.visitBinaryNumberOperator)return a.visitBinaryNumberOperator(this)}},BinaryBooleanOperator:function(d,a,i){this.name=d;this.left=a;this.right=i;this.accept=function(a){if(a.visitBinaryBooleanOperator)return a.visitBinaryBooleanOperator(this)}},BinaryStringOperator:function(d,a,i){this.name=d;this.left=a;this.right=i;this.accept=function(a){if(a.visitBinaryStringOperator)return a.visitBinaryStringOperator(this)}},
67
+ With:function(d,a){this.left=d;this.right=a;this.accept=function(a){if(a.visitWith)return a.visitWith(this)}},Replacement:function(d){this.value=d;this.accept=function(a){if(a.visitReplacement)return a.visitReplacement(this)}},Macro:function(d,a){this.name=d;this.body=a;this.accept=function(a){if(a.visitMacro)return a.visitMacro(this)}},Quoted:function(d){this.value=d;this.accept=function(a){if(a.visitQuoted)return a.visitQuoted(this)}},Identifier:function(d){this.value=d;this.accept=function(a){if(a.visitIdentifier)return a.visitIdentifier(this)}},
68
+ Tuple:function(d){this.values=d;this.accept=function(a){if(a.visitTuple)return a.visitTuple(this)}},Number:function(d){this.value=d;this.accept=function(a){if(a.visitNumber)return a.visitNumber(this)}},String:function(d){this.value=d;this.accept=function(a){if(a.visitString)return a.visitString(this)}},Boolean:function(d){this.value=d;this.accept=function(a){if(a.visitBoolean)return a.visitBoolean(this)}},Array:function(d){this.values=d;this.accept=function(a){if(a.visitArray)return a.visitArray(this)}},
69
+ Object:function(d){this.values=d;this.accept=function(a){if(a.visitObject)return a.visitObject(this)}}}};y["./modules"]=function(j){var d=n("./lexer"),a=n("./typeparser").parser,i=n("./nodes").nodes,l=n("./types"),e=n("underscore"),g=function(a,d){var g=n("path");if(e.any(["/","./","../"],function(d){return 0==a.indexOf(d)}))return g.resolve(g.dirname(d),a);var i=n.resolve(a);return g.join(g.dirname(i),g.basename(i,".js"))};j.loadModule=function(b,e){e.modules||(e.modules={});var i=e.modules[b]||
70
+ "";if(!i&&e.nodejs){var l=n("path"),k=g(b,e.filename)+".roym";l.existsSync(k)&&(i=n("fs").readFileSync(k,"utf8"))}i=d.tokenise(i);return a.parse(i)};j.exportType=function(a,d,e,g){var k=a.value;e[k]=d[k];return d[k]instanceof l.TagType?new i.Comment("// Exported type: "+k):new i.Assignment(new i.Access(new i.Identifier(g?"exports":"this"),new i.String(JSON.stringify(k))),a)}};y["./macroexpand"]=function(j){n("./nodes");var d=n("underscore"),a={};j.macroexpand=function(i,l){var e=n("./compile").compileNodeWithEnv;
71
+ return d.map(i,function(g){return g.accept({visitMacro:function(){var b=g.body.slice(0,g.body.length-1),i=g.body[g.body.length-1],b=d.map(b,function(a){return e(a,l)}).join("\n")+"\nreturn "+e(i,l)+";";a[g.name]=b},visitCall:function(){if(a[g.func.value])return(new Function(a[g.func.value])).apply({},g.args)}})||g})}};y["./typeparser"]=function(j){var d=function(){void 0;return{trace:function(){},yy:{},symbols_:{error:2,typefile:3,EOF:4,body:5,pair:6,TERMINATOR:7,IDENTIFIER:8,":":9,type:10,TYPE:11,
72
+ optDataParamList:12,optTypeParamList:13,FUNCTION:14,"(":15,optTypeFunctionArgList:16,")":17,GENERIC:18,"[":19,"]":20,typeList:21,"{":22,optTypePairs:23,"}":24,",":25,typeParamList:26,typeFunctionArgList:27,keywordOrIdentifier:28,dataParamList:29,THEN:30,ELSE:31,DATA:32,MATCH:33,CASE:34,DO:35,RETURN:36,MACRO:37,WITH:38,WHERE:39,$accept:0,$end:1},terminals_:{2:"error",4:"EOF",7:"TERMINATOR",8:"IDENTIFIER",9:":",11:"TYPE",14:"FUNCTION",15:"(",17:")",18:"GENERIC",19:"[",20:"]",22:"{",24:"}",25:",",30:"THEN",
73
+ 31:"ELSE",32:"DATA",33:"MATCH",34:"CASE",35:"DO",36:"RETURN",37:"MACRO",38:"WITH",39:"WHERE"},productions_:[0,[3,1],[3,2],[5,1],[5,3],[5,2],[6,3],[6,3],[10,2],[10,4],[10,1],[10,3],[10,3],[10,3],[21,1],[21,3],[13,0],[13,1],[26,1],[26,1],[26,3],[26,2],[26,2],[26,4],[16,0],[16,1],[27,1],[27,3],[23,0],[23,3],[23,5],[29,1],[29,2],[12,0],[12,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1]],performAction:function(a,d,l,e,g,b){a=b.length-1;switch(g){case 1:return{};
74
+ case 2:return b[a-1];case 3:this.$={types:{},env:{}};b[a].data?this.$.types[b[a].name]=b[a].params:this.$.env[b[a].name]=b[a].type;break;case 4:this.$=b[a-2];b[a].data?this.$.types[b[a].name]=b[a].params:this.$.env[b[a].name]=b[a].type;break;case 5:this.$=b[a-1];break;case 6:this.$={name:b[a-2],type:b[a],data:!1};break;case 7:this.$={name:b[a-1],params:b[a],data:!0};break;case 8:this.$=new e.TypeName(b[a-1],b[a]);break;case 9:this.$=new e.TypeFunction(b[a-1]);break;case 10:this.$=new e.Generic(b[a]);
75
+ break;case 11:this.$=new e.TypeArray(b[a-1]);break;case 12:this.$=new e.TypeObject(b[a-1]);break;case 13:this.$=new e.TypeObject(b[a-1]);break;case 14:this.$=[b[a]];break;case 15:this.$=b[a-2];b[a-2].push(b[a]);break;case 16:this.$=[];break;case 17:this.$=b[a];break;case 18:this.$=[new e.TypeName(b[a],[])];break;case 19:this.$=[new e.Generic(b[a],[])];break;case 20:this.$=[b[a-1]];break;case 21:this.$=b[a-1];b[a-1].push(new e.TypeName(b[a],[]));break;case 22:this.$=b[a-1];b[a-1].push(new e.Generic(b[a],
76
+ []));break;case 23:this.$=b[a-3];b[a-3].push(b[a-1]);break;case 24:this.$=[];break;case 25:this.$=b[a];break;case 26:this.$=[b[a]];break;case 27:this.$=b[a-2];b[a-2].push(b[a]);break;case 28:this.$={};break;case 29:this.$={};this.$[b[a-2]]=b[a];break;case 30:this.$=b[a-4];b[a-4][b[a-2]]=b[a];break;case 31:this.$=[new e.Arg(b[a])];break;case 32:this.$=b[a-1];b[a-1].push(new e.Arg(b[a]));break;case 33:this.$=[];break;case 34:this.$=b[a];break;case 35:this.$=b[a];break;case 36:this.$=b[a];break;case 37:this.$=
77
+ b[a];break;case 38:this.$=b[a];break;case 39:this.$=b[a];break;case 40:this.$=b[a];break;case 41:this.$=b[a];break;case 42:this.$=b[a];break;case 43:this.$=b[a];break;case 44:this.$=b[a];break;case 45:this.$=b[a];break;case 46:this.$=b[a]}},table:[{3:1,4:[1,2],5:3,6:4,8:[1,5],11:[1,6]},{1:[3]},{1:[2,1]},{4:[1,7],7:[1,8]},{4:[2,3],7:[2,3]},{9:[1,9]},{8:[1,10]},{1:[2,2]},{4:[2,5],6:11,7:[2,5],8:[1,5],11:[1,6]},{8:[1,13],10:12,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{4:[2,33],7:[2,33],8:[1,
78
+ 21],12:19,29:20},{4:[2,4],7:[2,4]},{4:[2,6],7:[2,6]},{4:[2,16],7:[2,16],8:[1,24],13:22,15:[1,26],17:[2,16],18:[1,25],20:[2,16],24:[2,16],25:[2,16],26:23},{15:[1,27]},{4:[2,10],7:[2,10],17:[2,10],20:[2,10],24:[2,10],25:[2,10]},{8:[1,13],10:28,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{8:[1,13],10:30,14:[1,14],15:[1,17],18:[1,15],19:[1,16],21:29,22:[1,18]},{8:[1,44],11:[1,36],23:31,24:[2,28],25:[2,28],28:32,30:[1,33],31:[1,34],32:[1,35],33:[1,37],34:[1,38],35:[1,39],36:[1,40],37:[1,41],38:[1,
79
+ 42],39:[1,43]},{4:[2,7],7:[2,7]},{4:[2,34],7:[2,34],8:[1,45]},{4:[2,31],7:[2,31],8:[2,31]},{4:[2,8],7:[2,8],17:[2,8],20:[2,8],24:[2,8],25:[2,8]},{4:[2,17],7:[2,17],8:[1,46],15:[1,48],17:[2,17],18:[1,47],20:[2,17],24:[2,17],25:[2,17]},{4:[2,18],7:[2,18],8:[2,18],15:[2,18],17:[2,18],18:[2,18],20:[2,18],24:[2,18],25:[2,18]},{4:[2,19],7:[2,19],8:[2,19],15:[2,19],17:[2,19],18:[2,19],20:[2,19],24:[2,19],25:[2,19]},{8:[1,13],10:49,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{8:[1,13],10:52,14:[1,
80
+ 14],15:[1,17],16:50,17:[2,24],18:[1,15],19:[1,16],22:[1,18],27:51},{20:[1,53]},{17:[1,54],25:[1,55]},{17:[2,14],25:[2,14]},{24:[1,56],25:[1,57]},{9:[1,58]},{9:[2,35]},{9:[2,36]},{9:[2,37]},{9:[2,38]},{9:[2,39]},{9:[2,40]},{9:[2,41]},{9:[2,42]},{9:[2,43]},{9:[2,44]},{9:[2,45]},{9:[2,46]},{4:[2,32],7:[2,32],8:[2,32]},{4:[2,21],7:[2,21],8:[2,21],15:[2,21],17:[2,21],18:[2,21],20:[2,21],24:[2,21],25:[2,21]},{4:[2,22],7:[2,22],8:[2,22],15:[2,22],17:[2,22],18:[2,22],20:[2,22],24:[2,22],25:[2,22]},{8:[1,
81
+ 13],10:59,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{17:[1,60]},{17:[1,61]},{17:[2,25],25:[1,62]},{17:[2,26],25:[2,26]},{4:[2,11],7:[2,11],17:[2,11],20:[2,11],24:[2,11],25:[2,11]},{4:[2,12],7:[2,12],17:[2,12],20:[2,12],24:[2,12],25:[2,12]},{8:[1,13],10:63,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{4:[2,13],7:[2,13],17:[2,13],20:[2,13],24:[2,13],25:[2,13]},{8:[1,44],11:[1,36],28:64,30:[1,33],31:[1,34],32:[1,35],33:[1,37],34:[1,38],35:[1,39],36:[1,40],37:[1,41],38:[1,42],39:[1,43]},
82
+ {8:[1,13],10:65,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{17:[1,66]},{4:[2,20],7:[2,20],8:[2,20],15:[2,20],17:[2,20],18:[2,20],20:[2,20],24:[2,20],25:[2,20]},{4:[2,9],7:[2,9],17:[2,9],20:[2,9],24:[2,9],25:[2,9]},{8:[1,13],10:67,14:[1,14],15:[1,17],18:[1,15],19:[1,16],22:[1,18]},{17:[2,15],25:[2,15]},{9:[1,68]},{24:[2,29],25:[2,29]},{4:[2,23],7:[2,23],8:[2,23],15:[2,23],17:[2,23],18:[2,23],20:[2,23],24:[2,23],25:[2,23]},{17:[2,27],25:[2,27]},{8:[1,13],10:69,14:[1,14],15:[1,17],18:[1,15],
83
+ 19:[1,16],22:[1,18]},{24:[2,30],25:[2,30]}],defaultActions:{2:[2,1],7:[2,2],33:[2,35],34:[2,36],35:[2,37],36:[2,38],37:[2,39],38:[2,40],39:[2,41],40:[2,42],41:[2,43],42:[2,44],43:[2,45],44:[2,46]},parseError:function(a){throw Error(a);},parse:function(a){function d(){var a;a=l.lexer.lex()||1;"number"!==typeof a&&(a=l.symbols_[a]||a);return a}var l=this,e=[0],g=[null],b=[],j=this.table,n="",v=0,k=0,q=0;this.lexer.setInput(a);this.lexer.yy=this.yy;this.yy.lexer=this.lexer;"undefined"==typeof this.lexer.yylloc&&
84
+ (this.lexer.yylloc={});a=this.lexer.yylloc;b.push(a);"function"===typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var r,m,p,f,c={},t,o;;){p=e[e.length-1];this.defaultActions[p]?f=this.defaultActions[p]:(null==r&&(r=d()),f=j[p]&&j[p][r]);if("undefined"===typeof f||!f.length||!f[0]){if(!q){m=[];for(t in j[p])this.terminals_[t]&&2<t&&m.push("'"+this.terminals_[t]+"'");var h="",h=this.lexer.showPosition?"Parse error on line "+(v+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+m.join(", ")+
85
+ ", got '"+this.terminals_[r]+"'":"Parse error on line "+(v+1)+": Unexpected "+(1==r?"end of input":"'"+(this.terminals_[r]||r)+"'");this.parseError(h,{text:this.lexer.match,token:this.terminals_[r]||r,line:this.lexer.yylineno,loc:a,expected:m})}if(3==q){if(1==r)throw Error(h||"Parsing halted.");k=this.lexer.yyleng;n=this.lexer.yytext;v=this.lexer.yylineno;a=this.lexer.yylloc;r=d()}for(;!((2).toString()in j[p]);){if(0==p)throw Error(h||"Parsing halted.");e.length-=2;g.length-=1;b.length-=1;p=e[e.length-
86
+ 1]}m=r;r=2;p=e[e.length-1];f=j[p]&&j[p][2];q=3}if(f[0]instanceof Array&&1<f.length)throw Error("Parse Error: multiple actions possible at state: "+p+", token: "+r);switch(f[0]){case 1:e.push(r);g.push(this.lexer.yytext);b.push(this.lexer.yylloc);e.push(f[1]);r=null;m?(r=m,m=null):(k=this.lexer.yyleng,n=this.lexer.yytext,v=this.lexer.yylineno,a=this.lexer.yylloc,0<q&&q--);break;case 2:o=this.productions_[f[1]][1];c.$=g[g.length-o];c._$={first_line:b[b.length-(o||1)].first_line,last_line:b[b.length-
87
+ 1].last_line,first_column:b[b.length-(o||1)].first_column,last_column:b[b.length-1].last_column};p=this.performAction.call(c,n,k,v,this.yy,f[1],g,b);if("undefined"!==typeof p)return p;o&&(e=e.slice(0,-2*o),g=g.slice(0,-1*o),b=b.slice(0,-1*o));e.push(this.productions_[f[1]][0]);g.push(c.$);b.push(c._$);f=j[e[e.length-2]][e[e.length-1]];e.push(f);break;case 3:return!0}}return!0}}}();"undefined"!==typeof n&&"undefined"!==typeof j&&(j.parser=d,j.parse=function(){return d.parse.apply(d,arguments)},j.main=
88
+ function(a){if(!a[1])throw Error("Usage: "+a[0]+" FILE");a="undefined"!==typeof process?n("fs").readFileSync(n("path").join(process.cwd(),a[1]),"utf8"):n("file").path(n("file").cwd()).join(a[1]).read({charset:"utf-8"});return j.parser.parse(a)},"undefined"!==typeof z&&n.main===z&&j.main("undefined"!==typeof process?process.argv.slice(1):n("system").args))};y["./parser"]=function(j){var d=function(){void 0;return{trace:function(){},yy:{},symbols_:{error:2,program:3,EOF:4,body:5,line:6,TERMINATOR:7,
89
+ statement:8,expression:9,COMMENT:10,block:11,INDENT:12,outdentOrEof:13,doBody:14,doLine:15,IDENTIFIER:16,LEFTARROW:17,RETURN:18,doBlock:19,letFunction:20,letBinding:21,dataDecl:22,typeDecl:23,macro:24,innerExpression:25,LAMBDA:26,paramList:27,optType:28,RIGHTARROW:29,MATCH:30,caseList:31,DO:32,ifThenElse:33,callArgument:34,"(":35,")":36,"&":37,"[|":38,"|]":39,accessor:40,"!":41,MATH:42,CONCAT:43,"+":44,"-":45,BOOLOP:46,COMPARE:47,WITH:48,literal:49,call:50,CASE:51,pattern:52,"=":53,innerPattern:54,
90
+ identifier:55,patternIdentifiers:56,IF:57,THEN:58,ELSE:59,DATA:60,optDataParamList:61,dataList:62,optTypeParamList:63,"|":64,TYPE:65,type:66,FUNCTION:67,optTypeFunctionArgList:68,GENERIC:69,"[":70,"]":71,typeList:72,"{":73,optTypePairs:74,"}":75,",":76,typeParamList:77,typeFunctionArgList:78,keywordOrIdentifier:79,":":80,dataParamList:81,MACRO:82,LET:83,optWhere:84,param:85,WHERE:86,whereDecls:87,whereDecl:88,argList:89,tuple:90,tupleList:91,NUMBER:92,STRING:93,BOOLEAN:94,optValues:95,optPairs:96,
91
+ arrayValues:97,keyPairs:98,OUTDENT:99,optTerm:100,".":101,$accept:0,$end:1},terminals_:{2:"error",4:"EOF",7:"TERMINATOR",10:"COMMENT",12:"INDENT",16:"IDENTIFIER",17:"LEFTARROW",18:"RETURN",26:"LAMBDA",29:"RIGHTARROW",30:"MATCH",32:"DO",35:"(",36:")",37:"&",38:"[|",39:"|]",41:"!",42:"MATH",43:"CONCAT",44:"+",45:"-",46:"BOOLOP",47:"COMPARE",48:"WITH",51:"CASE",53:"=",57:"IF",58:"THEN",59:"ELSE",60:"DATA",64:"|",65:"TYPE",67:"FUNCTION",69:"GENERIC",70:"[",71:"]",73:"{",75:"}",76:",",80:":",82:"MACRO",
92
+ 83:"LET",86:"WHERE",92:"NUMBER",93:"STRING",94:"BOOLEAN",99:"OUTDENT",101:"."},productions_:[0,[3,1],[3,2],[5,1],[5,3],[5,2],[6,1],[6,1],[6,1],[11,3],[14,1],[14,3],[14,2],[15,1],[15,3],[15,2],[19,3],[8,1],[8,1],[8,1],[8,1],[8,1],[9,1],[9,5],[9,5],[9,5],[9,3],[9,1],[34,3],[34,4],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,1],[25,1],[25,1],[31,4],[31,6],[52,1],[52,1],[54,4],[56,1],[56,1],[56,2],[56,2],[33,7],[33,6],[22,5],[22,7],[62,2],[62,4],[23,4],[66,2],[66,4],[66,1],
93
+ [66,3],[66,3],[66,3],[72,1],[72,3],[63,0],[63,1],[77,1],[77,1],[77,3],[77,2],[77,2],[77,4],[68,0],[68,1],[78,1],[78,3],[74,0],[74,3],[74,5],[81,1],[81,2],[61,0],[61,1],[24,4],[24,4],[20,7],[20,6],[21,5],[21,7],[27,2],[27,1],[27,3],[27,2],[85,1],[85,5],[28,0],[28,2],[84,0],[84,4],[87,1],[87,3],[88,1],[88,6],[88,5],[50,2],[50,4],[89,2],[89,1],[89,3],[89,2],[90,5],[91,1],[91,3],[49,1],[49,1],[49,1],[49,1],[49,3],[49,3],[95,0],[95,1],[97,1],[97,3],[96,0],[96,4],[96,1],[98,3],[98,5],[98,6],[100,0],[100,
94
+ 1],[40,1],[40,3],[40,5],[13,1],[13,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[55,1]],performAction:function(a,d,l,e,g,b){a=b.length-1;switch(g){case 1:return[];case 2:return b[a-1];case 3:this.$=[b[a]];break;case 4:this.$=b[a-2];b[a-2].push(b[a]);break;case 5:this.$=b[a-1];break;case 6:this.$=b[a];break;case 7:this.$=b[a];break;case 8:this.$=new e.Comment(b[a]);this.$.lineno=l;break;case 9:this.$=b[a-1];break;case 10:this.$=[b[a]];break;case 11:this.$=
95
+ b[a-2];b[a-2].push(b[a]);break;case 12:this.$=b[a-1];break;case 13:this.$=b[a];break;case 14:this.$=new e.Bind(b[a-2],b[a]);this.$.lineno=l;break;case 15:this.$=new e.Return(b[a]);this.$.lineno=l;break;case 16:this.$=b[a-1];break;case 17:this.$=b[a];break;case 18:this.$=b[a];break;case 19:this.$=b[a];break;case 20:this.$=b[a];break;case 21:this.$=b[a];break;case 22:this.$=b[a];break;case 23:this.$=new e.Function(void 0,b[a-3],[b[a]],b[a-2]);this.$.lineno=l;break;case 24:this.$=new e.Function(void 0,
96
+ b[a-3],b[a],b[a-2]);this.$.lineno=l;break;case 25:this.$=new e.Match(b[a-3],b[a-1]);this.$.lineno=l;break;case 26:this.$=new e.Do(b[a-1],b[a]);this.$.lineno=l;break;case 27:this.$=b[a];break;case 28:this.$=new e.Expression(b[a-1]);this.$.lineno=l;break;case 29:this.$=new e.Replacement(b[a-1]);this.$.lineno=l;break;case 30:this.$=new e.Quoted(b[a-1]);this.$.lineno=l;break;case 31:this.$=b[a];break;case 32:this.$=new e.Access(b[a-2],b[a]);this.$.lineno=l;break;case 33:this.$=new e.BinaryNumberOperator(b[a-
97
+ 1],b[a-2],b[a]);this.$.lineno=l;break;case 34:this.$=new e.BinaryStringOperator(b[a-1],b[a-2],b[a]);this.$.lineno=l;break;case 35:this.$=new e.BinaryNumberOperator(b[a-1],b[a-2],b[a]);this.$.lineno=l;break;case 36:this.$=new e.BinaryNumberOperator(b[a-1],b[a-2],b[a]);this.$.lineno=l;break;case 37:this.$=new e.BinaryBooleanOperator(b[a-1],b[a-2],b[a]);this.$.lineno=l;break;case 38:this.$=new e.BinaryGenericOperator(b[a-1],b[a-2],b[a]);this.$.lineno=l;break;case 39:this.$=new e.With(b[a-2],b[a]);this.$.lineno=
98
+ l;break;case 40:this.$=b[a];break;case 41:this.$=b[a];break;case 42:this.$=b[a];break;case 43:this.$=[new e.Case(b[a-2],b[a])];break;case 44:this.$=b[a-5];b[a-5].push(new e.Case(b[a-2],b[a]));break;case 45:this.$=b[a];break;case 46:this.$=new e.Pattern(b[a],[]);this.$.lineno=l;break;case 47:this.$=new e.Pattern(b[a-2],b[a-1]);this.$.lineno=l;break;case 48:this.$=[b[a]];break;case 49:this.$=[b[a]];break;case 50:this.$=b[a-1];b[a-1].push(b[a]);break;case 51:this.$=b[a-1];b[a-1].push(b[a]);break;case 52:this.$=
99
+ new e.IfThenElse(b[a-5],b[a-3],b[a]);this.$.lineno=l;break;case 53:this.$=new e.IfThenElse(b[a-4],[b[a-2]],[b[a]]);this.$.lineno=l;break;case 54:this.$=new e.Data(b[a-3],b[a-2],b[a]);this.$.lineno=l;break;case 55:this.$=new e.Data(b[a-5],b[a-4],b[a-1]);this.$.lineno=l;break;case 56:this.$=[new e.Tag(b[a-1],b[a])];break;case 57:this.$=b[a-3];b[a-3].push(new e.Tag(b[a-1],b[a]));break;case 58:this.$=new e.Type(b[a-2],b[a]);this.$.lineno=l;break;case 59:this.$=new e.TypeName(b[a-1],b[a]);break;case 60:this.$=
100
+ new e.TypeFunction(b[a-1]);break;case 61:this.$=new e.Generic(b[a]);break;case 62:this.$=new e.TypeArray(b[a-1]);break;case 63:this.$=new e.TypeObject(b[a-1]);break;case 64:this.$=new e.TypeObject(b[a-1]);break;case 65:this.$=[b[a]];break;case 66:this.$=b[a-2];b[a-2].push(b[a]);break;case 67:this.$=[];break;case 68:this.$=b[a];break;case 69:this.$=[new e.TypeName(b[a],[])];break;case 70:this.$=[new e.Generic(b[a],[])];break;case 71:this.$=[b[a-1]];break;case 72:this.$=b[a-1];b[a-1].push(new e.TypeName(b[a],
101
+ []));break;case 73:this.$=b[a-1];b[a-1].push(new e.Generic(b[a],[]));break;case 74:this.$=b[a-3];b[a-3].push(b[a-1]);break;case 75:this.$=[];break;case 76:this.$=b[a];break;case 77:this.$=[b[a]];break;case 78:this.$=b[a-2];b[a-2].push(b[a]);break;case 79:this.$={};break;case 80:this.$={};this.$[b[a-2]]=b[a];break;case 81:this.$=b[a-4];b[a-4][b[a-2]]=b[a];break;case 82:this.$=[new e.Arg(b[a])];break;case 83:this.$=b[a-1];b[a-1].push(new e.Arg(b[a]));break;case 84:this.$=[];break;case 85:this.$=b[a];
102
+ break;case 86:this.$=new e.Macro(b[a-2],[b[a]]);this.$.lineno=l;break;case 87:this.$=new e.Macro(b[a-2],b[a]);this.$.lineno=l;break;case 88:this.$=new e.Function(b[a-5],b[a-4],b[a-1],b[a-3],b[a]);this.$.lineno=l;break;case 89:this.$=new e.Function(b[a-4],b[a-3],[b[a]],b[a-2],[]);this.$.lineno=l;break;case 90:this.$=new e.Let(b[a-3],b[a],b[a-2]);this.$.lineno=l;break;case 91:this.$=new e.Let(b[a-5],b[a-1],b[a-4]);this.$.lineno=l;break;case 92:this.$=[];break;case 93:this.$=[b[a]];break;case 94:this.$=
103
+ b[a-2];break;case 95:this.$=b[a-1];b[a-1].push(b[a]);break;case 96:this.$=new e.Arg(b[a]);this.$.lineno=l;break;case 97:this.$=new e.Arg(b[a-3],b[a-1]);this.$.lineno=l;break;case 99:this.$=b[a];break;case 100:this.$=[];break;case 101:this.$=b[a-1];break;case 102:this.$=[b[a]];break;case 103:this.$=b[a-2];b[a-2].push(b[a]);break;case 104:this.$=b[a];break;case 105:this.$=new e.Function(b[a-5],b[a-4],b[a-1],b[a-3],b[a]);this.$.lineno=l;break;case 106:this.$=new e.Function(b[a-4],b[a-3],[b[a]],b[a-2],
104
+ []);this.$.lineno=l;break;case 107:this.$=new e.Call(b[a-1],b[a]);this.$.lineno=l;break;case 108:this.$=new e.Call(b[a-2],b[a]);this.$.lineno=l;break;case 109:this.$=[];break;case 110:this.$=[b[a]];break;case 111:this.$=b[a-2];break;case 112:this.$=b[a-1];b[a-1].push(b[a]);break;case 113:b[a-1].unshift(b[a-3]);this.$=new e.Tuple(b[a-1]);this.$.lineno=l;break;case 114:this.$=[b[a]];break;case 115:this.$=b[a-2];b[a-2].push(b[a]);break;case 116:this.$=new e.Number(b[a]);this.$.lineno=l;break;case 117:this.$=
105
+ new e.String(b[a]);this.$.lineno=l;break;case 118:this.$=new e.Boolean(b[a]);this.$.lineno=l;break;case 119:this.$=b[a];break;case 120:this.$=new e.Array(b[a-1]);this.$.lineno=l;break;case 121:this.$=new e.Object(b[a-1]);this.$.lineno=l;break;case 122:this.$=[];break;case 123:this.$=b[a];break;case 124:this.$=[b[a]];break;case 125:this.$=b[a-2];b[a-2].push(b[a]);break;case 126:this.$={};break;case 127:this.$=b[a-2];break;case 128:this.$=b[a];break;case 129:this.$={};this.$[b[a-2]]=b[a];break;case 130:this.$=
106
+ b[a-4];b[a-4][b[a-2]]=b[a];break;case 131:this.$=b[a-5];b[a-5][b[a-2]]=b[a];break;case 134:this.$=new e.Identifier(b[a]);this.$.lineno=l;break;case 135:this.$=new e.PropertyAccess(b[a-2],b[a]);this.$.lineno=l;break;case 136:this.$=new e.PropertyAccess(b[a-3],b[a]);this.$.lineno=l;break;case 139:this.$=b[a];break;case 140:this.$=b[a];break;case 141:this.$=b[a];break;case 142:this.$=b[a];break;case 143:this.$=b[a];break;case 144:this.$=b[a];break;case 145:this.$=b[a];break;case 146:this.$=b[a];break;
107
+ case 147:this.$=b[a];break;case 148:this.$=b[a];break;case 149:this.$=b[a];break;case 150:this.$=b[a];break;case 151:this.$=new e.Identifier(b[a]),this.$.lineno=l}},table:[{3:1,4:[1,2],5:3,6:4,8:5,9:6,10:[1,7],16:[1,30],20:8,21:9,22:10,23:11,24:12,25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],60:[1,19],65:[1,20],70:[1,35],73:[1,36],82:[1,21],83:[1,18],90:34,92:[1,31],93:[1,32],94:[1,33]},{1:[3]},{1:[2,1]},{4:[1,37],7:[1,38]},{4:[2,3],7:[2,
108
+ 3],99:[2,3]},{4:[2,6],7:[2,6],99:[2,6]},{4:[2,7],7:[2,7],99:[2,7]},{4:[2,8],7:[2,8],99:[2,8]},{4:[2,17],7:[2,17],99:[2,17]},{4:[2,18],7:[2,18],99:[2,18]},{4:[2,19],7:[2,19],99:[2,19]},{4:[2,20],7:[2,20],99:[2,20]},{4:[2,21],7:[2,21],99:[2,21]},{4:[2,22],7:[2,22],36:[2,22],39:[2,22],71:[2,22],75:[2,22],76:[2,22],99:[2,22]},{16:[1,42],27:39,35:[1,40],85:41},{16:[1,30],25:43,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],25:44,
109
+ 34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,27],7:[2,27],36:[2,27],39:[2,27],71:[2,27],75:[2,27],76:[2,27],99:[2,27]},{16:[1,45]},{16:[1,46]},{16:[1,47]},{16:[1,48]},{4:[2,41],7:[2,41],12:[2,41],36:[2,41],39:[2,41],58:[2,41],59:[2,41],71:[2,41],75:[2,41],76:[2,41],99:[2,41]},{4:[2,42],7:[2,42],12:[2,42],36:[2,42],39:[2,42],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[1,54],47:[1,55],48:[1,56],58:[2,42],59:[2,42],71:[2,
110
+ 42],75:[2,42],76:[2,42],99:[2,42]},{16:[1,30],25:57,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,31],7:[2,31],12:[2,31],16:[1,30],34:61,35:[1,60],36:[2,31],37:[1,27],38:[1,28],39:[2,31],40:62,41:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],46:[2,31],47:[2,31],48:[2,31],49:29,58:[2,31],59:[2,31],70:[1,35],71:[2,31],73:[1,36],75:[2,31],76:[2,31],89:58,90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,31],101:[1,59]},{9:63,16:[1,30],25:64,
111
+ 26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{35:[1,65]},{9:66,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,40],7:[2,40],12:[2,40],16:[2,40],35:[2,40],36:[2,40],37:[2,40],38:[2,40],39:[2,40],41:[2,40],42:[2,40],43:[2,40],44:[2,40],45:[2,40],46:[2,40],47:[2,
112
+ 40],48:[2,40],58:[2,40],59:[2,40],70:[2,40],71:[2,40],73:[2,40],75:[2,40],76:[2,40],92:[2,40],93:[2,40],94:[2,40],99:[2,40]},{4:[2,134],7:[2,134],12:[2,134],16:[2,134],35:[2,134],36:[2,134],37:[2,134],38:[2,134],39:[2,134],41:[2,134],42:[2,134],43:[2,134],44:[2,134],45:[2,134],46:[2,134],47:[2,134],48:[2,134],58:[2,134],59:[2,134],70:[2,134],71:[2,134],73:[2,134],75:[2,134],76:[2,134],92:[2,134],93:[2,134],94:[2,134],99:[2,134],101:[2,134]},{4:[2,116],7:[2,116],12:[2,116],16:[2,116],35:[2,116],36:[2,
113
+ 116],37:[2,116],38:[2,116],39:[2,116],41:[2,116],42:[2,116],43:[2,116],44:[2,116],45:[2,116],46:[2,116],47:[2,116],48:[2,116],58:[2,116],59:[2,116],70:[2,116],71:[2,116],73:[2,116],75:[2,116],76:[2,116],92:[2,116],93:[2,116],94:[2,116],99:[2,116]},{4:[2,117],7:[2,117],12:[2,117],16:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],39:[2,117],41:[2,117],42:[2,117],43:[2,117],44:[2,117],45:[2,117],46:[2,117],47:[2,117],48:[2,117],58:[2,117],59:[2,117],70:[2,117],71:[2,117],73:[2,117],75:[2,117],76:[2,
114
+ 117],92:[2,117],93:[2,117],94:[2,117],99:[2,117]},{4:[2,118],7:[2,118],12:[2,118],16:[2,118],35:[2,118],36:[2,118],37:[2,118],38:[2,118],39:[2,118],41:[2,118],42:[2,118],43:[2,118],44:[2,118],45:[2,118],46:[2,118],47:[2,118],48:[2,118],58:[2,118],59:[2,118],70:[2,118],71:[2,118],73:[2,118],75:[2,118],76:[2,118],92:[2,118],93:[2,118],94:[2,118],99:[2,118]},{4:[2,119],7:[2,119],12:[2,119],16:[2,119],35:[2,119],36:[2,119],37:[2,119],38:[2,119],39:[2,119],41:[2,119],42:[2,119],43:[2,119],44:[2,119],45:[2,
115
+ 119],46:[2,119],47:[2,119],48:[2,119],58:[2,119],59:[2,119],70:[2,119],71:[2,119],73:[2,119],75:[2,119],76:[2,119],92:[2,119],93:[2,119],94:[2,119],99:[2,119]},{9:69,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],71:[2,122],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33],95:67,97:68},{12:[1,71],16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],75:[2,126],79:73,82:[1,82],86:[1,
116
+ 84],96:70,98:72},{1:[2,2]},{4:[2,5],6:86,7:[2,5],8:5,9:6,10:[1,7],16:[1,30],20:8,21:9,22:10,23:11,24:12,25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],60:[1,19],65:[1,20],70:[1,35],73:[1,36],82:[1,21],83:[1,18],90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,5]},{16:[1,42],28:87,29:[2,98],35:[1,88],80:[1,90],85:89},{16:[1,92],36:[1,91]},{16:[2,93],29:[2,93],35:[2,93],53:[2,93],80:[2,93]},{16:[2,96],29:[2,96],35:[2,96],53:[2,96],80:[2,96]},{12:[1,
117
+ 93]},{12:[1,95],19:94},{16:[1,42],27:96,28:97,35:[1,40],53:[2,98],80:[1,90],85:41},{16:[1,100],53:[2,84],61:98,81:99},{53:[1,101]},{53:[1,102]},{16:[1,30],34:103,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:105,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:106,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,
118
+ 30],34:107,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:108,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:109,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:110,35:[1,104],37:[1,27],38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,30],34:111,35:[1,104],37:[1,27],
119
+ 38:[1,28],40:62,49:29,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{58:[1,112]},{4:[2,107],7:[2,107],12:[2,107],16:[1,30],34:114,35:[1,113],36:[2,107],37:[1,27],38:[1,28],39:[2,107],40:62,49:29,58:[2,107],59:[2,107],70:[1,35],71:[2,107],73:[1,36],75:[2,107],76:[2,107],90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,107]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:115,82:[1,82],86:[1,84]},{9:117,16:[1,30],25:64,26:[1,14],30:[1,15],
120
+ 32:[1,16],33:17,34:23,35:[1,26],36:[1,116],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,110],7:[2,110],12:[2,110],16:[2,110],35:[2,110],36:[2,110],37:[2,110],38:[2,110],39:[2,110],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[1,54],47:[1,55],48:[1,56],58:[2,110],59:[2,110],70:[2,110],71:[2,110],73:[2,110],75:[2,110],76:[2,110],92:[2,110],93:[2,110],94:[2,110],99:[2,110]},{4:[2,31],7:[2,31],12:[2,31],16:[2,31],35:[2,31],36:[2,
121
+ 31],37:[2,31],38:[2,31],39:[2,31],41:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],46:[2,31],47:[2,31],48:[2,31],58:[2,31],59:[2,31],70:[2,31],71:[2,31],73:[2,31],75:[2,31],76:[2,31],92:[2,31],93:[2,31],94:[2,31],99:[2,31],101:[1,59]},{36:[1,118]},{36:[2,22],76:[1,119]},{9:120,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{39:[1,121]},{71:[1,122]},{71:[2,123],76:[1,123]},
122
+ {71:[2,124],76:[2,124]},{75:[1,124]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:73,82:[1,82],86:[1,84],98:125},{7:[1,127],75:[2,128],76:[1,126]},{80:[1,128]},{4:[2,139],7:[2,139],12:[2,139],16:[2,139],35:[2,139],36:[2,139],37:[2,139],38:[2,139],39:[2,139],41:[2,139],42:[2,139],43:[2,139],44:[2,139],45:[2,139],46:[2,139],47:[2,139],48:[2,139],58:[2,139],59:[2,139],70:[2,139],71:[2,139],73:[2,139],75:[2,139],76:[2,139],80:[2,139],92:[2,139],
123
+ 93:[2,139],94:[2,139],99:[2,139],101:[2,139]},{4:[2,140],7:[2,140],12:[2,140],16:[2,140],35:[2,140],36:[2,140],37:[2,140],38:[2,140],39:[2,140],41:[2,140],42:[2,140],43:[2,140],44:[2,140],45:[2,140],46:[2,140],47:[2,140],48:[2,140],58:[2,140],59:[2,140],70:[2,140],71:[2,140],73:[2,140],75:[2,140],76:[2,140],80:[2,140],92:[2,140],93:[2,140],94:[2,140],99:[2,140],101:[2,140]},{4:[2,141],7:[2,141],12:[2,141],16:[2,141],35:[2,141],36:[2,141],37:[2,141],38:[2,141],39:[2,141],41:[2,141],42:[2,141],43:[2,
124
+ 141],44:[2,141],45:[2,141],46:[2,141],47:[2,141],48:[2,141],58:[2,141],59:[2,141],70:[2,141],71:[2,141],73:[2,141],75:[2,141],76:[2,141],80:[2,141],92:[2,141],93:[2,141],94:[2,141],99:[2,141],101:[2,141]},{4:[2,142],7:[2,142],12:[2,142],16:[2,142],35:[2,142],36:[2,142],37:[2,142],38:[2,142],39:[2,142],41:[2,142],42:[2,142],43:[2,142],44:[2,142],45:[2,142],46:[2,142],47:[2,142],48:[2,142],58:[2,142],59:[2,142],70:[2,142],71:[2,142],73:[2,142],75:[2,142],76:[2,142],80:[2,142],92:[2,142],93:[2,142],
125
+ 94:[2,142],99:[2,142],101:[2,142]},{4:[2,143],7:[2,143],12:[2,143],16:[2,143],35:[2,143],36:[2,143],37:[2,143],38:[2,143],39:[2,143],41:[2,143],42:[2,143],43:[2,143],44:[2,143],45:[2,143],46:[2,143],47:[2,143],48:[2,143],58:[2,143],59:[2,143],70:[2,143],71:[2,143],73:[2,143],75:[2,143],76:[2,143],80:[2,143],92:[2,143],93:[2,143],94:[2,143],99:[2,143],101:[2,143]},{4:[2,144],7:[2,144],12:[2,144],16:[2,144],35:[2,144],36:[2,144],37:[2,144],38:[2,144],39:[2,144],41:[2,144],42:[2,144],43:[2,144],44:[2,
126
+ 144],45:[2,144],46:[2,144],47:[2,144],48:[2,144],58:[2,144],59:[2,144],70:[2,144],71:[2,144],73:[2,144],75:[2,144],76:[2,144],80:[2,144],92:[2,144],93:[2,144],94:[2,144],99:[2,144],101:[2,144]},{4:[2,145],7:[2,145],12:[2,145],16:[2,145],35:[2,145],36:[2,145],37:[2,145],38:[2,145],39:[2,145],41:[2,145],42:[2,145],43:[2,145],44:[2,145],45:[2,145],46:[2,145],47:[2,145],48:[2,145],58:[2,145],59:[2,145],70:[2,145],71:[2,145],73:[2,145],75:[2,145],76:[2,145],80:[2,145],92:[2,145],93:[2,145],94:[2,145],
127
+ 99:[2,145],101:[2,145]},{4:[2,146],7:[2,146],12:[2,146],16:[2,146],35:[2,146],36:[2,146],37:[2,146],38:[2,146],39:[2,146],41:[2,146],42:[2,146],43:[2,146],44:[2,146],45:[2,146],46:[2,146],47:[2,146],48:[2,146],58:[2,146],59:[2,146],70:[2,146],71:[2,146],73:[2,146],75:[2,146],76:[2,146],80:[2,146],92:[2,146],93:[2,146],94:[2,146],99:[2,146],101:[2,146]},{4:[2,147],7:[2,147],12:[2,147],16:[2,147],35:[2,147],36:[2,147],37:[2,147],38:[2,147],39:[2,147],41:[2,147],42:[2,147],43:[2,147],44:[2,147],45:[2,
128
+ 147],46:[2,147],47:[2,147],48:[2,147],58:[2,147],59:[2,147],70:[2,147],71:[2,147],73:[2,147],75:[2,147],76:[2,147],80:[2,147],92:[2,147],93:[2,147],94:[2,147],99:[2,147],101:[2,147]},{4:[2,148],7:[2,148],12:[2,148],16:[2,148],35:[2,148],36:[2,148],37:[2,148],38:[2,148],39:[2,148],41:[2,148],42:[2,148],43:[2,148],44:[2,148],45:[2,148],46:[2,148],47:[2,148],48:[2,148],58:[2,148],59:[2,148],70:[2,148],71:[2,148],73:[2,148],75:[2,148],76:[2,148],80:[2,148],92:[2,148],93:[2,148],94:[2,148],99:[2,148],
129
+ 101:[2,148]},{4:[2,149],7:[2,149],12:[2,149],16:[2,149],35:[2,149],36:[2,149],37:[2,149],38:[2,149],39:[2,149],41:[2,149],42:[2,149],43:[2,149],44:[2,149],45:[2,149],46:[2,149],47:[2,149],48:[2,149],58:[2,149],59:[2,149],70:[2,149],71:[2,149],73:[2,149],75:[2,149],76:[2,149],80:[2,149],92:[2,149],93:[2,149],94:[2,149],99:[2,149],101:[2,149]},{4:[2,150],7:[2,150],12:[2,150],16:[2,150],35:[2,150],36:[2,150],37:[2,150],38:[2,150],39:[2,150],41:[2,150],42:[2,150],43:[2,150],44:[2,150],45:[2,150],46:[2,
130
+ 150],47:[2,150],48:[2,150],58:[2,150],59:[2,150],70:[2,150],71:[2,150],73:[2,150],75:[2,150],76:[2,150],80:[2,150],92:[2,150],93:[2,150],94:[2,150],99:[2,150],101:[2,150]},{4:[2,4],7:[2,4],99:[2,4]},{29:[1,129]},{16:[1,92],36:[1,130]},{16:[2,95],29:[2,95],35:[2,95],53:[2,95],80:[2,95]},{16:[1,132],35:[1,136],66:131,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{16:[2,92],29:[2,92],35:[2,92],53:[2,92],80:[2,92]},{80:[1,138]},{31:139,51:[1,140]},{4:[2,26],7:[2,26],36:[2,26],39:[2,26],71:[2,26],75:[2,
131
+ 26],76:[2,26],99:[2,26]},{6:143,8:5,9:6,10:[1,7],14:141,15:142,16:[1,144],18:[1,145],20:8,21:9,22:10,23:11,24:12,25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],60:[1,19],65:[1,20],70:[1,35],73:[1,36],82:[1,21],83:[1,18],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,42],28:146,35:[1,88],53:[2,98],80:[1,90],85:89},{53:[1,147]},{53:[1,148]},{16:[1,149],53:[2,85]},{16:[2,82],53:[2,82]},{16:[1,132],35:[1,136],66:150,67:[1,133],69:[1,134],70:[1,135],
132
+ 73:[1,137]},{9:151,11:152,12:[1,153],16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,32],7:[2,32],12:[2,32],16:[2,32],35:[2,32],36:[2,32],37:[2,32],38:[2,32],39:[2,32],41:[2,32],42:[1,50],43:[1,51],44:[2,32],45:[2,32],46:[2,32],47:[2,32],48:[2,32],58:[2,32],59:[2,32],70:[2,32],71:[2,32],73:[2,32],75:[2,32],76:[2,32],92:[2,32],93:[2,32],94:[2,32],99:[2,32]},{9:117,16:[1,
133
+ 30],25:64,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,33],7:[2,33],12:[2,33],16:[2,33],35:[2,33],36:[2,33],37:[2,33],38:[2,33],39:[2,33],41:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],46:[2,33],47:[2,33],48:[2,33],58:[2,33],59:[2,33],70:[2,33],71:[2,33],73:[2,33],75:[2,33],76:[2,33],92:[2,33],93:[2,33],94:[2,33],99:[2,33]},{4:[2,34],7:[2,34],12:[2,34],16:[2,34],35:[2,34],36:[2,
134
+ 34],37:[2,34],38:[2,34],39:[2,34],41:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],47:[2,34],48:[2,34],58:[2,34],59:[2,34],70:[2,34],71:[2,34],73:[2,34],75:[2,34],76:[2,34],92:[2,34],93:[2,34],94:[2,34],99:[2,34]},{4:[2,35],7:[2,35],12:[2,35],16:[2,35],35:[2,35],36:[2,35],37:[2,35],38:[2,35],39:[2,35],41:[2,35],42:[1,50],43:[1,51],44:[2,35],45:[2,35],46:[2,35],47:[2,35],48:[2,35],58:[2,35],59:[2,35],70:[2,35],71:[2,35],73:[2,35],75:[2,35],76:[2,35],92:[2,35],93:[2,35],94:[2,35],99:[2,35]},
135
+ {4:[2,36],7:[2,36],12:[2,36],16:[2,36],35:[2,36],36:[2,36],37:[2,36],38:[2,36],39:[2,36],41:[2,36],42:[1,50],43:[1,51],44:[2,36],45:[2,36],46:[2,36],47:[2,36],48:[2,36],58:[2,36],59:[2,36],70:[2,36],71:[2,36],73:[2,36],75:[2,36],76:[2,36],92:[2,36],93:[2,36],94:[2,36],99:[2,36]},{4:[2,37],7:[2,37],12:[2,37],16:[2,37],35:[2,37],36:[2,37],37:[2,37],38:[2,37],39:[2,37],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[2,37],47:[1,55],48:[1,56],58:[2,37],59:[2,37],70:[2,37],71:[2,37],73:[2,37],75:[2,
136
+ 37],76:[2,37],92:[2,37],93:[2,37],94:[2,37],99:[2,37]},{4:[2,38],7:[2,38],12:[2,38],16:[2,38],35:[2,38],36:[2,38],37:[2,38],38:[2,38],39:[2,38],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[2,38],47:[2,38],48:[2,38],58:[2,38],59:[2,38],70:[2,38],71:[2,38],73:[2,38],75:[2,38],76:[2,38],92:[2,38],93:[2,38],94:[2,38],99:[2,38]},{4:[2,39],7:[2,39],12:[2,39],16:[2,39],35:[2,39],36:[2,39],37:[2,39],38:[2,39],39:[2,39],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[2,39],47:[2,39],48:[2,39],
137
+ 58:[2,39],59:[2,39],70:[2,39],71:[2,39],73:[2,39],75:[2,39],76:[2,39],92:[2,39],93:[2,39],94:[2,39],99:[2,39]},{11:154,12:[1,153],16:[1,30],25:155,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{9:117,16:[1,30],25:64,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],36:[1,156],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,112],7:[2,112],12:[2,112],16:[2,112],35:[2,112],
138
+ 36:[2,112],37:[2,112],38:[2,112],39:[2,112],41:[1,49],42:[1,50],43:[1,51],44:[1,52],45:[1,53],46:[1,54],47:[1,55],48:[1,56],58:[2,112],59:[2,112],70:[2,112],71:[2,112],73:[2,112],75:[2,112],76:[2,112],92:[2,112],93:[2,112],94:[2,112],99:[2,112]},{4:[2,135],7:[2,135],12:[2,135],16:[2,135],35:[2,135],36:[2,135],37:[2,135],38:[2,135],39:[2,135],41:[2,135],42:[2,135],43:[2,135],44:[2,135],45:[2,135],46:[2,135],47:[2,135],48:[2,135],58:[2,135],59:[2,135],70:[2,135],71:[2,135],73:[2,135],75:[2,135],76:[2,
139
+ 135],92:[2,135],93:[2,135],94:[2,135],99:[2,135],101:[2,135]},{4:[2,109],7:[2,109],12:[2,109],16:[2,109],35:[2,109],36:[2,109],37:[2,109],38:[2,109],39:[2,109],58:[2,109],59:[2,109],70:[2,109],71:[2,109],73:[2,109],75:[2,109],76:[2,109],92:[2,109],93:[2,109],94:[2,109],99:[2,109]},{36:[1,157]},{4:[2,28],7:[2,28],12:[2,28],16:[1,30],34:61,35:[1,60],36:[2,28],37:[1,27],38:[1,28],39:[2,28],40:62,41:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],47:[2,28],48:[2,28],49:29,58:[2,28],59:[2,28],
140
+ 70:[1,35],71:[2,28],73:[1,36],75:[2,28],76:[2,28],89:158,90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,28],101:[1,159]},{16:[1,30],25:161,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,91:160,92:[1,31],93:[1,32],94:[1,33]},{36:[1,162]},{4:[2,30],7:[2,30],12:[2,30],16:[2,30],35:[2,30],36:[2,30],37:[2,30],38:[2,30],39:[2,30],41:[2,30],42:[2,30],43:[2,30],44:[2,30],45:[2,30],46:[2,30],47:[2,30],48:[2,30],58:[2,30],59:[2,30],70:[2,30],71:[2,30],73:[2,30],75:[2,30],76:[2,30],
141
+ 92:[2,30],93:[2,30],94:[2,30],99:[2,30]},{4:[2,120],7:[2,120],12:[2,120],16:[2,120],35:[2,120],36:[2,120],37:[2,120],38:[2,120],39:[2,120],41:[2,120],42:[2,120],43:[2,120],44:[2,120],45:[2,120],46:[2,120],47:[2,120],48:[2,120],58:[2,120],59:[2,120],70:[2,120],71:[2,120],73:[2,120],75:[2,120],76:[2,120],92:[2,120],93:[2,120],94:[2,120],99:[2,120]},{9:163,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,
142
+ 31],93:[1,32],94:[1,33]},{4:[2,121],7:[2,121],12:[2,121],16:[2,121],35:[2,121],36:[2,121],37:[2,121],38:[2,121],39:[2,121],41:[2,121],42:[2,121],43:[2,121],44:[2,121],45:[2,121],46:[2,121],47:[2,121],48:[2,121],58:[2,121],59:[2,121],70:[2,121],71:[2,121],73:[2,121],75:[2,121],76:[2,121],92:[2,121],93:[2,121],94:[2,121],99:[2,121]},{7:[1,127],76:[1,126],99:[1,164]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:165,82:[1,82],86:[1,84]},{7:[1,
143
+ 167],16:[2,132],18:[2,132],30:[2,132],32:[2,132],48:[2,132],51:[2,132],58:[2,132],59:[2,132],60:[2,132],65:[2,132],82:[2,132],86:[2,132],100:166},{9:168,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{9:169,11:170,12:[1,153],16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],
144
+ 93:[1,32],94:[1,33]},{16:[2,94],29:[2,94],35:[2,94],53:[2,94],80:[2,94]},{29:[2,99],53:[2,99]},{4:[2,67],7:[2,67],16:[1,173],29:[2,67],35:[1,175],36:[2,67],53:[2,67],63:171,69:[1,174],71:[2,67],75:[2,67],76:[2,67],77:172,99:[2,67]},{35:[1,176]},{4:[2,61],7:[2,61],29:[2,61],36:[2,61],53:[2,61],71:[2,61],75:[2,61],76:[2,61],99:[2,61]},{16:[1,132],35:[1,136],66:177,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{16:[1,132],35:[1,136],66:179,67:[1,133],69:[1,134],70:[1,135],72:178,73:[1,137]},{16:[1,85],
145
+ 18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],74:180,75:[2,79],76:[2,79],79:181,82:[1,82],86:[1,84]},{16:[1,132],35:[1,136],66:182,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{4:[1,186],7:[1,184],13:183,99:[1,185]},{16:[1,191],35:[1,190],52:187,54:188,55:189},{4:[1,186],7:[1,193],13:192,99:[1,185]},{4:[2,10],7:[2,10],99:[2,10]},{4:[2,13],7:[2,13],99:[2,13]},{4:[2,134],7:[2,134],16:[2,134],17:[1,194],35:[2,134],37:[2,134],38:[2,134],41:[2,134],42:[2,134],
146
+ 43:[2,134],44:[2,134],45:[2,134],46:[2,134],47:[2,134],48:[2,134],70:[2,134],73:[2,134],92:[2,134],93:[2,134],94:[2,134],99:[2,134],101:[2,134]},{9:195,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{53:[1,196]},{9:197,12:[1,198],16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,
147
+ 31],93:[1,32],94:[1,33]},{12:[1,200],16:[1,201],62:199},{16:[2,83],53:[2,83]},{4:[2,58],7:[2,58],99:[2,58]},{4:[2,86],7:[2,86],99:[2,86]},{4:[2,87],7:[2,87],99:[2,87]},{5:202,6:4,8:5,9:6,10:[1,7],16:[1,30],20:8,21:9,22:10,23:11,24:12,25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],60:[1,19],65:[1,20],70:[1,35],73:[1,36],82:[1,21],83:[1,18],90:34,92:[1,31],93:[1,32],94:[1,33]},{7:[1,203]},{59:[1,204]},{4:[2,111],7:[2,111],12:[2,111],16:[2,111],
148
+ 35:[2,111],36:[2,111],37:[2,111],38:[2,111],39:[2,111],58:[2,111],59:[2,111],70:[2,111],71:[2,111],73:[2,111],75:[2,111],76:[2,111],92:[2,111],93:[2,111],94:[2,111],99:[2,111]},{4:[2,28],7:[2,28],12:[2,28],16:[2,28],35:[2,28],36:[2,28],37:[2,28],38:[2,28],39:[2,28],41:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],47:[2,28],48:[2,28],58:[2,28],59:[2,28],70:[2,28],71:[2,28],73:[2,28],75:[2,28],76:[2,28],92:[2,28],93:[2,28],94:[2,28],99:[2,28],101:[1,159]},{4:[2,108],7:[2,108],12:[2,108],
149
+ 16:[1,30],34:114,35:[1,113],36:[2,108],37:[1,27],38:[1,28],39:[2,108],40:62,49:29,58:[2,108],59:[2,108],70:[1,35],71:[2,108],73:[1,36],75:[2,108],76:[2,108],90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,108]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:205,82:[1,82],86:[1,84]},{36:[1,206],76:[1,207]},{36:[2,114],76:[2,114]},{4:[2,29],7:[2,29],12:[2,29],16:[2,29],35:[2,29],36:[2,29],37:[2,29],38:[2,29],39:[2,29],41:[2,29],42:[2,29],43:[2,29],
150
+ 44:[2,29],45:[2,29],46:[2,29],47:[2,29],48:[2,29],58:[2,29],59:[2,29],70:[2,29],71:[2,29],73:[2,29],75:[2,29],76:[2,29],92:[2,29],93:[2,29],94:[2,29],99:[2,29]},{71:[2,125],76:[2,125]},{7:[1,208]},{80:[1,209]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:210,82:[1,82],86:[1,84]},{16:[2,133],18:[2,133],30:[2,133],32:[2,133],48:[2,133],51:[2,133],58:[2,133],59:[2,133],60:[2,133],65:[2,133],82:[2,133],86:[2,133]},{7:[2,129],75:[2,129],76:[2,
151
+ 129],99:[2,129]},{4:[2,23],7:[2,23],36:[2,23],39:[2,23],71:[2,23],75:[2,23],76:[2,23],99:[2,23]},{4:[2,24],7:[2,24],36:[2,24],39:[2,24],71:[2,24],75:[2,24],76:[2,24],99:[2,24]},{4:[2,59],7:[2,59],29:[2,59],36:[2,59],53:[2,59],71:[2,59],75:[2,59],76:[2,59],99:[2,59]},{4:[2,68],7:[2,68],16:[1,211],29:[2,68],35:[1,213],36:[2,68],53:[2,68],64:[2,68],69:[1,212],71:[2,68],75:[2,68],76:[2,68],99:[2,68]},{4:[2,69],7:[2,69],16:[2,69],29:[2,69],35:[2,69],36:[2,69],53:[2,69],64:[2,69],69:[2,69],71:[2,69],75:[2,
152
+ 69],76:[2,69],99:[2,69]},{4:[2,70],7:[2,70],16:[2,70],29:[2,70],35:[2,70],36:[2,70],53:[2,70],64:[2,70],69:[2,70],71:[2,70],75:[2,70],76:[2,70],99:[2,70]},{16:[1,132],35:[1,136],66:214,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{16:[1,132],35:[1,136],36:[2,75],66:217,67:[1,133],68:215,69:[1,134],70:[1,135],73:[1,137],78:216},{71:[1,218]},{36:[1,219],76:[1,220]},{36:[2,65],76:[2,65]},{75:[1,221],76:[1,222]},{80:[1,223]},{36:[1,224]},{4:[2,25],7:[2,25],36:[2,25],39:[2,25],71:[2,25],75:[2,25],76:[2,
153
+ 25],99:[2,25]},{51:[1,225]},{4:[2,137],7:[2,137],36:[2,137],39:[2,137],71:[2,137],75:[2,137],76:[2,137],86:[2,137],99:[2,137]},{4:[2,138],7:[2,138],36:[2,138],39:[2,138],71:[2,138],75:[2,138],76:[2,138],86:[2,138],99:[2,138]},{53:[1,226]},{53:[2,45]},{53:[2,46]},{16:[1,191],55:227},{16:[2,151],35:[2,151],36:[2,151],53:[2,151]},{4:[2,16],7:[2,16],36:[2,16],39:[2,16],71:[2,16],75:[2,16],76:[2,16],99:[2,16]},{4:[2,12],6:143,7:[2,12],8:5,9:6,10:[1,7],15:228,16:[1,144],18:[1,145],20:8,21:9,22:10,23:11,
154
+ 24:12,25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],60:[1,19],65:[1,20],70:[1,35],73:[1,36],82:[1,21],83:[1,18],90:34,92:[1,31],93:[1,32],94:[1,33],99:[2,12]},{9:229,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,15],7:[2,15],99:[2,15]},{9:231,11:230,12:[1,153],16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,
155
+ 34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,90],7:[2,90],99:[2,90]},{9:232,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,54],7:[2,54],64:[1,233],99:[2,54]},{16:[1,201],62:234},{4:[2,67],7:[2,67],16:[1,173],35:[1,175],63:235,64:[2,67],69:[1,174],77:172,99:[2,67]},{4:[1,186],7:[1,38],13:236,
156
+ 99:[1,185]},{59:[1,237]},{16:[1,30],25:238,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,136],7:[2,136],12:[2,136],16:[2,136],35:[2,136],36:[2,136],37:[2,136],38:[2,136],39:[2,136],41:[2,136],42:[2,136],43:[2,136],44:[2,136],45:[2,136],46:[2,136],47:[2,136],48:[2,136],58:[2,136],59:[2,136],70:[2,136],71:[2,136],73:[2,136],75:[2,136],76:[2,136],92:[2,136],93:[2,136],94:[2,136],99:[2,136],101:[2,136]},{4:[2,113],7:[2,113],12:[2,
157
+ 113],16:[2,113],35:[2,113],36:[2,113],37:[2,113],38:[2,113],39:[2,113],41:[2,113],42:[2,113],43:[2,113],44:[2,113],45:[2,113],46:[2,113],47:[2,113],48:[2,113],58:[2,113],59:[2,113],70:[2,113],71:[2,113],73:[2,113],75:[2,113],76:[2,113],92:[2,113],93:[2,113],94:[2,113],99:[2,113]},{16:[1,30],25:239,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{75:[2,127]},{9:240,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,
158
+ 27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{80:[1,241]},{4:[2,72],7:[2,72],16:[2,72],29:[2,72],35:[2,72],36:[2,72],53:[2,72],64:[2,72],69:[2,72],71:[2,72],75:[2,72],76:[2,72],99:[2,72]},{4:[2,73],7:[2,73],16:[2,73],29:[2,73],35:[2,73],36:[2,73],53:[2,73],64:[2,73],69:[2,73],71:[2,73],75:[2,73],76:[2,73],99:[2,73]},{16:[1,132],35:[1,136],66:242,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{36:[1,243]},{36:[1,244]},{36:[2,76],76:[1,245]},{36:[2,
159
+ 77],76:[2,77]},{4:[2,62],7:[2,62],29:[2,62],36:[2,62],53:[2,62],71:[2,62],75:[2,62],76:[2,62],99:[2,62]},{4:[2,63],7:[2,63],29:[2,63],36:[2,63],53:[2,63],71:[2,63],75:[2,63],76:[2,63],99:[2,63]},{16:[1,132],35:[1,136],66:246,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{4:[2,64],7:[2,64],29:[2,64],36:[2,64],53:[2,64],71:[2,64],75:[2,64],76:[2,64],99:[2,64]},{16:[1,85],18:[1,81],30:[1,78],32:[1,80],48:[1,83],51:[1,79],58:[1,74],59:[1,75],60:[1,76],65:[1,77],79:247,82:[1,82],86:[1,84]},{16:[1,132],
160
+ 35:[1,136],66:248,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{16:[2,97],29:[2,97],35:[2,97],53:[2,97],80:[2,97]},{16:[1,191],35:[1,190],52:249,54:188,55:189},{9:250,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[1,191],35:[1,190],54:253,55:252,56:251},{4:[2,11],7:[2,11],99:[2,11]},{4:[2,14],7:[2,14],99:[2,14]},{4:[2,100],7:[2,100],84:254,86:[1,255],99:[2,100]},{4:[2,
161
+ 89],7:[2,89],99:[2,89]},{4:[1,186],13:256,99:[1,185]},{16:[1,257]},{4:[1,186],13:258,64:[1,233],99:[1,185]},{4:[2,56],7:[2,56],64:[2,56],99:[2,56]},{4:[2,9],7:[2,9],36:[2,9],39:[2,9],71:[2,9],75:[2,9],76:[2,9],86:[2,9],99:[2,9]},{11:259,12:[1,153]},{4:[2,53],7:[2,53],36:[2,53],39:[2,53],71:[2,53],75:[2,53],76:[2,53],99:[2,53]},{36:[2,115],76:[2,115]},{7:[2,130],75:[2,130],76:[2,130],99:[2,130]},{9:260,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,
162
+ 50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{36:[1,261]},{4:[2,71],7:[2,71],16:[2,71],29:[2,71],35:[2,71],36:[2,71],53:[2,71],64:[2,71],69:[2,71],71:[2,71],75:[2,71],76:[2,71],99:[2,71]},{4:[2,60],7:[2,60],29:[2,60],36:[2,60],53:[2,60],71:[2,60],75:[2,60],76:[2,60],99:[2,60]},{16:[1,132],35:[1,136],66:262,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{36:[2,66],76:[2,66]},{80:[1,263]},{75:[2,80],76:[2,80]},{53:[1,264]},{4:[2,43],7:[2,43],99:[2,43]},{16:[1,191],35:[1,190],
163
+ 36:[1,265],54:266,55:267},{16:[2,48],35:[2,48],36:[2,48]},{16:[2,49],35:[2,49],36:[2,49]},{4:[2,88],7:[2,88],99:[2,88]},{12:[1,268]},{4:[2,91],7:[2,91],99:[2,91]},{4:[2,67],7:[2,67],16:[1,173],35:[1,175],63:269,64:[2,67],69:[1,174],77:172,99:[2,67]},{4:[2,55],7:[2,55],99:[2,55]},{4:[2,52],7:[2,52],36:[2,52],39:[2,52],71:[2,52],75:[2,52],76:[2,52],99:[2,52]},{7:[2,131],75:[2,131],76:[2,131],99:[2,131]},{4:[2,74],7:[2,74],16:[2,74],29:[2,74],35:[2,74],36:[2,74],53:[2,74],64:[2,74],69:[2,74],71:[2,74],
164
+ 75:[2,74],76:[2,74],99:[2,74]},{36:[2,78],76:[2,78]},{16:[1,132],35:[1,136],66:270,67:[1,133],69:[1,134],70:[1,135],73:[1,137]},{9:271,16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{16:[2,47],35:[2,47],36:[2,47],53:[2,47]},{16:[2,50],35:[2,50],36:[2,50]},{16:[2,51],35:[2,51],36:[2,51]},{16:[1,275],22:274,60:[1,19],87:272,88:273},{4:[2,57],7:[2,57],64:[2,57],99:[2,57]},{75:[2,
165
+ 81],76:[2,81]},{4:[2,44],7:[2,44],99:[2,44]},{4:[1,186],7:[1,277],13:276,99:[1,185]},{4:[2,102],7:[2,102],99:[2,102]},{4:[2,104],7:[2,104],99:[2,104]},{16:[1,42],27:278,35:[1,40],85:41},{4:[2,101],7:[2,101],99:[2,101]},{16:[1,275],22:274,60:[1,19],88:279},{16:[1,42],28:280,35:[1,88],53:[2,98],80:[1,90],85:89},{4:[2,103],7:[2,103],99:[2,103]},{53:[1,281]},{9:283,11:282,12:[1,153],16:[1,30],25:13,26:[1,14],30:[1,15],32:[1,16],33:17,34:23,35:[1,26],37:[1,27],38:[1,28],40:25,49:29,50:22,57:[1,24],70:[1,
166
+ 35],73:[1,36],90:34,92:[1,31],93:[1,32],94:[1,33]},{4:[2,100],7:[2,100],84:284,86:[1,255],99:[2,100]},{4:[2,106],7:[2,106],99:[2,106]},{4:[2,105],7:[2,105],99:[2,105]}],defaultActions:{2:[2,1],37:[2,2],188:[2,45],189:[2,46],208:[2,127]},parseError:function(a){throw Error(a);},parse:function(a){function d(){var a;a=l.lexer.lex()||1;"number"!==typeof a&&(a=l.symbols_[a]||a);return a}var l=this,e=[0],g=[null],b=[],j=this.table,n="",v=0,k=0,q=0;this.lexer.setInput(a);this.lexer.yy=this.yy;this.yy.lexer=
167
+ this.lexer;"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});a=this.lexer.yylloc;b.push(a);"function"===typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var r,m,p,f,c={},t,o;;){p=e[e.length-1];this.defaultActions[p]?f=this.defaultActions[p]:(null==r&&(r=d()),f=j[p]&&j[p][r]);if("undefined"===typeof f||!f.length||!f[0]){if(!q){m=[];for(t in j[p])this.terminals_[t]&&2<t&&m.push("'"+this.terminals_[t]+"'");var h="",h=this.lexer.showPosition?"Parse error on line "+(v+1)+
168
+ ":\n"+this.lexer.showPosition()+"\nExpecting "+m.join(", ")+", got '"+this.terminals_[r]+"'":"Parse error on line "+(v+1)+": Unexpected "+(1==r?"end of input":"'"+(this.terminals_[r]||r)+"'");this.parseError(h,{text:this.lexer.match,token:this.terminals_[r]||r,line:this.lexer.yylineno,loc:a,expected:m})}if(3==q){if(1==r)throw Error(h||"Parsing halted.");k=this.lexer.yyleng;n=this.lexer.yytext;v=this.lexer.yylineno;a=this.lexer.yylloc;r=d()}for(;!((2).toString()in j[p]);){if(0==p)throw Error(h||"Parsing halted.");
169
+ e.length-=2;g.length-=1;b.length-=1;p=e[e.length-1]}m=r;r=2;p=e[e.length-1];f=j[p]&&j[p][2];q=3}if(f[0]instanceof Array&&1<f.length)throw Error("Parse Error: multiple actions possible at state: "+p+", token: "+r);switch(f[0]){case 1:e.push(r);g.push(this.lexer.yytext);b.push(this.lexer.yylloc);e.push(f[1]);r=null;m?(r=m,m=null):(k=this.lexer.yyleng,n=this.lexer.yytext,v=this.lexer.yylineno,a=this.lexer.yylloc,0<q&&q--);break;case 2:o=this.productions_[f[1]][1];c.$=g[g.length-o];c._$={first_line:b[b.length-
170
+ (o||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(o||1)].first_column,last_column:b[b.length-1].last_column};p=this.performAction.call(c,n,k,v,this.yy,f[1],g,b);if("undefined"!==typeof p)return p;o&&(e=e.slice(0,-2*o),g=g.slice(0,-1*o),b=b.slice(0,-1*o));e.push(this.productions_[f[1]][0]);g.push(c.$);b.push(c._$);f=j[e[e.length-2]][e[e.length-1]];e.push(f);break;case 3:return!0}}return!0}}}();"undefined"!==typeof n&&"undefined"!==typeof j&&(j.parser=d,j.parse=function(){return d.parse.apply(d,
171
+ arguments)},j.main=function(a){if(!a[1])throw Error("Usage: "+a[0]+" FILE");a="undefined"!==typeof process?n("fs").readFileSync(n("path").join(process.cwd(),a[1]),"utf8"):n("file").path(n("file").cwd()).join(a[1]).read({charset:"utf-8"});return j.parser.parse(a)},"undefined"!==typeof z&&n.main===z&&j.main("undefined"!==typeof process?process.argv.slice(1):n("system").args))};y["./typeinference"]=function(j){var d=n("./types"),a=n("./nodes").nodes,i=n("underscore"),l=function(a,c,g){var i=a.aliased||
172
+ c.aliased,h,a=e(a),c=e(c);if(a instanceof d.Variable){if(a!=c){if(b(a,c))throw"Recursive unification";a.instance=c}}else if(a instanceof d.BaseType&&c instanceof d.Variable)l(c,a,g);else if(!(a instanceof d.NativeType||c instanceof d.NativeType))if(a instanceof d.BaseType&&c instanceof d.BaseType){var k=a.aliased||a.toString(),j=c.aliased||c.toString();if(a.name!=c.name||a.types.length!=c.types.length)throw Error("Type error on line "+g+": "+k+" is not "+j);if(a instanceof d.ObjectType)for(h in c.props){if(!(h in
173
+ a.props))throw Error("Type error on line "+g+": "+k+" is not "+j);l(a.props[h],c.props[h],g)}for(h=0;h<Math.min(a.types.length,c.types.length);h++)l(a.types[h],c.types[h],g);i&&(a.aliased=c.aliased=i)}else throw Error("Not unified: "+a+", "+c);},e=function(a){return a instanceof d.Variable&&a.instance?(a.instance=e(a.instance),a.instance):a},g=function(a,b,i){i||(i={});a=e(a);if(a instanceof d.Variable){if(s(a,b))return a;i[a.id]||(i[a.id]=new d.Variable);return i[a.id]}var o=new a.constructor(a.map(function(a){return g(a,
174
+ b,i)}));a.aliased&&(o.aliased=a.aliased);return o},b=function(a,b){b=e(b);if(b==a)return!0;if(b instanceof d.ObjectType){var g=[],i;for(i in b.props)g.push(b.props[i]);return s(a,g)}return b instanceof d.BaseType?s(a,b.types):!1},s=function(a,c){return 0<=i.map(c,function(c){return b(a,c)}).indexOf(!0)},w=function(a,b,e,g,h){var k=[],j=i.clone(e),n={};i.each(a.args,function(a,f){if(n[a.name])throw Error("Repeated function argument '"+a.name+"'");var d;d=a.type?p(a.type,e,h):b.types[f];j[a.name]=d;
175
+ n[a.name]=d;k.push(d)});q(a.whereDecls,j,g,h);var s=v(a.whereDecls,j,g,h),u;for(u in s)j[u]=s[u];s=i.map(r(a.body),function(a){return m(a,j,g,h)});s=s[s.length-1];k.push(s);a.type&&(u=p(a.type,e,h),l(s,u,a.lineno));return new d.FunctionType(k)},v=function(b,c,d,e){var h=d.slice(),g=i.clone(c),b=i.filter(b,function(b){return b instanceof a.Function});i.each(b,function(a){var b=k(a),c=b[0];h=h.concat(b[1]);g[a.name]=c});var l={};i.each(b,function(a){l[a.name]=w(a,g[a.name],g,h,e)});return l},k=function(a){var b=
176
+ [],a=i.map(a.args,function(a){var f=new d.Variable;a.type||b.push(f);return f});a.push(new d.Variable);return[new d.FunctionType(a),b]},q=function(b,c,e,g){b=i.filter(b,function(b){return b instanceof a.Data});i.each(b,function(a){var b=[new d.TagNameType(a.name)];if(c[a.name])throw Error("Multiple declarations of type constructor: "+a.name);var f={},e=i.clone(c);i.each(a.args,function(a){if(f[a.name])throw Error("Repeated type variable '"+a.name+"'");var c;c=a.type?p(a,e,g):new d.Variable;e[a.name]=
177
+ c;f[a.name]=c;b.push(c)});c[a.name]=new d.TagType(b)});i.each(b,function(a){var b=c[a.name],f=i.clone(c);i.each(a.args,function(a,c){f[a.name]=b.types[c+1]});i.each(a.tags,function(a){if(c[a.name])throw Error("Multiple declarations for data constructor: "+a.name);var e=[];i.each(a.vars,function(a,b){e[b]=p(a,f,g)});e.push(b);c[a.name]=new d.FunctionType(e)})})},r=function(b){return i.filter(b,function(b){return!(b instanceof a.Comment)})},m=function(a,b,j,o){j||(j=[]);return a.accept({visitFunction:function(){var d=
178
+ j.slice(),e=i.clone(b),g=k(a),l=g[0],d=d.concat(g[1]);a.name&&(e[a.name]=l);d=w(a,l,e,d,o);a.name&&(b[a.name]=d);return d},visitIfThenElse:function(){var d=i.map(r(a.ifTrue),function(a){return m(a,b,j,o)}),d=d[d.length-1],e=i.map(r(a.ifFalse),function(a){return m(a,b,j,o)});l(d,e[e.length-1],a.lineno);return d},visitCall:function(){var h=i.map(a.args,function(a){return m(a,b,j,o)}),k=m(a.func,b,j,o);if(e(k)instanceof d.NativeType)return new d.NativeType;if(e(k)instanceof d.TagType){var n=g(b[a.func.value],
179
+ j,{});i.each(n,function(b,c){if(!h[c])throw Error("Not enough arguments to "+a.func.value);var d=n.types.indexOf(b);-1!=d&&l(k.types[d],h[c]);l(b,h[c])});return k}var s=new d.Variable;h.push(s);l(new d.FunctionType(h),k,a.lineno);return s},visitLet:function(){var h=m(a.value,b,j,o),g;a.type&&(g=p(a.type,b,o),e(h)instanceof d.NativeType?h=g:l(h,g,a.lineno));return b[a.name]=h},visitAssignment:function(){var h=m(a.value,b,j,o);if(b[a.name]){if(e(h)instanceof d.NativeType)return b[a.name];l(h,b[a.name],
180
+ a.lineno)}else b[a.name]=h;return h},visitExpression:function(){return m(a.value,b,j,o)},visitDo:function(){return b[a.value.value].props["return"].types[1]},visitPropertyAccess:function(){var h=m(a.value,b,j,o);if(e(h)instanceof d.NativeType)return new d.NativeType;if(h instanceof d.ObjectType)h.props[a.property]||(h.props[a.property]=new d.Variable);else{var g={};g[a.property]=new d.Variable;l(h,new d.ObjectType(g),a.lineno)}return e(h).getPropertyType(a.property)},visitAccess:function(){var h=
181
+ m(a.value,b,j,o);if(e(h)instanceof d.NativeType)return new d.NativeType;l(h,new d.ArrayType(new d.Variable),a.lineno);var g=m(a.property,b,j,o);l(g,new d.NumberType,a.lineno);return e(h).type},visitBinaryGenericOperator:function(){var e=m(a.left,b,j,o),g=m(a.right,b,j,o);l(e,g,a.lineno);return new d.BooleanType},visitBinaryNumberOperator:function(){var e=new d.NumberType,g=m(a.left,b,j,o),i=m(a.right,b,j,o);l(g,e,a.left.lineno);l(i,e,a.right.lineno);return e},visitBinaryBooleanOperator:function(){var e=
182
+ new d.BooleanType,g=m(a.left,b,j,o),i=m(a.right,b,j,o);l(g,e,a.left.lineno);l(i,e,a.right.lineno);return e},visitBinaryStringOperator:function(){var e=new d.StringType,g=m(a.left,b,j,o),i=m(a.right,b,j,o);l(g,e,a.left.lineno);l(i,e,a.right.lineno);return e},visitWith:function(){var e=m(a.left,b,j,o),g=m(a.right,b,j,o),i={},k=new d.ObjectType({});l(e,k,a.left.lineno);l(g,k,a.right.lineno);for(var n in e.props)i[n]=e.props[n];for(n in g.props)i[n]=g.props[n];return new d.ObjectType(i)},visitData:function(){q([a],
183
+ b,j,o);return new d.NativeType},visitMatch:function(){var h=new d.Variable,k=m(a.value,b,j,o),n=i.clone(b);i.each(a.cases,function(a){var f=j.slice(),s=n[a.pattern.tag.value];if(!s)throw Error("Couldn't find the tag: "+a.pattern.tag.value);l(k,g(i.last(e(s).types),f),a.lineno);var p={},q=function(a,d){i.each(a.vars,function(h,j){var o=s.types.indexOf(b[a.tag.value][j]),m=d.slice();m.push(o);for(var r=k,o=0;o<m.length&&-1!=m[o];o++)r=e(r).types[m[o]];h.accept({visitIdentifier:function(){if("_"!=h.value){if(p[h.value])throw Error('Repeated variable "'+
184
+ h.value+'" in pattern');n[h.value]=b[a.tag.value][j];f.push(r);p[h.value]=n[h.value]}},visitPattern:function(){var a=g(i.last(e(n[h.tag.value]).types),f);l(r,a,h.lineno);q(h,m)}})})};q(a.pattern,[]);var r=m(a.value,n,f,o);r instanceof d.FunctionType&&1==r.types.length?l(h,i.last(r.types),a.lineno):l(h,r,a.lineno)});return h},visitType:function(){o[a.name]=p(a.value,b,o);o[a.name].aliased=a.name;return new d.NativeType},visitIdentifier:function(){var e=a.value;return!b[e]?new d.NativeType:g(b[e],j)},
185
+ visitNumber:function(){return new d.NumberType},visitString:function(){return new d.StringType},visitBoolean:function(){return new d.BooleanType},visitArray:function(){var e=new d.Variable;i.each(a.values,function(a){l(e,m(a,b,j,o),a.lineno)});return new d.ArrayType(e)},visitTuple:function(){var e={};i.each(a.values,function(a,d){e[d]=m(a,b,j,o)});return new d.ObjectType(e)},visitObject:function(){var e={},g;for(g in a.values)e[g]=m(a.values[g],b,j,o);return new d.ObjectType(e)}})},p=function(a,b,
186
+ j){return a.accept({visitGeneric:function(a){return new d.Variable(a.value)},visitTypeFunction:function(a){return new d.FunctionType(i.map(a.args,function(a){return p(a,b,j)}))},visitTypeArray:function(a){return new d.ArrayType(p(a.value,b,j))},visitTypeName:function(a){if(a.value in j)return j[a.value];if(!a.args.length)switch(a.value){case "Number":return new d.NumberType;case "String":return new d.StringType;case "Boolean":return new d.BooleanType}var f=b[a.value];if(f){if(e(f)instanceof d.Variable)return f;
187
+ if(a.args.length!=f.types.length-1)throw Error("Type arg lengths differ: '"+a.value+"' given "+a.args.length+" but should be "+(f.types.length-1));f=g(e(f));i.forEach(a.args,function(a,d){var e=p(a,b,j);l(f.types[1+d],e,a.lineno)});return f}throw Error("Can't convert from explicit type: "+JSON.stringify(a));},visitTypeObject:function(a){var e={};i.forEach(a.values,function(a,d){e[d]=p(a,b,j)});return new d.ObjectType(e)}})};j.nodeToType=p;j.typecheck=function(a,b,d){return(a=i.map(a,function(a){return m(a,
188
+ b,[],d)}))&&a[0]}};y["./types"]=function(j){var d=n("underscore"),a=function(b){b?this.id=l(b):(this.id=a.nextId,a.nextId++);this.instance=null};a.nextId=0;j.Variable=a;var i=function(a){var d="";26<=a&&(d=i(a/26-1),a%=26);return d+=String.fromCharCode(97+a)};a.prototype.toString=function(){return!this.instance?"#"+i(this.id):this.instance.toString()};var l=function(a){return d.reduce(d.map(a.split(""),function(a,b){return a.charCodeAt(0)-97+26*b}),function(a,b){return a+b},0)},e=function(){this.types=
189
+ []};e.prototype.map=function(){};e.prototype.toString=function(){return this.name};j.BaseType=e;var g=function(a){this.types=a};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Function";g.prototype.map=function(a){return d.map(this.types,a)};g.prototype.toString=function(){return this.name+"("+d.map(this.types,function(a){return a.toString()}).join(", ")+")"};j.FunctionType=g;g=function(){};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Number";j.NumberType=g;g=function(){};
190
+ g.prototype=new e;g.prototype.constructor=g;g.prototype.name="String";j.StringType=g;g=function(){};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Boolean";j.BooleanType=g;g=function(a){this.type=a;this.types=[a]};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Array";g.prototype.map=function(a){return a(this.type)};g.prototype.toString=function(){return"["+this.type.toString()+"]"};j.ArrayType=g;g=function(a){this.props=a};g.prototype=new e;g.prototype.constructor=g;
191
+ g.prototype.name="Object";g.prototype.map=function(a){var d=this.props,e;for(e in d)d[e]=a(d[e]);return d};g.prototype.getPropertyType=function(a){return this.props[a]};g.prototype.toString=function(){var a=[],d;for(d in this.props)a.push(d+": "+this.props[d].toString());return"{"+a.join(", ")+"}"};j.ObjectType=g;g=function(a){this.name=a};g.prototype=new e;g.prototype.constructor=g;g.prototype.map=function(){return this.name};j.TagNameType=g;g=function(a){this.types=a;this.name=a[0].toString()};
192
+ g.prototype=new e;g.prototype.constructor=g;g.prototype.map=function(a){return d.map(this.types,a)};g.prototype.toString=function(){return d.map(this.types,function(a){return a.toString()}).join(" ")};j.TagType=g;g=function(){};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Unit";j.UnitType=g;g=function(){};g.prototype=new e;g.prototype.constructor=g;g.prototype.name="Native";j.NativeType=g};roy.lexer=n("./lexer");roy.compile=n("./compile").compile})();
@@ -0,0 +1 @@
1
+ require 'roy_lang'
@@ -0,0 +1,61 @@
1
+ require 'execjs'
2
+ require 'source'
3
+
4
+ module Roy
5
+ EngineError = ExecJS::RuntimeError
6
+ CompilationError = ExecJS::ProgramError
7
+
8
+ module Source
9
+ def self.path
10
+ @path ||= ENV['ROY_SOURCE_PATH'] || bundled_path
11
+ end
12
+
13
+ def self.path=(path)
14
+ @contents = @version = @context = nil
15
+ @path = path
16
+ end
17
+
18
+ def self.contents
19
+ @contents ||= File.read(path)
20
+ end
21
+
22
+ def self.version
23
+ @version ||= contents[/Roy v([\d.]+)/, 1]
24
+ end
25
+
26
+ def self.bare_option
27
+ @bare_option ||= contents.match(/noWrap/) ? 'noWrap' : 'bare'
28
+ end
29
+
30
+ def self.context
31
+ @context ||= ExecJS.compile(contents)
32
+ end
33
+ end
34
+
35
+ class << self
36
+ def engine
37
+ end
38
+
39
+ def engine=(engine)
40
+ end
41
+
42
+ def version
43
+ Source.version
44
+ end
45
+
46
+ # Compile a script (String or IO) to JavaScript.
47
+ def compile(script, options = {})
48
+ script = script.read if script.respond_to?(:read)
49
+
50
+ if options.key?(:bare)
51
+ elsif options.key?(:no_wrap)
52
+ options[:bare] = options[:no_wrap]
53
+ else
54
+ options[:bare] = false
55
+ end
56
+
57
+ # Not sure what to do here?
58
+ Source.context.call("roy.compile", script, options)["output"]
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,7 @@
1
+ module Roy
2
+ module Source
3
+ def self.bundled_path
4
+ File.expand_path("../bundled-roy.js", __FILE__)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'roy-lang'
3
+ s.version = '0.0.2'
4
+ s.homepage = "http://github.com/tmcgilchrist/ruby-roy"
5
+ s.summary = "Ruby Roy Compiler"
6
+
7
+ s.author = 'Tim McGilchrist'
8
+ s.email = 'timmcgil@gmail.com'
9
+
10
+ s.description = "Ruby Roy is a bridge to the Roy JS compiler."
11
+
12
+ s.add_runtime_dependency 'execjs', '~> 1.3'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+ end
@@ -0,0 +1,20 @@
1
+ require 'roy_lang'
2
+ require 'test/unit'
3
+ require 'stringio'
4
+
5
+ class TestRoy < Test::Unit::TestCase
6
+ def test_compile
7
+ assert_equal "(function() {\nconsole.log('Hello world');\n})();\n", Roy.compile("console.log 'Hello world'")
8
+ end
9
+
10
+ def test_compile_with_io
11
+ io = StringIO.new("console.log 'Hello, World!'\n")
12
+ assert_equal "(function() {\nconsole.log('Hello, World!');\n})();\n", Roy.compile(io)
13
+ end
14
+
15
+ def test_compilation_error
16
+ assert_raise Roy::CompilationError do
17
+ Roy.compile(nil)
18
+ end
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: roy-lang
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tim McGilchrist
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: execjs
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ description: Ruby Roy is a bridge to the Roy JS compiler.
31
+ email: timmcgil@gmail.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - Gemfile
37
+ - LICENSE
38
+ - README.md
39
+ - Rakefile
40
+ - lib/bundled-roy.js
41
+ - lib/roy-lang.rb
42
+ - lib/roy_lang.rb
43
+ - lib/source.rb
44
+ - roy-lang.gemspec
45
+ - test/test_roy.rb
46
+ homepage: http://github.com/tmcgilchrist/ruby-roy
47
+ licenses: []
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project:
66
+ rubygems_version: 1.8.21
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: Ruby Roy Compiler
70
+ test_files:
71
+ - test/test_roy.rb