"use strict";function characters(b){return b.split("")}function member(c,a){return 0<=a.indexOf(c)}function find_if(e,a){for(var b=0,c=a.length;b<c;++b)if(e(a[b]))return a[b]}function repeat_string(d,a){if(0>=a)return"";if(1==a)return d;var b=repeat_string(d,a>>1);return b+=b,1&a&&(b+=d),b}function configure_error_stack(b){Object.defineProperty(b.prototype,"stack",{get:function(){var b=new Error(this.message);b.name=this.name;try{throw b}catch(b){return b.stack}}})}function DefaultsError(c,a){this.message=c,this.defs=a}DefaultsError.prototype=Object.create(Error.prototype),DefaultsError.prototype.constructor=DefaultsError,DefaultsError.prototype.name="DefaultsError",configure_error_stack(DefaultsError),DefaultsError.croak=function(c,a){throw new DefaultsError(c,a)};function defaults(f,a,b){!0===f&&(f={});var c=f||{};if(b)for(var d in c)HOP(c,d)&&!HOP(a,d)&&DefaultsError.croak("`"+d+"` is not a supported option",a);for(var d in a)HOP(a,d)&&(c[d]=f&&HOP(f,d)?f[d]:a[d]);return c}function merge(e,a){var b=0;for(var c in a)HOP(a,c)&&(e[c]=a[c],b++);return b}function noop(){}function return_false(){return!1}function return_true(){return!0}function return_this(){return this}function return_null(){return null}var MAP=function(){function f(e,g,a){function f(){var f=g(e[n],n),h=f instanceof c;return h&&(f=f.v),f instanceof m?(f=f.v,f instanceof b?i.push.apply(i,a?f.v.slice().reverse():f.v):i.push(f)):f!==d&&(f instanceof b?j.push.apply(j,a?f.v.slice().reverse():f.v):j.push(f)),h}var n,j=[],i=[];if(!(e instanceof Array)){for(n in e)if(HOP(e,n)&&f())break;}else if(a){for(n=e.length;0<=--n&&!f(););j.reverse(),i.reverse()}else for(n=0;n<e.length&&!f();++n);return i.concat(j)}function m(b){this.v=b}function b(b){this.v=b}function c(b){this.v=b}f.at_top=function(b){return new m(b)},f.splice=function(c){return new b(c)},f.last=function(b){return new c(b)};var d=f.skip={};return f}();function push_uniq(c,a){0>c.indexOf(a)&&c.push(a)}function string_template(c,d){return c.replace(/\{(.+?)\}/g,function(b,a){return d&&d[a]})}function remove(d,a){for(var b=d.length;0<=--b;)d[b]===a&&d.splice(b,1)}function mergeSort(e,h){function g(c,d){for(var a=[],b=0,e=0,f=0;b<c.length&&e<d.length;)a[f++]=0>=h(c[b],d[e])?c[b++]:d[e++];return b<c.length&&a.push.apply(a,c.slice(b)),e<d.length&&a.push.apply(a,d.slice(e)),a}function b(d){if(1>=d.length)return d;var c=Math.floor(d.length/2),a=d.slice(0,c),e=d.slice(c);return a=b(a),e=b(e),g(a,e)}return 2>e.length?e.slice():b(e)}function makePredicate(i){function j(b){return JSON.stringify(b).replace(/[\u2028\u2029]/g,function(b){return"\u2028"===b?"\\u2028":"\u2029"===b?"\\u2029":b})}function a(d){if(1==d.length)return b+="return str === "+j(d[0])+";";b+="switch(str){";for(var a=0;a<d.length;++a)b+="case "+j(d[a])+":";b+="return true}return false;"}i instanceof Array||(i=i.split(" "));var b="",c=[];out:for(var d=0;d<i.length;++d){for(var e=0;e<c.length;++e)if(c[e][0].length==i[d].length){c[e].push(i[d]);continue out}c.push([i[d]])}if(3<c.length){c.sort(function(b,c){return c.length-b.length}),b+="switch(str.length){";for(var f,d=0;d<c.length;++d)f=c[d],b+="case "+f[0].length+":",a(f);b+="}"}else a(i);return new Function("str",b)}function all(d,a){for(var b=d.length;0<=--b;)if(!a(d[b]))return!1;return!0}function Dictionary(){this._values=Object.create(null),this._size=0}Dictionary.prototype={set:function(c,a){return this.has(c)||++this._size,this._values["$"+c]=a,this},add:function(c,a){return this.has(c)?this.get(c).push(a):this.set(c,[a]),this},get:function(b){return this._values["$"+b]},del:function(b){return this.has(b)&&(--this._size,delete this._values["$"+b]),this},has:function(b){return"$"+b in this._values},each:function(c){for(var a in this._values)c(this._values[a],a.substr(1))},size:function(){return this._size},map:function(d){var a=[];for(var b in this._values)a.push(d(this._values[b],b.substr(1)));return a},clone:function(){var c=new Dictionary;for(var a in this._values)c._values[a]=this._values[a];return c._size=this._size,c},toObject:function(){return this._values}},Dictionary.fromObject=function(c){var a=new Dictionary;return a._size=merge(a._values,c),a};function HOP(c,a){return Object.prototype.hasOwnProperty.call(c,a)}function first_in_statement(e){for(var a,b=e.parent(-1),c=0;a=e.parent(c);c++){if(a instanceof AST_Statement&&a.body===b)return!0;if(a instanceof AST_Sequence&&a.expressions[0]===b||"Call"==a.TYPE&&a.expression===b||a instanceof AST_Dot&&a.expression===b||a instanceof AST_Sub&&a.expression===b||a instanceof AST_Conditional&&a.condition===b||a instanceof AST_Binary&&a.left===b||a instanceof AST_UnaryPostfix&&a.expression===b)b=a;else return!1}}