(function(undefined){var global_object=this,console;if(typeof global!=="undefined"){global_object=global}if(typeof window!=="undefined"){global_object=window}if(typeof global_object.console==="object"){console=global_object.console}else if(global_object.console==null){console=global_object.console={}}else{console={}}if(!("log"in console)){console.log=function(){}}if(!("warn"in console)){console.warn=console.log}if(typeof this.Opal!=="undefined"){console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup.");return this.Opal}var nil;var BasicObject;var _Object;var Module;var Class;function BasicObject_alloc(){}function Object_alloc(){}function Class_alloc(){}function Module_alloc(){}function NilClass_alloc(){}var Opal=this.Opal={};var BridgedClasses={};Opal.global=global_object;global_object.Opal=Opal;Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning",enable_stack_trace:true};var $hasOwn=Object.hasOwnProperty;var $slice=Opal.slice=Array.prototype.slice;var nil_id=4;var unique_id=nil_id;Opal.uid=function(){unique_id+=2;return unique_id};Opal.id=function(obj){if(obj.$$is_number)return obj*2+1;return obj.$$id||(obj.$$id=Opal.uid())};Opal.gvars={};Opal.exit=function(status){if(Opal.gvars.DEBUG)console.log("Exited with status "+status)};Opal.exceptions=[];Opal.pop_exception=function(){Opal.gvars["!"]=Opal.exceptions.pop()||nil};Opal.inspect=function(obj){if(obj===undefined){return"undefined"}else if(obj===null){return"null"}else if(!obj.$$class){return obj.toString()}else{return obj.$inspect()}};Opal.truthy=function(val){return val!==nil&&val!=null&&(!val.$$is_boolean||val==true)};Opal.falsy=function(val){return val===nil||val==null||val.$$is_boolean&&val==false};function const_get_name(cref,name){if(cref)return cref.$$const[name]}function const_lookup_nesting(nesting,name){var i,ii,result,constant;if(nesting.length===0)return;for(i=0,ii=nesting.length;i")+">";klass.$$proto=alloc.prototype;klass.$$proto.$$class=klass;klass.constructor=singleton_class_alloc;klass.$$is_class=true;klass.$$class=Class;return klass};Opal.module=function(base,name){var module;if(base==null){base=_Object}if(!base.$$is_class&&!base.$$is_module){base=base.$$class}module=const_get_name(base,name);if(module==null&&base===_Object)module=const_lookup_ancestors(_Object,name);if(module){if(!module.$$is_module&&module!==_Object){throw Opal.TypeError.$new(name+" is not a module")}}else{module=Opal.module_allocate(Module);Opal.const_set(base,name,module)}return module};Opal.module_initialize=function(module,block){if(block!==nil){var block_self=block.$$s;block.$$s=null;block.call(module);block.$$s=block_self}return nil};Opal.module_allocate=function(superclass){var mtor=function(){};mtor.prototype=superclass.$$alloc.prototype;var module_constructor=function(){};module_constructor.prototype=new mtor;var module=new module_constructor;var module_prototype={};Opal.setup_module_or_class(module);module.$$included_in=[];module_constructor.displayName="#>";module.$$proto=module_prototype;module.constructor=module_constructor;module.$$is_module=true;module.$$class=Module;module.$$super=superclass;module.$$parent=superclass;return module};Opal.get_singleton_class=function(object){if(object.$$meta){return object.$$meta}if(object.$$is_class||object.$$is_module){return Opal.build_class_singleton_class(object)}return Opal.build_object_singleton_class(object)};Opal.build_class_singleton_class=function(object){var alloc,superclass,klass;if(object.$$meta){return object.$$meta}alloc=object.constructor;superclass=object===BasicObject?Class:Opal.build_class_singleton_class(object.$$super);klass=Opal.setup_class_object(null,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.build_object_singleton_class=function(object){var superclass=object.$$class,name="#>";var alloc=Opal.boot_class_alloc(name,function(){},superclass);var klass=Opal.setup_class_object(name,alloc,superclass.$$name,superclass.constructor);klass.$$super=superclass;klass.$$parent=superclass;klass.$$class=superclass.$$class;klass.$$proto=object;klass.$$is_singleton=true;klass.$$singleton_of=object;return object.$$meta=klass};Opal.class_variables=function(module){var ancestors=Opal.ancestors(module),i,length=ancestors.length,result={};for(i=length-1;i>=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars){result[cvar]=ancestor.$$cvars[cvar]}}return result};Opal.class_variable_set=function(module,name,value){var ancestors=Opal.ancestors(module),i,length=ancestors.length;for(i=length-2;i>=0;i--){var ancestor=ancestors[i];if($hasOwn.call(ancestor.$$cvars,name)){ancestor.$$cvars[name]=value;return value}}module.$$cvars[name]=value;return value};Opal.bridge_method=function(target_constructor,from,name,body){var ancestors,i,ancestor,length;ancestors=target_constructor.$$bridge.$ancestors();for(i=0,length=ancestors.length;i=0;i--){Opal_bridge_methods_to_constructor(bridged[i],donator)}}};function Opal_bridge_methods_to_constructor(target_constructor,donator){var i,method,methods=donator.$instance_methods();for(i=methods.length-1;i>=0;i--){method="$"+methods[i];Opal.bridge_method(target_constructor,donator,method,donator.$$proto[method])}}function Opal_add_bridged_constructor(target_constructor,donator){var donator_id=donator.$__id__();if(!BridgedClasses[donator_id]){BridgedClasses[donator_id]=[]}BridgedClasses[donator_id].push(target_constructor)}Opal.has_cyclic_dep=function has_cyclic_dep(base_id,deps,prop,seen){var i,dep_id,dep;for(i=deps.length-1;i>=0;i--){dep=deps[i];dep_id=dep.$$id;if(seen[dep_id]){continue}seen[dep_id]=true;if(dep_id===base_id){return true}if(has_cyclic_dep(base_id,dep[prop],prop,seen)){return true}}return false};Opal.append_features=function(module,includer){var iclass,donator,prototype,methods,id,i;for(i=includer.$$inc.length-1;i>=0;i--){if(includer.$$inc[i]===module){return}}if(!includer.$$is_class&&Opal.has_cyclic_dep(includer.$$id,[module],"$$inc",{})){throw Opal.ArgumentError.$new("cyclic include detected")}Opal.const_cache_version++;includer.$$inc.push(module);module.$$included_in.push(includer);Opal.bridge_methods(includer,module);iclass={$$name:module.$$name,$$proto:module.$$proto,$$parent:includer.$$parent,$$module:module,$$iclass:true};includer.$$parent=iclass;methods=module.$instance_methods();for(i=methods.length-1;i>=0;i--){Opal.update_includer(module,includer,"$"+methods[i])}};Opal.stubs={};Opal.bridge=function(klass,constructor){if(constructor.$$bridge){throw Opal.ArgumentError.$new("already bridged")}Opal.stub_subscribers.push(constructor.prototype);for(var method_name in Opal.stubs){if(!(method_name in constructor.prototype)){constructor.prototype[method_name]=Opal.stub_for(method_name)}}constructor.prototype.$$class=klass;constructor.$$bridge=klass;var ancestors=klass.$ancestors();for(var i=ancestors.length-1;i>=0;i--){Opal_add_bridged_constructor(constructor,ancestors[i]);Opal_bridge_methods_to_constructor(constructor,ancestors[i])}for(var name in BasicObject_alloc.prototype){var method=BasicObject_alloc.prototype[method];if(method&&method.$$stub&&!(name in constructor.prototype)){constructor.prototype[name]=method}}return klass};Opal.update_includer=function(module,includer,jsid){var dest,current,body,klass_includees,j,jj,current_owner_index,module_index;body=module.$$proto[jsid];dest=includer.$$proto;current=dest[jsid];if(dest.hasOwnProperty(jsid)&&!current.$$donated&&!current.$$stub){}else if(dest.hasOwnProperty(jsid)&&!current.$$stub){klass_includees=includer.$$inc;for(j=0,jj=klass_includees.length;j=0;i--){modules=Opal.ancestors(parent.$$inc[i]);for(j=0,jj=modules.length;j1||(has_mlhs||has_trailing_comma)&&block.length===1){arg=Opal.to_ary(arg)}if((block.length>1||has_trailing_comma&&block.length===1)&&arg.$$is_array){return block.apply(null,arg)}else{return block(arg)}};Opal.yieldX=function(block,args){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&args.length===1){if(args[0].$$is_array){return block.apply(null,args[0])}}if(!args.$$is_array){var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i=0;i--){Opal.bridge_method(bridged[i],obj,jsid,body)}}var singleton_of=obj.$$singleton_of;if(obj.$method_added&&!obj.$method_added.$$stub&&!singleton_of){obj.$method_added(jsid.substr(1))}else if(singleton_of&&singleton_of.$singleton_method_added&&!singleton_of.$singleton_method_added.$$stub){singleton_of.$singleton_method_added(jsid.substr(1))}return nil};Opal.defs=function(obj,jsid,body){Opal.defn(Opal.get_singleton_class(obj),jsid,body)};Opal.rdef=function(obj,jsid){if(!$hasOwn.call(obj.$$proto,jsid)){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}delete obj.$$proto[jsid];if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_removed&&!obj.$$proto.$singleton_method_removed.$$stub){obj.$$proto.$singleton_method_removed(jsid.substr(1))}}else{if(obj.$method_removed&&!obj.$method_removed.$$stub){obj.$method_removed(jsid.substr(1))}}};Opal.udef=function(obj,jsid){if(!obj.$$proto[jsid]||obj.$$proto[jsid].$$stub){throw Opal.NameError.$new("method '"+jsid.substr(1)+"' not defined in "+obj.$name())}Opal.add_stub_for(obj.$$proto,jsid);if(obj.$$is_singleton){if(obj.$$proto.$singleton_method_undefined&&!obj.$$proto.$singleton_method_undefined.$$stub){obj.$$proto.$singleton_method_undefined(jsid.substr(1))}}else{if(obj.$method_undefined&&!obj.$method_undefined.$$stub){obj.$method_undefined(jsid.substr(1))}}};Opal.alias=function(obj,name,old){var id="$"+name,old_id="$"+old,body=obj.$$proto["$"+old],alias;if(obj.$$eval){return Opal.alias(Opal.get_singleton_class(obj),name,old)}if(typeof body!=="function"||body.$$stub){var ancestor=obj.$$super;while(typeof body!=="function"&&ancestor){body=ancestor[old_id];ancestor=ancestor.$$super}if(typeof body!=="function"||body.$$stub){throw Opal.NameError.$new("undefined method `"+old+"' for class `"+obj.$name()+"'")}}if(body.$$alias_of)body=body.$$alias_of;alias=function(){var block=alias.$$p,args,i,ii;args=new Array(arguments.length);for(i=0,ii=arguments.length;i","$coerce_to!","$!=","$[]","$upcase"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Opal_bridge_1,TMP_Opal_type_error_2,TMP_Opal_coerce_to_3,TMP_Opal_coerce_to$B_4,TMP_Opal_coerce_to$q_5,TMP_Opal_try_convert_6,TMP_Opal_compare_7,TMP_Opal_destructure_8,TMP_Opal_respond_to$q_9,TMP_Opal_inspect_obj_10,TMP_Opal_instance_variable_name$B_11,TMP_Opal_class_variable_name$B_12,TMP_Opal_const_name$B_13,TMP_Opal_pristine_14;Opal.defs(self,"$bridge",TMP_Opal_bridge_1=function $$bridge(klass,constructor){var self=this;return Opal.bridge(klass,constructor)},TMP_Opal_bridge_1.$$arity=2);Opal.defs(self,"$type_error",TMP_Opal_type_error_2=function $$type_error(object,type,method,coerced){var $a,self=this;if(method==null){method=nil}if(coerced==null){coerced=nil}if($truthy($truthy($a=method)?coerced:$a)){return Opal.const_get_relative($nesting,"TypeError").$new(""+"can't convert "+object.$class()+" into "+type+" ("+object.$class()+"#"+method+" gives "+coerced.$class())}else{return Opal.const_get_relative($nesting,"TypeError").$new(""+"no implicit conversion of "+object.$class()+" into "+type)}},TMP_Opal_type_error_2.$$arity=-3);Opal.defs(self,"$coerce_to",TMP_Opal_coerce_to_3=function $$coerce_to(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){}else{self.$raise(self.$type_error(object,type))}return object.$__send__(method)},TMP_Opal_coerce_to_3.$$arity=3);Opal.defs(self,"$coerce_to!",TMP_Opal_coerce_to$B_4=function(object,type,method){var self=this,coerced=nil;coerced=self.$coerce_to(object,type,method);if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_Opal_coerce_to$B_4.$$arity=3);Opal.defs(self,"$coerce_to?",TMP_Opal_coerce_to$q_5=function(object,type,method){var self=this,coerced=nil;if($truthy(object["$respond_to?"](method))){}else{return nil}coerced=self.$coerce_to(object,type,method);if($truthy(coerced["$nil?"]())){return nil}if($truthy(type["$==="](coerced))){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced},TMP_Opal_coerce_to$q_5.$$arity=3);Opal.defs(self,"$try_convert",TMP_Opal_try_convert_6=function $$try_convert(object,type,method){var self=this;if($truthy(type["$==="](object))){return object}if($truthy(object["$respond_to?"](method))){return object.$__send__(method)}else{return nil}},TMP_Opal_try_convert_6.$$arity=3);Opal.defs(self,"$compare",TMP_Opal_compare_7=function $$compare(a,b){var self=this,compare=nil;compare=a["$<=>"](b);if($truthy(compare===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+a.$class()+" with "+b.$class()+" failed")}return compare},TMP_Opal_compare_7.$$arity=2);Opal.defs(self,"$destructure",TMP_Opal_destructure_8=function $$destructure(args){var self=this;if(args.length==1){return args[0]}else if(args.$$is_array){return args}else{var args_ary=new Array(args.length);for(var i=0,l=args_ary.length;i=0;i--){method_name=method_names[i];owner_class.$$proto["$"+method_name].$$pristine=true}return nil},TMP_Opal_pristine_14.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/module"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range,$hash2=Opal.hash2;Opal.add_stubs(["$===","$raise","$equal?","$<","$>","$nil?","$attr_reader","$attr_writer","$class_variable_name!","$new","$const_name!","$=~","$inject","$split","$const_get","$==","$!","$start_with?","$to_proc","$lambda","$bind","$call","$class","$append_features","$included","$name","$cover?","$size","$merge","$compile","$proc","$+","$to_s","$__id__","$constants","$include?","$copy_class_variables","$copy_constants"]);return function($base,$super,$parent_nesting){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Module_allocate_1,TMP_Module_initialize_2,TMP_Module_$eq$eq$eq_3,TMP_Module_$lt_4,TMP_Module_$lt$eq_5,TMP_Module_$gt_6,TMP_Module_$gt$eq_7,TMP_Module_$lt$eq$gt_8,TMP_Module_alias_method_9,TMP_Module_alias_native_10,TMP_Module_ancestors_11,TMP_Module_append_features_12,TMP_Module_attr_accessor_13,TMP_Module_attr_reader_14,TMP_Module_attr_writer_15,TMP_Module_autoload_16,TMP_Module_class_variables_17,TMP_Module_class_variable_get_18,TMP_Module_class_variable_set_19,TMP_Module_class_variable_defined$q_20,TMP_Module_remove_class_variable_21,TMP_Module_constants_22,TMP_Module_constants_23,TMP_Module_nesting_24,TMP_Module_const_defined$q_25,TMP_Module_const_get_27,TMP_Module_const_missing_28,TMP_Module_const_set_29,TMP_Module_public_constant_30,TMP_Module_define_method_31,TMP_Module_remove_method_33,TMP_Module_singleton_class$q_34,TMP_Module_include_35,TMP_Module_included_modules_36,TMP_Module_include$q_37,TMP_Module_instance_method_38,TMP_Module_instance_methods_39,TMP_Module_included_40,TMP_Module_extended_41,TMP_Module_method_added_42,TMP_Module_method_removed_43,TMP_Module_method_undefined_44,TMP_Module_module_eval_45,TMP_Module_module_exec_47,TMP_Module_method_defined$q_48,TMP_Module_module_function_49,TMP_Module_name_50,TMP_Module_remove_const_51,TMP_Module_to_s_52,TMP_Module_undef_method_53,TMP_Module_instance_variables_54,TMP_Module_dup_55,TMP_Module_copy_class_variables_56,TMP_Module_copy_constants_57;Opal.defs(self,"$allocate",TMP_Module_allocate_1=function $$allocate(){var self=this;var module;module=Opal.module_allocate(self);return module},TMP_Module_allocate_1.$$arity=0);Opal.defn(self,"$initialize",TMP_Module_initialize_2=function $$initialize(){var self=this,$iter=TMP_Module_initialize_2.$$p,block=$iter||nil;if($iter)TMP_Module_initialize_2.$$p=null;return Opal.module_initialize(self,block)},TMP_Module_initialize_2.$$arity=0);Opal.defn(self,"$===",TMP_Module_$eq$eq$eq_3=function(object){var self=this;if($truthy(object==null)){return false}return Opal.is_a(object,self)},TMP_Module_$eq$eq$eq_3.$$arity=1);Opal.defn(self,"$<",TMP_Module_$lt_4=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"compared with non class/module")}var working=self,ancestors,i,length;if(working===other){return false}for(i=0,ancestors=Opal.ancestors(self),length=ancestors.length;i",TMP_Module_$gt_6=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"compared with non class/module")}return $rb_lt(other,self)},TMP_Module_$gt_6.$$arity=1);Opal.defn(self,"$>=",TMP_Module_$gt$eq_7=function(other){var $a,self=this;return $truthy($a=self["$equal?"](other))?$a:$rb_gt(self,other)},TMP_Module_$gt$eq_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Module_$lt$eq$gt_8=function(other){var self=this,lt=nil;if(self===other){return 0}if($truthy(Opal.const_get_relative($nesting,"Module")["$==="](other))){}else{return nil}lt=$rb_lt(self,other);if($truthy(lt["$nil?"]())){return nil}if($truthy(lt)){return-1}else{return 1}},TMP_Module_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$alias_method",TMP_Module_alias_method_9=function $$alias_method(newname,oldname){var self=this;Opal.alias(self,newname,oldname);return self},TMP_Module_alias_method_9.$$arity=2);Opal.defn(self,"$alias_native",TMP_Module_alias_native_10=function $$alias_native(mid,jsid){var self=this;if(jsid==null){jsid=mid}Opal.alias_native(self,mid,jsid);return self},TMP_Module_alias_native_10.$$arity=-2);Opal.defn(self,"$ancestors",TMP_Module_ancestors_11=function $$ancestors(){var self=this;return Opal.ancestors(self)},TMP_Module_ancestors_11.$$arity=0);Opal.defn(self,"$append_features",TMP_Module_append_features_12=function $$append_features(includer){var self=this;Opal.append_features(self,includer);return self},TMP_Module_append_features_12.$$arity=1);Opal.defn(self,"$attr_accessor",TMP_Module_attr_accessor_13=function $$attr_accessor($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}$send(self,"attr_reader",Opal.to_a(names));return $send(self,"attr_writer",Opal.to_a(names))},TMP_Module_attr_accessor_13.$$arity=-1);Opal.alias(self,"attr","attr_accessor");Opal.defn(self,"$attr_reader",TMP_Module_attr_reader_14=function $$attr_reader($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name);var body=function(ivar){return function(){if(this[ivar]==null){return nil}else{return this[ivar]}}}(ivar);proto[ivar]=nil;body.$$parameters=[];body.$$arity=0;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_Module_attr_reader_14.$$arity=-1);Opal.defn(self,"$attr_writer",TMP_Module_attr_writer_15=function $$attr_writer($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}var proto=self.$$proto;for(var i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name);var body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]];body.$$arity=1;proto[ivar]=nil;if(self.$$is_singleton){proto.constructor.prototype[id]=body}else{Opal.defn(self,id,body)}}return nil},TMP_Module_attr_writer_15.$$arity=-1);Opal.defn(self,"$autoload",TMP_Module_autoload_16=function $$autoload(const$,path){var self=this;if(self.$$autoload==null)self.$$autoload={};Opal.const_cache_version++;self.$$autoload[const$]=path;return nil},TMP_Module_autoload_16.$$arity=2);Opal.defn(self,"$class_variables",TMP_Module_class_variables_17=function $$class_variables(){var self=this;return Object.keys(Opal.class_variables(self))},TMP_Module_class_variables_17.$$arity=0);Opal.defn(self,"$class_variable_get",TMP_Module_class_variable_get_18=function $$class_variable_get(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);var value=Opal.class_variables(self)[name];if(value==null){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"uninitialized class variable "+name+" in "+self,name))}return value},TMP_Module_class_variable_get_18.$$arity=1);Opal.defn(self,"$class_variable_set",TMP_Module_class_variable_set_19=function $$class_variable_set(name,value){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variable_set(self,name,value)},TMP_Module_class_variable_set_19.$$arity=2);Opal.defn(self,"$class_variable_defined?",TMP_Module_class_variable_defined$q_20=function(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);return Opal.class_variables(self).hasOwnProperty(name)},TMP_Module_class_variable_defined$q_20.$$arity=1);Opal.defn(self,"$remove_class_variable",TMP_Module_remove_class_variable_21=function $$remove_class_variable(name){var self=this;name=Opal.const_get_relative($nesting,"Opal")["$class_variable_name!"](name);if(Opal.hasOwnProperty.call(self.$$cvars,name)){var value=self.$$cvars[name];delete self.$$cvars[name];return value}else{self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"cannot remove "+name+" for "+self))}},TMP_Module_remove_class_variable_21.$$arity=1);Opal.defn(self,"$constants",TMP_Module_constants_22=function $$constants(inherit){var self=this;if(inherit==null){inherit=true}return Opal.constants(self,inherit)},TMP_Module_constants_22.$$arity=-1);Opal.defs(self,"$constants",TMP_Module_constants_23=function $$constants(inherit){var self=this;if(inherit==null){var nesting=(self.$$nesting||[]).concat(Opal.Object),constant,constants={},i,ii;for(i=0,ii=nesting.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(self);mod.$included(self)}return self},TMP_Module_include_35.$$arity=-1);Opal.defn(self,"$included_modules",TMP_Module_included_modules_36=function $$included_modules(){var self=this;var results;var module_chain=function(klass){var included=[];for(var i=0,ii=klass.$$inc.length;i"},TMP_Module_to_s_52.$$arity=0);Opal.defn(self,"$undef_method",TMP_Module_undef_method_53=function $$undef_method($a_rest){var self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=names.length;i"}else if(singleton_of){return""+"#>"}return $send(self,Opal.find_super_dispatcher(self,"to_s",TMP_Class_to_s_7,false),[],null)},TMP_Class_to_s_7.$$arity=0),nil)&&"to_s"}($nesting[0],null,$nesting)};Opal.modules["corelib/basic_object"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$range=Opal.range,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$==","$!","$nil?","$cover?","$size","$raise","$merge","$compile","$proc","$>","$new","$inspect"]);return function($base,$super,$parent_nesting){function $BasicObject(){}var self=$BasicObject=$klass($base,$super,"BasicObject",$BasicObject);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BasicObject_initialize_1,TMP_BasicObject_$eq$eq_2,TMP_BasicObject_eql$q_3,TMP_BasicObject___id___4,TMP_BasicObject___send___5,TMP_BasicObject_$B_6,TMP_BasicObject_$B$eq_7,TMP_BasicObject_instance_eval_8,TMP_BasicObject_instance_exec_10,TMP_BasicObject_singleton_method_added_11,TMP_BasicObject_singleton_method_removed_12,TMP_BasicObject_singleton_method_undefined_13,TMP_BasicObject_method_missing_14;Opal.defn(self,"$initialize",TMP_BasicObject_initialize_1=function $$initialize($a_rest){var self=this;return nil},TMP_BasicObject_initialize_1.$$arity=-1);Opal.defn(self,"$==",TMP_BasicObject_$eq$eq_2=function(other){var self=this;return self===other},TMP_BasicObject_$eq$eq_2.$$arity=1);Opal.defn(self,"$eql?",TMP_BasicObject_eql$q_3=function(other){var self=this;return self["$=="](other)},TMP_BasicObject_eql$q_3.$$arity=1);Opal.alias(self,"equal?","==");Opal.defn(self,"$__id__",TMP_BasicObject___id___4=function $$__id__(){var self=this;return self.$$id||(self.$$id=Opal.uid())},TMP_BasicObject___id___4.$$arity=0);Opal.defn(self,"$__send__",TMP_BasicObject___send___5=function $$__send__(symbol,$a_rest){var self=this,args,$iter=TMP_BasicObject___send___5.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_BasicObject___send___5.$$p=null;var func=self["$"+symbol];if(func){if(block!==nil){func.$$p=block}return func.apply(self,args)}if(block!==nil){self.$method_missing.$$p=block}return self.$method_missing.apply(self,[symbol].concat(args))},TMP_BasicObject___send___5.$$arity=-2);Opal.defn(self,"$!",TMP_BasicObject_$B_6=function(){var self=this;return false},TMP_BasicObject_$B_6.$$arity=0);Opal.defn(self,"$!=",TMP_BasicObject_$B$eq_7=function(other){var self=this;return self["$=="](other)["$!"]()},TMP_BasicObject_$B$eq_7.$$arity=1);Opal.alias(self,"equal?","==");Opal.defn(self,"$instance_eval",TMP_BasicObject_instance_eval_8=function $$instance_eval($a_rest){var $b,TMP_9,self=this,args,$iter=TMP_BasicObject_instance_eval_8.$$p,block=$iter||nil,string=nil,file=nil,_lineno=nil,default_eval_options=nil,compiling_options=nil,compiled=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_BasicObject_instance_eval_8.$$p=null;if($truthy($truthy($b=block["$nil?"]())?!!Opal.compile:$b)){if($truthy($range(1,3,false)["$cover?"](args.$size()))){}else{Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),"wrong number of arguments (0 for 1..3)")}$b=[].concat(Opal.to_a(args)),string=$b[0]==null?nil:$b[0],file=$b[1]==null?nil:$b[1],_lineno=$b[2]==null?nil:$b[2],$b;default_eval_options=$hash2(["file","eval"],{file:$truthy($b=file)?$b:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);compiled=Opal.const_get_qualified("::","Opal").$compile(string,compiling_options);block=$send(Opal.const_get_qualified("::","Kernel"),"proc",[],(TMP_9=function(){var self=TMP_9.$$s||this;return function(self){return eval(compiled)}(self)},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))}else if($truthy($rb_gt(args.$size(),0))){Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),""+"wrong number of arguments ("+args.$size()+" for 0)")}var old=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.call(self,self)}finally{self.$$eval=false}}else{result=block.call(self,self)}block.$$s=old;return result},TMP_BasicObject_instance_eval_8.$$arity=-1);Opal.defn(self,"$instance_exec",TMP_BasicObject_instance_exec_10=function $$instance_exec($a_rest){var self=this,args,$iter=TMP_BasicObject_instance_exec_10.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_BasicObject_instance_exec_10.$$p=null;if($truthy(block)){}else{Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","ArgumentError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;if(self.$$is_class||self.$$is_module){self.$$eval=true;try{result=block.apply(self,args)}finally{self.$$eval=false}}else{result=block.apply(self,args)}block.$$s=block_self;return result},TMP_BasicObject_instance_exec_10.$$arity=-1);Opal.defn(self,"$singleton_method_added",TMP_BasicObject_singleton_method_added_11=function $$singleton_method_added($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_added_11.$$arity=-1);Opal.defn(self,"$singleton_method_removed",TMP_BasicObject_singleton_method_removed_12=function $$singleton_method_removed($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_removed_12.$$arity=-1);Opal.defn(self,"$singleton_method_undefined",TMP_BasicObject_singleton_method_undefined_13=function $$singleton_method_undefined($a_rest){var self=this;return nil},TMP_BasicObject_singleton_method_undefined_13.$$arity=-1);return(Opal.defn(self,"$method_missing",TMP_BasicObject_method_missing_14=function $$method_missing(symbol,$a_rest){var self=this,args,$iter=TMP_BasicObject_method_missing_14.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_BasicObject_method_missing_14.$$p=null;return Opal.const_get_qualified("::","Kernel").$raise(Opal.const_get_qualified("::","NoMethodError").$new(function(){if($truthy(self.$inspect&&!self.$inspect.$$stub)){return""+"undefined method `"+symbol+"' for "+self.$inspect()+":"+self.$$class}else{return""+"undefined method `"+symbol+"' for "+self.$$class}return nil}(),symbol))},TMP_BasicObject_method_missing_14.$$arity=-2),nil)&&"method_missing"}($nesting[0],null,$nesting)};Opal.modules["corelib/kernel"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$klass=Opal.klass;Opal.add_stubs(["$raise","$new","$inspect","$!","$=~","$==","$object_id","$class","$coerce_to?","$<<","$allocate","$copy_instance_variables","$copy_singleton_methods","$initialize_clone","$initialize_copy","$define_method","$singleton_class","$to_proc","$initialize_dup","$for","$>","$size","$pop","$call","$append_features","$extended","$length","$respond_to?","$[]","$nil?","$to_a","$to_int","$fetch","$Integer","$Float","$to_ary","$to_str","$coerce_to","$to_s","$__id__","$instance_variable_name!","$coerce_to!","$===","$enum_for","$result","$print","$format","$puts","$each","$<=","$empty?","$exception","$kind_of?","$rand","$respond_to_missing?","$try_convert!","$expand_path","$join","$start_with?","$srand","$new_seed","$sym","$arg","$open","$include"]);(function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_method_missing_1,TMP_Kernel_$eq$_2,TMP_Kernel_$B$_3,TMP_Kernel_$eq$eq$eq_4,TMP_Kernel_$lt$eq$gt_5,TMP_Kernel_method_6,TMP_Kernel_methods_7,TMP_Kernel_Array_8,TMP_Kernel_at_exit_9,TMP_Kernel_caller_10,TMP_Kernel_class_11,TMP_Kernel_copy_instance_variables_12,TMP_Kernel_copy_singleton_methods_13,TMP_Kernel_clone_14,TMP_Kernel_initialize_clone_15,TMP_Kernel_define_singleton_method_16,TMP_Kernel_dup_17,TMP_Kernel_initialize_dup_18,TMP_Kernel_enum_for_19,TMP_Kernel_equal$q_20,TMP_Kernel_exit_21,TMP_Kernel_extend_22,TMP_Kernel_format_23,TMP_Kernel_hash_24,TMP_Kernel_initialize_copy_25,TMP_Kernel_inspect_26,TMP_Kernel_instance_of$q_27,TMP_Kernel_instance_variable_defined$q_28,TMP_Kernel_instance_variable_get_29,TMP_Kernel_instance_variable_set_30,TMP_Kernel_remove_instance_variable_31,TMP_Kernel_instance_variables_32,TMP_Kernel_Integer_33,TMP_Kernel_Float_34,TMP_Kernel_Hash_35,TMP_Kernel_is_a$q_36,TMP_Kernel_itself_37,TMP_Kernel_lambda_38,TMP_Kernel_load_39,TMP_Kernel_loop_40,TMP_Kernel_nil$q_42,TMP_Kernel_printf_43,TMP_Kernel_proc_44,TMP_Kernel_puts_45,TMP_Kernel_p_47,TMP_Kernel_print_48,TMP_Kernel_warn_49,TMP_Kernel_raise_50,TMP_Kernel_rand_51,TMP_Kernel_respond_to$q_52,TMP_Kernel_respond_to_missing$q_53,TMP_Kernel_require_54,TMP_Kernel_require_relative_55,TMP_Kernel_require_tree_56,TMP_Kernel_singleton_class_57,TMP_Kernel_sleep_58,TMP_Kernel_srand_59,TMP_Kernel_String_60,TMP_Kernel_tap_61,TMP_Kernel_to_proc_62,TMP_Kernel_to_s_63,TMP_Kernel_catch_64,TMP_Kernel_throw_65,TMP_Kernel_open_66;Opal.defn(self,"$method_missing",TMP_Kernel_method_missing_1=function $$method_missing(symbol,$a_rest){var self=this,args,$iter=TMP_Kernel_method_missing_1.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Kernel_method_missing_1.$$p=null;return self.$raise(Opal.const_get_relative($nesting,"NoMethodError").$new(""+"undefined method `"+symbol+"' for "+self.$inspect(),symbol,args))},TMP_Kernel_method_missing_1.$$arity=-2);Opal.defn(self,"$=~",TMP_Kernel_$eq$_2=function(obj){var self=this;return false},TMP_Kernel_$eq$_2.$$arity=1);Opal.defn(self,"$!~",TMP_Kernel_$B$_3=function(obj){var self=this;return self["$=~"](obj)["$!"]()},TMP_Kernel_$B$_3.$$arity=1);Opal.defn(self,"$===",TMP_Kernel_$eq$eq$eq_4=function(other){var $a,self=this;return $truthy($a=self.$object_id()["$=="](other.$object_id()))?$a:self["$=="](other)},TMP_Kernel_$eq$eq$eq_4.$$arity=1);Opal.defn(self,"$<=>",TMP_Kernel_$lt$eq$gt_5=function(other){var self=this;self.$$comparable=true;var x=self["$=="](other);if(x&&x!==nil){return 0}return nil},TMP_Kernel_$lt$eq$gt_5.$$arity=1);Opal.defn(self,"$method",TMP_Kernel_method_6=function $$method(name){var self=this;var meth=self["$"+name];if(!meth||meth.$$stub){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"undefined method `"+name+"' for class `"+self.$class()+"'",name))}return Opal.const_get_relative($nesting,"Method").$new(self,meth.$$owner||self.$class(),meth,name)},TMP_Kernel_method_6.$$arity=1);Opal.defn(self,"$methods",TMP_Kernel_methods_7=function $$methods(all){var self=this;if(all==null){all=true}var methods=[];for(var key in self){if(key[0]=="$"&&typeof self[key]==="function"){if(all==false||all===nil){if(!Opal.hasOwnProperty.call(self,key)){continue}}if(self[key].$$stub===undefined){methods.push(key.substr(1))}}}return methods},TMP_Kernel_methods_7.$$arity=-1);Opal.alias(self,"public_methods","methods");Opal.defn(self,"$Array",TMP_Kernel_Array_8=function $$Array(object){var self=this;var coerced;if(object===nil){return[]}if(object.$$is_array){return object}coerced=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](object,Opal.const_get_relative($nesting,"Array"),"to_ary");if(coerced!==nil){return coerced}coerced=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](object,Opal.const_get_relative($nesting,"Array"),"to_a");if(coerced!==nil){return coerced}return[object]},TMP_Kernel_Array_8.$$arity=1);Opal.defn(self,"$at_exit",TMP_Kernel_at_exit_9=function $$at_exit(){var $a,self=this,$iter=TMP_Kernel_at_exit_9.$$p,block=$iter||nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if($iter)TMP_Kernel_at_exit_9.$$p=null;$gvars.__at_exit__=$truthy($a=$gvars.__at_exit__)?$a:[];return $gvars.__at_exit__["$<<"](block)},TMP_Kernel_at_exit_9.$$arity=0);Opal.defn(self,"$caller",TMP_Kernel_caller_10=function $$caller($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return[]},TMP_Kernel_caller_10.$$arity=-1);Opal.defn(self,"$class",TMP_Kernel_class_11=function(){var self=this;return self.$$class},TMP_Kernel_class_11.$$arity=0);Opal.defn(self,"$copy_instance_variables",TMP_Kernel_copy_instance_variables_12=function $$copy_instance_variables(other){var self=this;var keys=Object.keys(other),i,ii,name;for(i=0,ii=keys.length;i=0;i--){var mod=mods[i];if(!mod.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"wrong argument type "+mod.$class()+" (expected Module)")}mod.$append_features(singleton);mod.$extended(self)}return self},TMP_Kernel_extend_22.$$arity=-1);Opal.defn(self,"$format",TMP_Kernel_format_23=function $$format(format_string,$a_rest){var $b,self=this,args,ary=nil;if($gvars.DEBUG==null)$gvars.DEBUG=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($truthy(($b=args.$length()["$=="](1))?args["$[]"](0)["$respond_to?"]("to_ary"):args.$length()["$=="](1))){ary=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](args["$[]"](0),Opal.const_get_relative($nesting,"Array"),"to_ary");if($truthy(ary["$nil?"]())){}else{args=ary.$to_a()}}var result="",begin_slice=0,end_slice,i,len=format_string.length,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,seq_arg_num=1,pos_arg_num=0,flags,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){if(flags&FWIDTH){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"flag after width")}if(flags&FPREC0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"flag after precision")}}function CHECK_FOR_WIDTH(){if(flags&FWIDTH){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"width given twice")}if(flags&FPREC0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"width after precision")}}function GET_NTH_ARG(num){if(num>=args.length){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"too few arguments")}return args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with numbered");case-2:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unnumbered("+seq_arg_num+") mixed with named")}pos_arg_num=seq_arg_num++;return GET_NTH_ARG(pos_arg_num-1)}function GET_POS_ARG(num){if(pos_arg_num>0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"numbered("+num+") after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-2){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"numbered("+num+") after named")}if(num<1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid index - "+num+"$")}pos_arg_num=-1;return GET_NTH_ARG(num-1)}function GET_ARG(){return next_arg===undefined?GET_NEXT_ARG():next_arg}function READ_NUM(label){var num,str="";for(;;i++){if(i===len){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"malformed format string - %*[0-9]")}if(format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57){i--;num=parseInt(str,10)||0;if(num>2147483647){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+label+" too big")}return num}str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);if(format_string.charAt(i+1)==="$"){i++;arg=GET_POS_ARG(num)}else{arg=GET_NEXT_ARG()}return arg.$to_int()}for(i=format_string.indexOf("%");i!==-1;i=format_string.indexOf("%",i)){str=undefined;flags=FNONE;width=-1;precision=-1;next_arg=undefined;end_slice=i;i++;switch(format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}";hash_parameter_key="";i++;for(;;i++){if(i===len){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"malformed name - unmatched parenthesis")}if(format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")")}if(pos_arg_num===-1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"named "+hash_parameter_key+" after numbered")}pos_arg_num=-2;if(args[0]===undefined||!args[0].$$is_hash){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"one hash required")}next_arg=args[0].$fetch(hash_parameter_key);if(closing_brace_char===">"){continue format_sequence}else{str=next_arg.toString();if(precision!==-1){str=str.slice(0,precision)}if(flags&FMINUS){while(str.length=0){str=arg.toString();while(str.length=0){str=arg.toString(base_number);while(str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);while(str.length=0||isNaN(arg)){if(arg===Infinity){str="Inf"}else{switch(format_string.charAt(i)){case"f":str=arg.toFixed(precision===-1?6:precision);break;case"e":case"E":str=arg.toExponential(precision===-1?6:precision);break;case"g":case"G":str=arg.toExponential();exponent=parseInt(str.split("e")[1],10);if(!(exponent<-4||exponent>=(precision===-1?6:precision))){str=arg.toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){if(flags&FPLUS||flags&FSPACE){str=(flags&FPLUS?"+":" ")+str}while(str.length=(precision===-1?6:precision))){str=(-arg).toPrecision(precision===-1?flags&FSHARP?6:undefined:precision)}break}}if(flags&FMINUS){str="-"+str;while(str.length=0&&seq_arg_num36){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid radix "+base)}}str=value.toLowerCase();str=str.replace(/(\d)_(?=\d)/g,"$1");str=str.replace(/^(\s*[+-]?)(0[bodx]?)/,function(_,head,flag){switch(flag){case"0b":if(base===0||base===2){base=2;return head}case"0":case"0o":if(base===0||base===8){base=8;return head}case"0d":if(base===0||base===10){base=10;return head}case"0x":if(base===0||base===16){base=16;return head}}self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')});base=base===0?10:base;base_digits="0-"+(base<=10?base-1:"9a-"+String.fromCharCode(97+(base-11)));if(!new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}i=parseInt(str,base);if(isNaN(i)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Integer(): "'+value+'"')}return i},TMP_Kernel_Integer_33.$$arity=-2);Opal.defn(self,"$Float",TMP_Kernel_Float_34=function $$Float(value){var self=this;var str;if(value===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert nil into Float")}if(value.$$is_string){str=value.toString();str=str.replace(/(\d)_(?=\d)/g,"$1");if(/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)){return self.$Integer(str)}if(!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid value for Float(): "'+value+'"')}return parseFloat(str)}return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](value,Opal.const_get_relative($nesting,"Float"),"to_f")},TMP_Kernel_Float_34.$$arity=1);Opal.defn(self,"$Hash",TMP_Kernel_Hash_35=function $$Hash(arg){var $a,self=this;if($truthy($truthy($a=arg["$nil?"]())?$a:arg["$=="]([]))){return $hash2([],{})}if($truthy(Opal.const_get_relative($nesting,"Hash")["$==="](arg))){return arg}return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](arg,Opal.const_get_relative($nesting,"Hash"),"to_hash")},TMP_Kernel_Hash_35.$$arity=1);Opal.defn(self,"$is_a?",TMP_Kernel_is_a$q_36=function(klass){var self=this;if(!klass.$$is_class&&!klass.$$is_module){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"class or module required")}return Opal.is_a(self,klass)},TMP_Kernel_is_a$q_36.$$arity=1);Opal.defn(self,"$itself",TMP_Kernel_itself_37=function $$itself(){var self=this;return self},TMP_Kernel_itself_37.$$arity=0);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$lambda",TMP_Kernel_lambda_38=function $$lambda(){var self=this,$iter=TMP_Kernel_lambda_38.$$p,block=$iter||nil;if($iter)TMP_Kernel_lambda_38.$$p=null;block.$$is_lambda=true;return block},TMP_Kernel_lambda_38.$$arity=0);Opal.defn(self,"$load",TMP_Kernel_load_39=function $$load(file){var self=this;file=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](file,Opal.const_get_relative($nesting,"String"),"to_str");return Opal.load(file)},TMP_Kernel_load_39.$$arity=1);Opal.defn(self,"$loop",TMP_Kernel_loop_40=function $$loop(){var TMP_41,$a,self=this,$iter=TMP_Kernel_loop_40.$$p,$yield=$iter||nil,e=nil;if($iter)TMP_Kernel_loop_40.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["loop"],(TMP_41=function(){var self=TMP_41.$$s||this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")},TMP_41.$$s=self,TMP_41.$$arity=0,TMP_41))}while($truthy(true)){try{Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StopIteration")])){e=$err;try{return e.$result()}finally{Opal.pop_exception()}}else{throw $err}}}return self},TMP_Kernel_loop_40.$$arity=0);Opal.defn(self,"$nil?",TMP_Kernel_nil$q_42=function(){var self=this;return false},TMP_Kernel_nil$q_42.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$printf",TMP_Kernel_printf_43=function $$printf($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),0))){self.$print($send(self,"format",Opal.to_a(args)))}return nil},TMP_Kernel_printf_43.$$arity=-1);Opal.defn(self,"$proc",TMP_Kernel_proc_44=function $$proc(){var self=this,$iter=TMP_Kernel_proc_44.$$p,block=$iter||nil;if($iter)TMP_Kernel_proc_44.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to create Proc object without a block")}block.$$is_lambda=false;return block},TMP_Kernel_proc_44.$$arity=0);Opal.defn(self,"$puts",TMP_Kernel_puts_45=function $$puts($a_rest){var self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send($gvars.stdout,"puts",Opal.to_a(strs))},TMP_Kernel_puts_45.$$arity=-1);Opal.defn(self,"$p",TMP_Kernel_p_47=function $$p($a_rest){var TMP_46,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}$send(args,"each",[],(TMP_46=function(obj){var self=TMP_46.$$s||this;if($gvars.stdout==null)$gvars.stdout=nil;if(obj==null)obj=nil;return $gvars.stdout.$puts(obj.$inspect())},TMP_46.$$s=self,TMP_46.$$arity=1,TMP_46));if($truthy($rb_le(args.$length(),1))){return args["$[]"](0)}else{return args}},TMP_Kernel_p_47.$$arity=-1);Opal.defn(self,"$print",TMP_Kernel_print_48=function $$print($a_rest){var self=this,strs;if($gvars.stdout==null)$gvars.stdout=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send($gvars.stdout,"print",Opal.to_a(strs))},TMP_Kernel_print_48.$$arity=-1);Opal.defn(self,"$warn",TMP_Kernel_warn_49=function $$warn($a_rest){var $b,self=this,strs;if($gvars.VERBOSE==null)$gvars.VERBOSE=nil;if($gvars.stderr==null)$gvars.stderr=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}if($truthy($truthy($b=$gvars.VERBOSE["$nil?"]())?$b:strs["$empty?"]())){return nil}else{return $send($gvars.stderr,"puts",Opal.to_a(strs))}},TMP_Kernel_warn_49.$$arity=-1);Opal.defn(self,"$raise",TMP_Kernel_raise_50=function $$raise(exception,string,_backtrace){var self=this;if($gvars["!"]==null)$gvars["!"]=nil;if(string==null){string=nil}if(_backtrace==null){_backtrace=nil}if(exception==null&&$gvars["!"]!==nil){throw $gvars["!"]}if(exception==null){exception=Opal.const_get_relative($nesting,"RuntimeError").$new()}else if(exception.$$is_string){exception=Opal.const_get_relative($nesting,"RuntimeError").$new(exception)}else if(exception.$$is_class&&exception["$respond_to?"]("exception")){exception=exception.$exception(string)}else if(exception["$kind_of?"](Opal.const_get_relative($nesting,"Exception"))){}else{exception=Opal.const_get_relative($nesting,"TypeError").$new("exception class/object expected")}if($gvars["!"]!==nil){Opal.exceptions.push($gvars["!"])}$gvars["!"]=exception;throw exception},TMP_Kernel_raise_50.$$arity=-1);Opal.alias(self,"fail","raise");Opal.defn(self,"$rand",TMP_Kernel_rand_51=function $$rand(max){var self=this;if(max===undefined){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Random"),"DEFAULT").$rand()}if(max.$$is_number){if(max<0){max=Math.abs(max)}if(max%1!==0){max=max.$to_i()}if(max===0){max=undefined}}return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Random"),"DEFAULT").$rand(max)},TMP_Kernel_rand_51.$$arity=-1);Opal.defn(self,"$respond_to?",TMP_Kernel_respond_to$q_52=function(name,include_all){var self=this;if(include_all==null){include_all=false}if($truthy(self["$respond_to_missing?"](name,include_all))){return true}var body=self["$"+name];if(typeof body==="function"&&!body.$$stub){return true}return false},TMP_Kernel_respond_to$q_52.$$arity=-2);Opal.defn(self,"$respond_to_missing?",TMP_Kernel_respond_to_missing$q_53=function(method_name,include_all){var self=this;if(include_all==null){include_all=false}return false},TMP_Kernel_respond_to_missing$q_53.$$arity=-2);Opal.defn(self,"$require",TMP_Kernel_require_54=function $$require(file){var self=this;file=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](file,Opal.const_get_relative($nesting,"String"),"to_str");return Opal.require(file)},TMP_Kernel_require_54.$$arity=1);Opal.defn(self,"$require_relative",TMP_Kernel_require_relative_55=function $$require_relative(file){var self=this;Opal.const_get_relative($nesting,"Opal")["$try_convert!"](file,Opal.const_get_relative($nesting,"String"),"to_str");file=Opal.const_get_relative($nesting,"File").$expand_path(Opal.const_get_relative($nesting,"File").$join(Opal.current_file,"..",file));return Opal.require(file)},TMP_Kernel_require_relative_55.$$arity=1);Opal.defn(self,"$require_tree",TMP_Kernel_require_tree_56=function $$require_tree(path){var self=this;var result=[];path=Opal.const_get_relative($nesting,"File").$expand_path(path);path=Opal.normalize(path);if(path===".")path="";for(var name in Opal.modules){if(name["$start_with?"](path)){result.push([name,Opal.require(name)])}}return result},TMP_Kernel_require_tree_56.$$arity=1);Opal.alias(self,"send","__send__");Opal.alias(self,"public_send","__send__");Opal.defn(self,"$singleton_class",TMP_Kernel_singleton_class_57=function $$singleton_class(){var self=this;return Opal.get_singleton_class(self)},TMP_Kernel_singleton_class_57.$$arity=0);Opal.defn(self,"$sleep",TMP_Kernel_sleep_58=function $$sleep(seconds){var self=this;if(seconds==null){seconds=nil}if(seconds===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert NilClass into time interval")}if(!seconds.$$is_number){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+seconds.$class()+" into time interval")}if(seconds<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"time interval must be positive")}var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date};var t=get_time();while(get_time()-t<=seconds*1e3);return seconds},TMP_Kernel_sleep_58.$$arity=-1);Opal.alias(self,"sprintf","format");Opal.defn(self,"$srand",TMP_Kernel_srand_59=function $$srand(seed){var self=this;if(seed==null){seed=Opal.const_get_relative($nesting,"Random").$new_seed()}return Opal.const_get_relative($nesting,"Random").$srand(seed)},TMP_Kernel_srand_59.$$arity=-1);Opal.defn(self,"$String",TMP_Kernel_String_60=function $$String(str){var $a,self=this;return $truthy($a=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](str,Opal.const_get_relative($nesting,"String"),"to_str"))?$a:Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](str,Opal.const_get_relative($nesting,"String"),"to_s")},TMP_Kernel_String_60.$$arity=1);Opal.defn(self,"$tap",TMP_Kernel_tap_61=function $$tap(){var self=this,$iter=TMP_Kernel_tap_61.$$p,block=$iter||nil;if($iter)TMP_Kernel_tap_61.$$p=null;Opal.yield1(block,self);return self},TMP_Kernel_tap_61.$$arity=0);Opal.defn(self,"$to_proc",TMP_Kernel_to_proc_62=function $$to_proc(){var self=this;return self},TMP_Kernel_to_proc_62.$$arity=0);Opal.defn(self,"$to_s",TMP_Kernel_to_s_63=function $$to_s(){var self=this;return""+"#<"+self.$class()+":0x"+self.$__id__().$to_s(16)+">"},TMP_Kernel_to_s_63.$$arity=0);Opal.defn(self,"$catch",TMP_Kernel_catch_64=function(sym){var self=this,$iter=TMP_Kernel_catch_64.$$p,$yield=$iter||nil,e=nil;if($iter)TMP_Kernel_catch_64.$$p=null;try{return Opal.yieldX($yield,[])}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"UncaughtThrowError")])){e=$err;try{if(e.$sym()["$=="](sym)){return e.$arg()}return self.$raise()}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Kernel_catch_64.$$arity=1);Opal.defn(self,"$throw",TMP_Kernel_throw_65=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise(Opal.const_get_relative($nesting,"UncaughtThrowError").$new(args))},TMP_Kernel_throw_65.$$arity=-1);Opal.defn(self,"$open",TMP_Kernel_open_66=function $$open($a_rest){var self=this,args,$iter=TMP_Kernel_open_66.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Kernel_open_66.$$p=null;return $send(Opal.const_get_relative($nesting,"File"),"open",Opal.to_a(args),block.$to_proc())},TMP_Kernel_open_66.$$arity=-1)})($nesting[0],$nesting);return function($base,$super,$parent_nesting){function $Object(){}var self=$Object=$klass($base,$super,"Object",$Object);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$include(Opal.const_get_relative($nesting,"Kernel"))}($nesting[0],null,$nesting)};Opal.modules["corelib/error"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$new","$clone","$to_s","$empty?","$class","$+","$attr_reader","$[]","$>","$length","$inspect"]);(function($base,$super,$parent_nesting){function $Exception(){}var self=$Exception=$klass($base,$super,"Exception",$Exception);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Exception_new_1,TMP_Exception_exception_2,TMP_Exception_initialize_3,TMP_Exception_backtrace_4,TMP_Exception_exception_5,TMP_Exception_message_6,TMP_Exception_inspect_7,TMP_Exception_to_s_8;def.message=nil;var Kernel$raise=Opal.const_get_relative($nesting,"Kernel").$raise;Opal.defs(self,"$new",TMP_Exception_new_1=function($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var message=args.length>0?args[0]:nil;var error=new self.$$alloc(message);error.name=self.$$name;error.message=message;Opal.send(error,error.$initialize,args);if(Opal.config.enable_stack_trace&&Error.captureStackTrace){Error.captureStackTrace(error,Kernel$raise)}return error},TMP_Exception_new_1.$$arity=-1);Opal.defs(self,"$exception",TMP_Exception_exception_2=function $$exception($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self,"new",Opal.to_a(args))},TMP_Exception_exception_2.$$arity=-1);Opal.defn(self,"$initialize",TMP_Exception_initialize_3=function $$initialize($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.message=args.length>0?args[0]:nil},TMP_Exception_initialize_3.$$arity=-1);Opal.defn(self,"$backtrace",TMP_Exception_backtrace_4=function $$backtrace(){var self=this;var backtrace=self.stack;if(typeof backtrace==="string"){return backtrace.split("\n").slice(0,15)}else if(backtrace){return backtrace.slice(0,15)}return[]},TMP_Exception_backtrace_4.$$arity=0);Opal.defn(self,"$exception",TMP_Exception_exception_5=function $$exception(str){var self=this;if(str==null){str=nil}if(str===nil||self===str){return self}var cloned=self.$clone();cloned.message=str;return cloned},TMP_Exception_exception_5.$$arity=-1);Opal.defn(self,"$message",TMP_Exception_message_6=function $$message(){var self=this;return self.$to_s()},TMP_Exception_message_6.$$arity=0);Opal.defn(self,"$inspect",TMP_Exception_inspect_7=function $$inspect(){var self=this,as_str=nil;as_str=self.$to_s();if($truthy(as_str["$empty?"]())){return self.$class().$to_s()}else{return""+"#<"+self.$class().$to_s()+": "+self.$to_s()+">"}},TMP_Exception_inspect_7.$$arity=0);return(Opal.defn(self,"$to_s",TMP_Exception_to_s_8=function $$to_s(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.message)?self.message.$to_s():$b)?$a:self.$class().$to_s()},TMP_Exception_to_s_8.$$arity=0),nil)&&"to_s"})($nesting[0],Error,$nesting);(function($base,$super,$parent_nesting){function $ScriptError(){}var self=$ScriptError=$klass($base,$super,"ScriptError",$ScriptError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $LoadError(){}var self=$LoadError=$klass($base,$super,"LoadError",$LoadError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $NotImplementedError(){}var self=$NotImplementedError=$klass($base,$super,"NotImplementedError",$NotImplementedError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"ScriptError"),$nesting);(function($base,$super,$parent_nesting){function $SystemExit(){}var self=$SystemExit=$klass($base,$super,"SystemExit",$SystemExit);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $NoMemoryError(){}var self=$NoMemoryError=$klass($base,$super,"NoMemoryError",$NoMemoryError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SignalException(){}var self=$SignalException=$klass($base,$super,"SignalException",$SignalException);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $Interrupt(){}var self=$Interrupt=$klass($base,$super,"Interrupt",$Interrupt);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $SecurityError(){}var self=$SecurityError=$klass($base,$super,"SecurityError",$SecurityError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $StandardError(){}var self=$StandardError=$klass($base,$super,"StandardError",$StandardError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);(function($base,$super,$parent_nesting){function $ZeroDivisionError(){}var self=$ZeroDivisionError=$klass($base,$super,"ZeroDivisionError",$ZeroDivisionError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"NameError"),$nesting);(function($base,$super,$parent_nesting){function $RuntimeError(){}var self=$RuntimeError=$klass($base,$super,"RuntimeError",$RuntimeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $LocalJumpError(){}var self=$LocalJumpError=$klass($base,$super,"LocalJumpError",$LocalJumpError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $TypeError(){}var self=$TypeError=$klass($base,$super,"TypeError",$TypeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $ArgumentError(){}var self=$ArgumentError=$klass($base,$super,"ArgumentError",$ArgumentError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $IndexError(){}var self=$IndexError=$klass($base,$super,"IndexError",$IndexError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"IndexError"),$nesting);(function($base,$super,$parent_nesting){function $KeyError(){}var self=$KeyError=$klass($base,$super,"KeyError",$KeyError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"IndexError"),$nesting);(function($base,$super,$parent_nesting){function $RangeError(){}var self=$RangeError=$klass($base,$super,"RangeError",$RangeError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $FloatDomainError(){}var self=$FloatDomainError=$klass($base,$super,"FloatDomainError",$FloatDomainError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"RangeError"),$nesting);(function($base,$super,$parent_nesting){function $IOError(){}var self=$IOError=$klass($base,$super,"IOError",$IOError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $SystemCallError(){}var self=$SystemCallError=$klass($base,$super,"SystemCallError",$SystemCallError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$parent_nesting){var $Errno,self=$Errno=$module($base,"Errno");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EINVAL(){}var self=$EINVAL=$klass($base,$super,"EINVAL",$EINVAL);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EINVAL_new_9;return Opal.defs(self,"$new",TMP_EINVAL_new_9=function(name){var self=this,$iter=TMP_EINVAL_new_9.$$p,$yield=$iter||nil,message=nil;if(name==null){name=nil}if($iter)TMP_EINVAL_new_9.$$p=null;message="Invalid argument";if($truthy(name)){message=$rb_plus(message,""+" - "+name)}return $send(self,Opal.find_super_dispatcher(self,"new",TMP_EINVAL_new_9,false,$EINVAL),[message],null)},TMP_EINVAL_new_9.$$arity=-1)})($nesting[0],Opal.const_get_relative($nesting,"SystemCallError"),$nesting)})($nesting[0],$nesting);(function($base,$super,$parent_nesting){function $UncaughtThrowError(){}var self=$UncaughtThrowError=$klass($base,$super,"UncaughtThrowError",$UncaughtThrowError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UncaughtThrowError_initialize_10;def.sym=nil;self.$attr_reader("sym","arg");return(Opal.defn(self,"$initialize",TMP_UncaughtThrowError_initialize_10=function $$initialize(args){var self=this,$iter=TMP_UncaughtThrowError_initialize_10.$$p,$yield=$iter||nil;if($iter)TMP_UncaughtThrowError_initialize_10.$$p=null;self.sym=args["$[]"](0);if($truthy($rb_gt(args.$length(),1))){self.arg=args["$[]"](1)}return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_UncaughtThrowError_initialize_10,false),[""+"uncaught throw "+self.sym.$inspect()],null)},TMP_UncaughtThrowError_initialize_10.$$arity=1),nil)&&"initialize"})($nesting[0],Opal.const_get_relative($nesting,"ArgumentError"),$nesting);(function($base,$super,$parent_nesting){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NameError_initialize_11;self.$attr_reader("name");return(Opal.defn(self,"$initialize",TMP_NameError_initialize_11=function $$initialize(message,name){var self=this,$iter=TMP_NameError_initialize_11.$$p,$yield=$iter||nil;if(name==null){name=nil}if($iter)TMP_NameError_initialize_11.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NameError_initialize_11,false),[message],null);return self.name=name},TMP_NameError_initialize_11.$$arity=-2),nil)&&"initialize"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NoMethodError_initialize_12;self.$attr_reader("args");return(Opal.defn(self,"$initialize",TMP_NoMethodError_initialize_12=function $$initialize(message,name,args){var self=this,$iter=TMP_NoMethodError_initialize_12.$$p,$yield=$iter||nil;if(name==null){name=nil}if(args==null){args=[]}if($iter)TMP_NoMethodError_initialize_12.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NoMethodError_initialize_12,false),[message,name],null);return self.args=args},TMP_NoMethodError_initialize_12.$$arity=-2),nil)&&"initialize"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_reader("result")})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $JS,self=$JS=$module($base,"JS");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Error(){}var self=$Error=$klass($base,$super,"Error",$Error);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["corelib/constants"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.const_set($nesting[0],"RUBY_PLATFORM","opal");Opal.const_set($nesting[0],"RUBY_ENGINE","opal");Opal.const_set($nesting[0],"RUBY_VERSION","2.4.0");Opal.const_set($nesting[0],"RUBY_ENGINE_VERSION","0.11.0");Opal.const_set($nesting[0],"RUBY_RELEASE_DATE","2017-12-08");Opal.const_set($nesting[0],"RUBY_PATCHLEVEL",0);Opal.const_set($nesting[0],"RUBY_REVISION",0);Opal.const_set($nesting[0],"RUBY_COPYRIGHT","opal - Copyright (C) 2013-2015 Adam Beynon");return Opal.const_set($nesting[0],"RUBY_DESCRIPTION",""+"opal "+Opal.const_get_relative($nesting,"RUBY_ENGINE_VERSION")+" ("+Opal.const_get_relative($nesting,"RUBY_RELEASE_DATE")+" revision "+Opal.const_get_relative($nesting,"RUBY_REVISION")+")")};Opal.modules["opal/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("corelib/runtime");self.$require("corelib/helpers");self.$require("corelib/module");self.$require("corelib/class");self.$require("corelib/basic_object");self.$require("corelib/kernel");self.$require("corelib/error");return self.$require("corelib/constants")};Opal.modules["corelib/nil"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$raise","$name","$new","$>","$length","$Rational"]);(function($base,$super,$parent_nesting){function $NilClass(){}var self=$NilClass=$klass($base,$super,"NilClass",$NilClass);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NilClass_$B_2,TMP_NilClass_$_3,TMP_NilClass_$_4,TMP_NilClass_$_5,TMP_NilClass_$eq$eq_6,TMP_NilClass_dup_7,TMP_NilClass_clone_8,TMP_NilClass_inspect_9,TMP_NilClass_nil$q_10,TMP_NilClass_singleton_class_11,TMP_NilClass_to_a_12,TMP_NilClass_to_h_13,TMP_NilClass_to_i_14,TMP_NilClass_to_s_15,TMP_NilClass_to_c_16,TMP_NilClass_rationalize_17,TMP_NilClass_to_r_18,TMP_NilClass_instance_variables_19;def.$$meta=self;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$!",TMP_NilClass_$B_2=function(){var self=this;return true},TMP_NilClass_$B_2.$$arity=0);Opal.defn(self,"$&",TMP_NilClass_$_3=function(other){var self=this;return false},TMP_NilClass_$_3.$$arity=1);Opal.defn(self,"$|",TMP_NilClass_$_4=function(other){var self=this;return other!==false&&other!==nil},TMP_NilClass_$_4.$$arity=1);Opal.defn(self,"$^",TMP_NilClass_$_5=function(other){var self=this;return other!==false&&other!==nil},TMP_NilClass_$_5.$$arity=1);Opal.defn(self,"$==",TMP_NilClass_$eq$eq_6=function(other){var self=this;return other===nil},TMP_NilClass_$eq$eq_6.$$arity=1);Opal.defn(self,"$dup",TMP_NilClass_dup_7=function $$dup(){var self=this;return nil},TMP_NilClass_dup_7.$$arity=0);Opal.defn(self,"$clone",TMP_NilClass_clone_8=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return nil},TMP_NilClass_clone_8.$$arity=-1);Opal.defn(self,"$inspect",TMP_NilClass_inspect_9=function $$inspect(){var self=this;return"nil"},TMP_NilClass_inspect_9.$$arity=0);Opal.defn(self,"$nil?",TMP_NilClass_nil$q_10=function(){var self=this;return true},TMP_NilClass_nil$q_10.$$arity=0);Opal.defn(self,"$singleton_class",TMP_NilClass_singleton_class_11=function $$singleton_class(){var self=this;return Opal.const_get_relative($nesting,"NilClass")},TMP_NilClass_singleton_class_11.$$arity=0);Opal.defn(self,"$to_a",TMP_NilClass_to_a_12=function $$to_a(){var self=this;return[]},TMP_NilClass_to_a_12.$$arity=0);Opal.defn(self,"$to_h",TMP_NilClass_to_h_13=function $$to_h(){var self=this;return Opal.hash()},TMP_NilClass_to_h_13.$$arity=0);Opal.defn(self,"$to_i",TMP_NilClass_to_i_14=function $$to_i(){var self=this;return 0},TMP_NilClass_to_i_14.$$arity=0);Opal.alias(self,"to_f","to_i");Opal.defn(self,"$to_s",TMP_NilClass_to_s_15=function $$to_s(){var self=this;return""},TMP_NilClass_to_s_15.$$arity=0);Opal.defn(self,"$to_c",TMP_NilClass_to_c_16=function $$to_c(){var self=this;return Opal.const_get_relative($nesting,"Complex").$new(0,0)},TMP_NilClass_to_c_16.$$arity=0);Opal.defn(self,"$rationalize",TMP_NilClass_rationalize_17=function $$rationalize($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),1))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"))}return self.$Rational(0,1)},TMP_NilClass_rationalize_17.$$arity=-1);Opal.defn(self,"$to_r",TMP_NilClass_to_r_18=function $$to_r(){var self=this;return self.$Rational(0,1)},TMP_NilClass_to_r_18.$$arity=0);return(Opal.defn(self,"$instance_variables",TMP_NilClass_instance_variables_19=function $$instance_variables(){var self=this;return[]},TMP_NilClass_instance_variables_19.$$arity=0),nil)&&"instance_variables"})($nesting[0],null,$nesting);return Opal.const_set($nesting[0],"NIL",nil)};Opal.modules["corelib/boolean"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$hash2=Opal.hash2;Opal.add_stubs(["$raise","$name"]);(function($base,$super,$parent_nesting){function $Boolean(){}var self=$Boolean=$klass($base,$super,"Boolean",$Boolean);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Boolean___id___2,TMP_Boolean_$B_3,TMP_Boolean_$_4,TMP_Boolean_$_5,TMP_Boolean_$_6,TMP_Boolean_$eq$eq_7,TMP_Boolean_singleton_class_8,TMP_Boolean_to_s_9,TMP_Boolean_dup_10,TMP_Boolean_clone_11;def.$$is_boolean=true;def.$$meta=self;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$__id__",TMP_Boolean___id___2=function $$__id__(){var self=this;return self.valueOf()?2:0},TMP_Boolean___id___2.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$!",TMP_Boolean_$B_3=function(){var self=this;return self!=true},TMP_Boolean_$B_3.$$arity=0);Opal.defn(self,"$&",TMP_Boolean_$_4=function(other){var self=this;return self==true?other!==false&&other!==nil:false},TMP_Boolean_$_4.$$arity=1);Opal.defn(self,"$|",TMP_Boolean_$_5=function(other){var self=this;return self==true?true:other!==false&&other!==nil},TMP_Boolean_$_5.$$arity=1);Opal.defn(self,"$^",TMP_Boolean_$_6=function(other){var self=this;return self==true?other===false||other===nil:other!==false&&other!==nil},TMP_Boolean_$_6.$$arity=1);Opal.defn(self,"$==",TMP_Boolean_$eq$eq_7=function(other){var self=this;return self==true===other.valueOf()},TMP_Boolean_$eq$eq_7.$$arity=1);Opal.alias(self,"equal?","==");Opal.alias(self,"eql?","==");Opal.defn(self,"$singleton_class",TMP_Boolean_singleton_class_8=function $$singleton_class(){var self=this;return Opal.const_get_relative($nesting,"Boolean")},TMP_Boolean_singleton_class_8.$$arity=0);Opal.defn(self,"$to_s",TMP_Boolean_to_s_9=function $$to_s(){var self=this;return self==true?"true":"false"},TMP_Boolean_to_s_9.$$arity=0);Opal.defn(self,"$dup",TMP_Boolean_dup_10=function $$dup(){var self=this;return self},TMP_Boolean_dup_10.$$arity=0);return(Opal.defn(self,"$clone",TMP_Boolean_clone_11=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},TMP_Boolean_clone_11.$$arity=-1),nil)&&"clone"})($nesting[0],Boolean,$nesting);Opal.const_set($nesting[0],"TrueClass",Opal.const_get_relative($nesting,"Boolean"));Opal.const_set($nesting[0],"FalseClass",Opal.const_get_relative($nesting,"Boolean"));Opal.const_set($nesting[0],"TRUE",true);return Opal.const_set($nesting[0],"FALSE",false)};Opal.modules["corelib/comparable"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$<","$equal?","$<=>","$normalize","$raise","$class"]);return function($base,$parent_nesting){var $Comparable,self=$Comparable=$module($base,"Comparable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Comparable_normalize_1,TMP_Comparable_$eq$eq_2,TMP_Comparable_$gt_3,TMP_Comparable_$gt$eq_4,TMP_Comparable_$lt_5,TMP_Comparable_$lt$eq_6,TMP_Comparable_between$q_7,TMP_Comparable_clamp_8;Opal.defs(self,"$normalize",TMP_Comparable_normalize_1=function $$normalize(what){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](what))){return what}if($truthy($rb_gt(what,0))){return 1}if($truthy($rb_lt(what,0))){return-1}return 0},TMP_Comparable_normalize_1.$$arity=1);Opal.defn(self,"$==",TMP_Comparable_$eq$eq_2=function(other){var self=this,cmp=nil;try{if($truthy(self["$equal?"](other))){return true}if(self["$<=>"]==Opal.Kernel["$<=>"]){return false}if(self.$$comparable){delete self.$$comparable;return false}if($truthy(cmp=self["$<=>"](other))){}else{return false}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)==0}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StandardError")])){try{return false}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Comparable_$eq$eq_2.$$arity=1);Opal.defn(self,"$>",TMP_Comparable_$gt_3=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)>0},TMP_Comparable_$gt_3.$$arity=1);Opal.defn(self,"$>=",TMP_Comparable_$gt$eq_4=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)>=0},TMP_Comparable_$gt$eq_4.$$arity=1);Opal.defn(self,"$<",TMP_Comparable_$lt_5=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)<0},TMP_Comparable_$lt_5.$$arity=1);Opal.defn(self,"$<=",TMP_Comparable_$lt$eq_6=function(other){var self=this,cmp=nil;if($truthy(cmp=self["$<=>"](other))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}return Opal.const_get_relative($nesting,"Comparable").$normalize(cmp)<=0},TMP_Comparable_$lt$eq_6.$$arity=1);Opal.defn(self,"$between?",TMP_Comparable_between$q_7=function(min,max){var self=this;if($rb_lt(self,min)){return false}if($rb_gt(self,max)){return false}return true},TMP_Comparable_between$q_7.$$arity=2);Opal.defn(self,"$clamp",TMP_Comparable_clamp_8=function $$clamp(min,max){var self=this,cmp=nil;cmp=min["$<=>"](max);if($truthy(cmp)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+min.$class()+" with "+max.$class()+" failed")}if($truthy($rb_gt(Opal.const_get_relative($nesting,"Comparable").$normalize(cmp),0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"min argument must be smaller than max argument")}if($truthy($rb_lt(Opal.const_get_relative($nesting,"Comparable").$normalize(self["$<=>"](min)),0))){return min}if($truthy($rb_gt(Opal.const_get_relative($nesting,"Comparable").$normalize(self["$<=>"](max)),0))){return max}return self},TMP_Comparable_clamp_8.$$arity=2)}($nesting[0],$nesting)};Opal.modules["corelib/regexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$nil?","$[]","$raise","$escape","$options","$to_str","$new","$join","$coerce_to!","$!","$match","$coerce_to?","$begin","$coerce_to","$call","$=~","$attr_reader","$===","$inspect","$to_a"]);(function($base,$super,$parent_nesting){function $RegexpError(){}var self=$RegexpError=$klass($base,$super,"RegexpError",$RegexpError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);(function($base,$super,$parent_nesting){function $Regexp(){}var self=$Regexp=$klass($base,$super,"Regexp",$Regexp);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Regexp_$eq$eq_6,TMP_Regexp_$eq$eq$eq_7,TMP_Regexp_$eq$_8,TMP_Regexp_inspect_9,TMP_Regexp_match_10,TMP_Regexp_match$q_11,TMP_Regexp_$_12,TMP_Regexp_source_13,TMP_Regexp_options_14,TMP_Regexp_casefold$q_15;Opal.const_set($nesting[0],"IGNORECASE",1);Opal.const_set($nesting[0],"MULTILINE",4);def.$$is_regexp=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1,TMP_escape_2,TMP_last_match_3,TMP_union_4,TMP_new_5;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this,$iter=TMP_allocate_1.$$p,$yield=$iter||nil,allocated=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_allocate_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}allocated=$send(self,Opal.find_super_dispatcher(self,"allocate",TMP_allocate_1,false),$zuper,$iter);allocated.uninitialized=true;return allocated},TMP_allocate_1.$$arity=0);Opal.defn(self,"$escape",TMP_escape_2=function $$escape(string){var self=this;return Opal.escape_regexp(string)},TMP_escape_2.$$arity=1);Opal.defn(self,"$last_match",TMP_last_match_3=function $$last_match(n){var self=this;if($gvars["~"]==null)$gvars["~"]=nil;if(n==null){n=nil}if($truthy(n["$nil?"]())){return $gvars["~"]}else{return $gvars["~"]["$[]"](n)}},TMP_last_match_3.$$arity=-1);Opal.alias(self,"quote","escape");Opal.defn(self,"$union",TMP_union_4=function $$union($a_rest){var self=this,parts;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}parts=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){parts[$arg_idx-0]=arguments[$arg_idx]}var is_first_part_array,quoted_validated,part,options,each_part_options;if(parts.length==0){return/(?!)/}is_first_part_array=parts[0].$$is_array;if(parts.length>1&&is_first_part_array){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"no implicit conversion of Array into String")}if(is_first_part_array){parts=parts[0]}options=undefined;quoted_validated=[];for(var i=0;i=pos){$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(re,md);return block===nil?$gvars["~"]:block.$call($gvars["~"])}re.lastIndex=md.index+1}},TMP_Regexp_match_10.$$arity=-2);Opal.defn(self,"$match?",TMP_Regexp_match$q_11=function(string,pos){var self=this;if(self.uninitialized){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"uninitialized Regexp")}if(pos===undefined){pos=0}else{pos=Opal.const_get_relative($nesting,"Opal").$coerce_to(pos,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(string===nil){return false}string=Opal.const_get_relative($nesting,"Opal").$coerce_to(string,Opal.const_get_relative($nesting,"String"),"to_str");if(pos<0){pos+=string.length;if(pos<0){return false}}var source=self.source;var flags="g";if(self.multiline){source=source.replace(".","[\\s\\S]");flags+="m"}var md,re=new RegExp(source,flags+(self.ignoreCase?"i":""));md=re.exec(string);if(md===null||md.index"},TMP_MatchData_inspect_23.$$arity=0);Opal.defn(self,"$length",TMP_MatchData_length_24=function $$length(){var self=this;return self.matches.length},TMP_MatchData_length_24.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_MatchData_to_a_25=function $$to_a(){var self=this;return self.matches},TMP_MatchData_to_a_25.$$arity=0);Opal.defn(self,"$to_s",TMP_MatchData_to_s_26=function $$to_s(){var self=this;return self.matches[0]},TMP_MatchData_to_s_26.$$arity=0);return(Opal.defn(self,"$values_at",TMP_MatchData_values_at_27=function $$values_at($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var i,a,index,values=[];for(i=0;i","$==","$=~","$new","$empty?","$ljust","$ceil","$/","$+","$rjust","$floor","$to_a","$each_char","$to_proc","$coerce_to!","$copy_singleton_methods","$initialize_clone","$initialize_dup","$enum_for","$size","$chomp","$[]","$to_i","$each_line","$class","$match","$captures","$proc","$succ","$escape"]);self.$require("corelib/comparable");self.$require("corelib/regexp");(function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String___id___1,TMP_String_try_convert_2,TMP_String_new_3,TMP_String_initialize_4,TMP_String_$_5,TMP_String_$_6,TMP_String_$_7,TMP_String_$lt$eq$gt_8,TMP_String_$eq$eq_9,TMP_String_$eq$_10,TMP_String_$$_11,TMP_String_capitalize_12,TMP_String_casecmp_13,TMP_String_center_14,TMP_String_chars_15,TMP_String_chomp_16,TMP_String_chop_17,TMP_String_chr_18,TMP_String_clone_19,TMP_String_dup_20,TMP_String_count_21,TMP_String_delete_22,TMP_String_downcase_23,TMP_String_each_char_24,TMP_String_each_line_26,TMP_String_empty$q_27,TMP_String_end_with$q_28,TMP_String_gsub_29,TMP_String_hash_30,TMP_String_hex_31,TMP_String_include$q_32,TMP_String_index_33,TMP_String_inspect_34,TMP_String_intern_35,TMP_String_lines_36,TMP_String_length_37,TMP_String_ljust_38,TMP_String_lstrip_39,TMP_String_ascii_only$q_40,TMP_String_match_41,TMP_String_next_42,TMP_String_oct_43,TMP_String_ord_44,TMP_String_partition_45,TMP_String_reverse_46,TMP_String_rindex_47,TMP_String_rjust_48,TMP_String_rpartition_49,TMP_String_rstrip_50,TMP_String_scan_51,TMP_String_split_52,TMP_String_squeeze_53,TMP_String_start_with$q_54,TMP_String_strip_55,TMP_String_sub_56,TMP_String_sum_57,TMP_String_swapcase_58,TMP_String_to_f_59,TMP_String_to_i_60,TMP_String_to_proc_62,TMP_String_to_s_63,TMP_String_tr_64,TMP_String_tr_s_65,TMP_String_upcase_66,TMP_String_upto_67,TMP_String_instance_variables_68,TMP_String__load_69,TMP_String_unpack_70;def.length=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));def.$$is_string=true;Opal.defn(self,"$__id__",TMP_String___id___1=function $$__id__(){var self=this;return self.toString()},TMP_String___id___1.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defs(self,"$try_convert",TMP_String_try_convert_2=function $$try_convert(what){var self=this;return Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](what,Opal.const_get_relative($nesting,"String"),"to_str")},TMP_String_try_convert_2.$$arity=1);Opal.defs(self,"$new",TMP_String_new_3=function(str){var self=this;if(str==null){str=""}str=Opal.const_get_relative($nesting,"Opal").$coerce_to(str,Opal.const_get_relative($nesting,"String"),"to_str");return new String(str)},TMP_String_new_3.$$arity=-1);Opal.defn(self,"$initialize",TMP_String_initialize_4=function $$initialize(str){var self=this;if(str===undefined){return self}return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"),"Mutable strings are not supported in Opal.")},TMP_String_initialize_4.$$arity=-1);Opal.defn(self,"$%",TMP_String_$_5=function(data){var self=this;if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](data))){return $send(self,"format",[self].concat(Opal.to_a(data)))}else{return self.$format(self,data)}},TMP_String_$_5.$$arity=1);Opal.defn(self,"$*",TMP_String_$_6=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal").$coerce_to(count,Opal.const_get_relative($nesting,"Integer"),"to_int");if(count<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"negative argument")}if(count===0){return""}var result="",string=self.toString();if(string.length*count>=1<<28){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"multiply count must not overflow maximum string size")}for(;;){if((count&1)===1){result+=string}count>>>=1;if(count===0){break}string+=string}return result},TMP_String_$_6.$$arity=1);Opal.defn(self,"$+",TMP_String_$_7=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str");return self+other.$to_s()},TMP_String_$_7.$$arity=1);Opal.defn(self,"$<=>",TMP_String_$lt$eq$gt_8=function(other){var self=this;if($truthy(other["$respond_to?"]("to_str"))){other=other.$to_str().$to_s();return self>other?1:self"](self);if(cmp===nil){return nil}else{return cmp>0?-1:cmp<0?1:0}}},TMP_String_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$==",TMP_String_$eq$eq_9=function(other){var self=this;if(other.$$is_string){return self.toString()===other.toString()}if(Opal.const_get_relative($nesting,"Opal")["$respond_to?"](other,"to_str")){return other["$=="](self)}return false},TMP_String_$eq$eq_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$=~",TMP_String_$eq$_10=function(other){var self=this;if(other.$$is_string){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"type mismatch: String given")}return other["$=~"](self)},TMP_String_$eq$_10.$$arity=1);Opal.defn(self,"$[]",TMP_String_$$_11=function(index,length){var self=this;var size=self.length,exclude;if(index.$$is_range){exclude=index.excl;length=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.end,Opal.const_get_relative($nesting,"Integer"),"to_int");index=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.begin,Opal.const_get_relative($nesting,"Integer"),"to_int");if(Math.abs(index)>size){return nil}if(index<0){index+=size}if(length<0){length+=size}if(!exclude){length+=1}length=length-index;if(length<0){length=0}return self.substr(index,length)}if(index.$$is_string){if(length!=null){self.$raise(Opal.const_get_relative($nesting,"TypeError"))}return self.indexOf(index)!==-1?index:nil}if(index.$$is_regexp){var match=self.match(index);if(match===null){$gvars["~"]=nil;return nil}$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(index,match);if(length==null){return match[0]}length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0&&-length=0&&length=size||index<0){return nil}return self.substr(index,1)}length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0){return nil}if(index>size||index<0){return nil}return self.substr(index,length)},TMP_String_$$_11.$$arity=-2);Opal.alias(self,"byteslice","[]");Opal.defn(self,"$capitalize",TMP_String_capitalize_12=function $$capitalize(){var self=this;return self.charAt(0).toUpperCase()+self.substr(1).toLowerCase()},TMP_String_capitalize_12.$$arity=0);Opal.defn(self,"$casecmp",TMP_String_casecmp_13=function $$casecmp(other){var self=this;other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;if(ascii_only.test(self)&&ascii_only.test(other)){self=self.toLowerCase();other=other.toLowerCase()}return self["$<=>"](other)},TMP_String_casecmp_13.$$arity=1);Opal.defn(self,"$center",TMP_String_center_14=function $$center(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var ljustified=self.$ljust($rb_divide($rb_plus(width,self.length),2).$ceil(),padstr),rjustified=self.$rjust($rb_divide($rb_plus(width,self.length),2).$floor(),padstr);return rjustified+ljustified.slice(self.length)},TMP_String_center_14.$$arity=-2);Opal.defn(self,"$chars",TMP_String_chars_15=function $$chars(){var self=this,$iter=TMP_String_chars_15.$$p,block=$iter||nil;if($iter)TMP_String_chars_15.$$p=null;if($truthy(block)){}else{return self.$each_char().$to_a()}return $send(self,"each_char",[],block.$to_proc())},TMP_String_chars_15.$$arity=0);Opal.defn(self,"$chomp",TMP_String_chomp_16=function $$chomp(separator){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($truthy(separator===nil||self.length===0)){return self}separator=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](separator,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(separator==="\n"){return self.replace(/\r?\n?$/,"")}else if(separator===""){return self.replace(/(\r?\n)+$/,"")}else if(self.length>separator.length){var tail=self.substr(self.length-separator.length,separator.length);if(tail===separator){return self.substr(0,self.length-separator.length)}}return self},TMP_String_chomp_16.$$arity=-1);Opal.defn(self,"$chop",TMP_String_chop_17=function $$chop(){var self=this;var length=self.length;if(length<=1){return""}if(self.charAt(length-1)==="\n"&&self.charAt(length-2)==="\r"){return self.substr(0,length-2)}else{return self.substr(0,length-1)}},TMP_String_chop_17.$$arity=0);Opal.defn(self,"$chr",TMP_String_chr_18=function $$chr(){var self=this;return self.charAt(0)},TMP_String_chr_18.$$arity=0);Opal.defn(self,"$clone",TMP_String_clone_19=function $$clone(){var self=this,copy=nil;copy=self.slice();copy.$copy_singleton_methods(self);copy.$initialize_clone(self);return copy},TMP_String_clone_19.$$arity=0);Opal.defn(self,"$dup",TMP_String_dup_20=function $$dup(){var self=this,copy=nil;copy=self.slice();copy.$initialize_dup(self);return copy},TMP_String_dup_20.$$arity=0);Opal.defn(self,"$count",TMP_String_count_21=function $$count($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return 0}return self.length-self.replace(new RegExp(char_class,"g"),"").length},TMP_String_count_21.$$arity=-1);Opal.defn(self,"$delete",TMP_String_delete_22=function($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp(char_class,"g"),"")},TMP_String_delete_22.$$arity=-1);Opal.defn(self,"$downcase",TMP_String_downcase_23=function $$downcase(){var self=this;return self.toLowerCase()},TMP_String_downcase_23.$$arity=0);Opal.defn(self,"$each_char",TMP_String_each_char_24=function $$each_char(){var TMP_25,self=this,$iter=TMP_String_each_char_24.$$p,block=$iter||nil;if($iter)TMP_String_each_char_24.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_char"],(TMP_25=function(){var self=TMP_25.$$s||this;return self.$size()},TMP_25.$$s=self,TMP_25.$$arity=0,TMP_25))}for(var i=0,length=self.length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix){return true}}return false},TMP_String_end_with$q_28.$$arity=-1);Opal.alias(self,"eql?","==");Opal.alias(self,"equal?","===");Opal.defn(self,"$gsub",TMP_String_gsub_29=function $$gsub(pattern,replacement){var self=this,$iter=TMP_String_gsub_29.$$p,block=$iter||nil;if($iter)TMP_String_gsub_29.$$p=null;if(replacement===undefined&&block===nil){return self.$enum_for("gsub",pattern)}var result="",match_data=nil,index=0,match,_replacement;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while(true){match=pattern.exec(self);if(match===null){$gvars["~"]=nil;result+=self.slice(index);break}match_data=Opal.const_get_relative($nesting,"MatchData").$new(pattern,match);if(replacement===undefined){_replacement=block(match[0])}else if(replacement.$$is_hash){_replacement=replacement["$[]"](match[0]).$to_s()}else{if(!replacement.$$is_string){replacement=Opal.const_get_relative($nesting,"Opal").$coerce_to(replacement,Opal.const_get_relative($nesting,"String"),"to_str")}_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,function(original,slashes,command){if(slashes.length%2===0){return original}switch(command){case"+":for(var i=match.length-1;i>0;i--){if(match[i]!==undefined){return slashes.slice(1)+match[i]}}return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}}).replace(/\\\\/g,"\\")}if(pattern.lastIndex===match.index){result+=_replacement+self.slice(index,match.index+1);pattern.lastIndex+=1}else{result+=self.slice(index,match.index)+_replacement}index=pattern.lastIndex}$gvars["~"]=match_data;return result},TMP_String_gsub_29.$$arity=-2);Opal.defn(self,"$hash",TMP_String_hash_30=function $$hash(){var self=this;return self.toString()},TMP_String_hash_30.$$arity=0);Opal.defn(self,"$hex",TMP_String_hex_31=function $$hex(){var self=this;return self.$to_i(16)},TMP_String_hex_31.$$arity=0);Opal.defn(self,"$include?",TMP_String_include$q_32=function(other){var self=this;if(!other.$$is_string){other=Opal.const_get_relative($nesting,"Opal").$coerce_to(other,Opal.const_get_relative($nesting,"String"),"to_str")}return self.indexOf(other)!==-1},TMP_String_include$q_32.$$arity=1);Opal.defn(self,"$index",TMP_String_index_33=function $$index(search,offset){var self=this;var index,match,regex;if(offset===undefined){offset=0}else{offset=Opal.const_get_relative($nesting,"Opal").$coerce_to(offset,Opal.const_get_relative($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){regex=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){match=regex.exec(self);if(match===null){$gvars["~"]=nil;index=-1;break}if(match.index>=offset){$gvars["~"]=Opal.const_get_relative($nesting,"MatchData").$new(regex,match);index=match.index;break}regex.lastIndex=match.index+1}}else{search=Opal.const_get_relative($nesting,"Opal").$coerce_to(search,Opal.const_get_relative($nesting,"String"),"to_str");if(search.length===0&&offset>self.length){index=-1}else{index=self.indexOf(search,offset)}}return index===-1?nil:index},TMP_String_index_33.$$arity=-2);Opal.defn(self,"$inspect",TMP_String_inspect_34=function $$inspect(){var self=this;var escapable=/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"},escaped=self.replace(escapable,function(chr){return meta[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4)});return'"'+escaped.replace(/\#[\$\@\{]/g,"\\$&")+'"'},TMP_String_inspect_34.$$arity=0);Opal.defn(self,"$intern",TMP_String_intern_35=function $$intern(){var self=this;return self},TMP_String_intern_35.$$arity=0);Opal.defn(self,"$lines",TMP_String_lines_36=function $$lines(separator){var self=this,$iter=TMP_String_lines_36.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_String_lines_36.$$p=null;e=$send(self,"each_line",[separator],block.$to_proc());if($truthy(block)){return self}else{return e.$to_a()}},TMP_String_lines_36.$$arity=-1);Opal.defn(self,"$length",TMP_String_length_37=function $$length(){var self=this;return self.length},TMP_String_length_37.$$arity=0);Opal.defn(self,"$ljust",TMP_String_ljust_38=function $$ljust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var index=-1,result="";width-=self.length;while(++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){switch(code){case 57:carry=true;code=48;break;case 90:carry=true;code=65;break;case 122:carry=true;code=97;break;default:carry=false;code+=1}}else{if(first_alphanum_char_index===-1){if(code===255){carry=true;code=0}else{carry=false;code+=1}}else{carry=true}}result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1);if(carry&&(i===0||i===first_alphanum_char_index)){switch(code){case 65:break;case 97:break;default:code+=1}if(i===0){result=String.fromCharCode(code)+result}else{result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i)}carry=false}if(!carry){break}}return result},TMP_String_next_42.$$arity=0);Opal.defn(self,"$oct",TMP_String_oct_43=function $$oct(){var self=this;var result,string=self,radix=8;if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"){return original}}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16;break}return head+tail});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_String_oct_43.$$arity=0);Opal.defn(self,"$ord",TMP_String_ord_44=function $$ord(){var self=this;return self.charCodeAt(0)},TMP_String_ord_44.$$arity=0);Opal.defn(self,"$partition",TMP_String_partition_45=function $$partition(sep){var self=this;var i,m;if(sep.$$is_regexp){m=sep.exec(self);if(m===null){i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(sep,m);sep=m[0];i=m.index}}else{sep=Opal.const_get_relative($nesting,"Opal").$coerce_to(sep,Opal.const_get_relative($nesting,"String"),"to_str");i=self.indexOf(sep)}if(i===-1){return[self,"",""]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_String_partition_45.$$arity=1);Opal.defn(self,"$reverse",TMP_String_reverse_46=function $$reverse(){var self=this;return self.split("").reverse().join("")},TMP_String_reverse_46.$$arity=0);Opal.defn(self,"$rindex",TMP_String_rindex_47=function $$rindex(search,offset){var self=this;var i,m,r,_m;if(offset===undefined){offset=self.length}else{offset=Opal.const_get_relative($nesting,"Opal").$coerce_to(offset,Opal.const_get_relative($nesting,"Integer"),"to_int");if(offset<0){offset+=self.length;if(offset<0){return nil}}}if(search.$$is_regexp){m=null;r=new RegExp(search.source,"gm"+(search.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null||_m.index>offset){break}m=_m;r.lastIndex=m.index+1}if(m===null){$gvars["~"]=nil;i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(r,m);i=m.index}}else{search=Opal.const_get_relative($nesting,"Opal").$coerce_to(search,Opal.const_get_relative($nesting,"String"),"to_str");i=self.lastIndexOf(search,offset)}return i===-1?nil:i},TMP_String_rindex_47.$$arity=-2);Opal.defn(self,"$rjust",TMP_String_rjust_48=function $$rjust(width,padstr){var self=this;if(padstr==null){padstr=" "}width=Opal.const_get_relative($nesting,"Opal").$coerce_to(width,Opal.const_get_relative($nesting,"Integer"),"to_int");padstr=Opal.const_get_relative($nesting,"Opal").$coerce_to(padstr,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if($truthy(padstr["$empty?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"zero width padding")}if($truthy(width<=self.length)){return self}var chars=Math.floor(width-self.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return result+padstr.slice(0,remaining)+self},TMP_String_rjust_48.$$arity=-2);Opal.defn(self,"$rpartition",TMP_String_rpartition_49=function $$rpartition(sep){var self=this;var i,m,r,_m;if(sep.$$is_regexp){m=null;r=new RegExp(sep.source,"gm"+(sep.ignoreCase?"i":""));while(true){_m=r.exec(self);if(_m===null){break}m=_m;r.lastIndex=m.index+1}if(m===null){i=-1}else{Opal.const_get_relative($nesting,"MatchData").$new(r,m);sep=m[0];i=m.index}}else{sep=Opal.const_get_relative($nesting,"Opal").$coerce_to(sep,Opal.const_get_relative($nesting,"String"),"to_str");i=self.lastIndexOf(sep)}if(i===-1){return["","",self]}return[self.slice(0,i),self.slice(i,i+sep.length),self.slice(i+sep.length)]},TMP_String_rpartition_49.$$arity=1);Opal.defn(self,"$rstrip",TMP_String_rstrip_50=function $$rstrip(){var self=this;return self.replace(/[\s\u0000]*$/,"")},TMP_String_rstrip_50.$$arity=0);Opal.defn(self,"$scan",TMP_String_scan_51=function $$scan(pattern){var self=this,$iter=TMP_String_scan_51.$$p,block=$iter||nil;if($iter)TMP_String_scan_51.$$p=null;var result=[],match_data=nil,match;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str");pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}while((match=pattern.exec(self))!=null){match_data=Opal.const_get_relative($nesting,"MatchData").$new(pattern,match);if(block===nil){match.length==1?result.push(match[0]):result.push(match_data.$captures())}else{match.length==1?block(match[0]):block.call(self,match_data.$captures())}if(pattern.lastIndex===match.index){pattern.lastIndex+=1}}$gvars["~"]=match_data;return block!==nil?self:result},TMP_String_scan_51.$$arity=1);Opal.alias(self,"size","length");Opal.alias(self,"slice","[]");Opal.defn(self,"$split",TMP_String_split_52=function $$split(pattern,limit){var $a,self=this;if($gvars[";"]==null)$gvars[";"]=nil;if(self.length===0){return[]}if(limit===undefined){limit=0}else{limit=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](limit,Opal.const_get_relative($nesting,"Integer"),"to_int");if(limit===1){return[self]}}if(pattern===undefined||pattern===nil){pattern=$truthy($a=$gvars[";"])?$a:" "}var result=[],string=self.toString(),index=0,match,i,ii;if(pattern.$$is_regexp){pattern=new RegExp(pattern.source,"gm"+(pattern.ignoreCase?"i":""))}else{pattern=Opal.const_get_relative($nesting,"Opal").$coerce_to(pattern,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(pattern===" "){pattern=/\s+/gm;string=string.replace(/^\s+/,"")}else{pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm")}}result=string.split(pattern);if(result.length===1&&result[0]===string){return result}while((i=result.indexOf(undefined))!==-1){result.splice(i,1)}if(limit===0){while(result[result.length-1]===""){result.length-=1}return result}match=pattern.exec(string);if(limit<0){if(match!==null&&match[0]===""&&pattern.source.indexOf("(?=")===-1){for(i=0,ii=match.length;i=result.length){return result}i=0;while(match!==null){i++;index=pattern.lastIndex;if(i+1===limit){break}match=pattern.exec(string)}result.splice(limit-1,result.length-1,string.slice(index));return result},TMP_String_split_52.$$arity=-1);Opal.defn(self,"$squeeze",TMP_String_squeeze_53=function $$squeeze($a_rest){var self=this,sets;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}sets=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){sets[$arg_idx-0]=arguments[$arg_idx]}if(sets.length===0){return self.replace(/(.)\1+/g,"$1")}var char_class=char_class_from_char_sets(sets);if(char_class===null){return self}return self.replace(new RegExp("("+char_class+")\\1+","g"),"$1")},TMP_String_squeeze_53.$$arity=-1);Opal.defn(self,"$start_with?",TMP_String_start_with$q_54=function($a_rest){var self=this,prefixes;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}prefixes=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){prefixes[$arg_idx-0]=arguments[$arg_idx]}for(var i=0,length=prefixes.length;i0;i--){if(result[i]!==undefined){return slashes.slice(1)+result[i]}}return"";case"&":return slashes.slice(1)+result[0];case"`":return slashes.slice(1)+self.slice(0,result.index);case"'":return slashes.slice(1)+self.slice(result.index+result[0].length);default:return slashes.slice(1)+(result[command]||"")}}).replace(/\\\\/g,"\\");return self.slice(0,result.index)+replacement+self.slice(result.index+result[0].length)},TMP_String_sub_56.$$arity=-2);Opal.alias(self,"succ","next");Opal.defn(self,"$sum",TMP_String_sum_57=function $$sum(n){var self=this;if(n==null){n=16}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");var result=0,length=self.length,i=0;for(;i36){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"invalid radix "+radix)}if(/^\s*_/.test(string)){return 0}string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if(tail.charAt(1)==="x"&&flag==="0x"&&(radix===0||radix===16)){return original}}switch(flag){case"0b":if(radix===0||radix===2){radix=2;return head+tail}break;case"0":case"0o":if(radix===0||radix===8){radix=8;return head+tail}break;case"0d":if(radix===0||radix===10){radix=10;return head+tail}break;case"0x":if(radix===0||radix===16){radix=16;return head+tail}break}return original});result=parseInt(string.replace(/_(?!_)/g,""),radix);return isNaN(result)?0:result},TMP_String_to_i_60.$$arity=-1);Opal.defn(self,"$to_proc",TMP_String_to_proc_62=function $$to_proc(){var TMP_61,self=this,sym=nil;sym=self.valueOf();return $send(self,"proc",[],(TMP_61=function($a_rest){var self=TMP_61.$$s||this,block,args;block=TMP_61.$$p||nil;if(block)TMP_61.$$p=null;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(args.length===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no receiver given")}var obj=args.shift();if(obj==null)obj=nil;return Opal.send(obj,sym,args,block)},TMP_61.$$s=self,TMP_61.$$arity=-1,TMP_61))},TMP_String_to_proc_62.$$arity=0);Opal.defn(self,"$to_s",TMP_String_to_s_63=function $$to_s(){var self=this;return self.toString()},TMP_String_to_s_63.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.alias(self,"to_sym","intern");Opal.defn(self,"$tr",TMP_String_tr_64=function $$tr(from,to){var self=this;from=Opal.const_get_relative($nesting,"Opal").$coerce_to(from,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();to=Opal.const_get_relative($nesting,"Opal").$coerce_to(to,Opal.const_get_relative($nesting,"String"),"to_str").$to_s();if(from.length==0||from===to){return self}var i,in_range,c,ch,start,end,length;var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"&&from_chars.length>1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var to_chars_expanded=[];var last_to=null;in_range=false;for(i=0;iend){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration')}for(c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i0&&ichar_code_upto){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration')}for(char_code=char_code_from+1;char_code1;set=explode_sequences_in_character_set(neg?set.slice(1):set);if(neg){neg_intersection=intersection(neg_intersection,set)}else{pos_intersection=intersection(pos_intersection,set)}}if(pos_intersection.length>0&&neg_intersection.length>0){tmp="";for(i=0,len=pos_intersection.length;i0){return"["+Opal.const_get_relative($nesting,"Regexp").$escape(pos_intersection)+"]"}if(neg_intersection.length>0){return"[^"+Opal.const_get_relative($nesting,"Regexp").$escape(neg_intersection)+"]"}return null}Opal.defn(self,"$instance_variables",TMP_String_instance_variables_68=function $$instance_variables(){var self=this;return[]},TMP_String_instance_variables_68.$$arity=0);Opal.defs(self,"$_load",TMP_String__load_69=function $$_load($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self,"new",Opal.to_a(args))},TMP_String__load_69.$$arity=-1);return(Opal.defn(self,"$unpack",TMP_String_unpack_70=function $$unpack(pattern){var self=this,$case=nil;function stringToBytes(string){var i,singleByte,l=string.length,result=[];for(i=0;irhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$*","$coerce_to","$try_convert","$<","$+","$-","$ceil","$/","$size","$===","$<<","$[]","$[]=","$inspect","$__send__","$<=>","$first","$reverse","$sort","$to_proc","$compare","$call","$dup","$to_a","$lambda","$sort!","$map!","$has_key?","$values","$zip"]);return function($base,$parent_nesting){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Enumerable_all$q_1,TMP_Enumerable_any$q_4,TMP_Enumerable_chunk_7,TMP_Enumerable_chunk_while_10,TMP_Enumerable_collect_12,TMP_Enumerable_collect_concat_14,TMP_Enumerable_count_17,TMP_Enumerable_cycle_21,TMP_Enumerable_detect_23,TMP_Enumerable_drop_25,TMP_Enumerable_drop_while_26,TMP_Enumerable_each_cons_27,TMP_Enumerable_each_entry_29,TMP_Enumerable_each_slice_31,TMP_Enumerable_each_with_index_33,TMP_Enumerable_each_with_object_35,TMP_Enumerable_entries_37,TMP_Enumerable_find_all_38,TMP_Enumerable_find_index_40,TMP_Enumerable_first_45,TMP_Enumerable_grep_46,TMP_Enumerable_grep_v_47,TMP_Enumerable_group_by_48,TMP_Enumerable_include$q_51,TMP_Enumerable_inject_52,TMP_Enumerable_lazy_54,TMP_Enumerable_enumerator_size_55,TMP_Enumerable_max_56,TMP_Enumerable_max_by_57,TMP_Enumerable_min_59,TMP_Enumerable_min_by_60,TMP_Enumerable_minmax_62,TMP_Enumerable_minmax_by_64,TMP_Enumerable_none$q_65,TMP_Enumerable_one$q_68,TMP_Enumerable_partition_71,TMP_Enumerable_reject_73,TMP_Enumerable_reverse_each_75,TMP_Enumerable_slice_before_77,TMP_Enumerable_slice_after_79,TMP_Enumerable_slice_when_82,TMP_Enumerable_sort_84,TMP_Enumerable_sort_by_86,TMP_Enumerable_sum_91,TMP_Enumerable_take_93,TMP_Enumerable_take_while_94,TMP_Enumerable_uniq_96,TMP_Enumerable_zip_98;Opal.defn(self,"$all?",TMP_Enumerable_all$q_1=function(){try{var TMP_2,TMP_3,self=this,$iter=TMP_Enumerable_all$q_1.$$p,block=$iter||nil;if($iter)TMP_Enumerable_all$q_1.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_2=function($a_rest){var self=TMP_2.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){return nil}else{Opal.ret(false)}},TMP_2.$$s=self,TMP_2.$$arity=-1,TMP_2))}else{$send(self,"each",[],(TMP_3=function($a_rest){var self=TMP_3.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){return nil}else{Opal.ret(false)}},TMP_3.$$s=self,TMP_3.$$arity=-1,TMP_3))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_all$q_1.$$arity=0);Opal.defn(self,"$any?",TMP_Enumerable_any$q_4=function(){try{var TMP_5,TMP_6,self=this,$iter=TMP_Enumerable_any$q_4.$$p,block=$iter||nil;if($iter)TMP_Enumerable_any$q_4.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_5=function($a_rest){var self=TMP_5.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(true)}else{return nil}},TMP_5.$$s=self,TMP_5.$$arity=-1,TMP_5))}else{$send(self,"each",[],(TMP_6=function($a_rest){var self=TMP_6.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){Opal.ret(true)}else{return nil}},TMP_6.$$s=self,TMP_6.$$arity=-1,TMP_6))}return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_any$q_4.$$arity=0);Opal.defn(self,"$chunk",TMP_Enumerable_chunk_7=function $$chunk(){var TMP_8,TMP_9,self=this,$iter=TMP_Enumerable_chunk_7.$$p,block=$iter||nil;if($iter)TMP_Enumerable_chunk_7.$$p=null;if(block!==nil){}else{return $send(self,"to_enum",["chunk"],(TMP_8=function(){var self=TMP_8.$$s||this;return self.$enumerator_size()},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8))}return $send(Opal.const_get_qualified("::","Enumerator"),"new",[],(TMP_9=function(yielder){var self=TMP_9.$$s||this;if(yielder==null)yielder=nil;var previous=nil,accumulate=[];function releaseAccumulate(){if(accumulate.length>0){yielder.$yield(previous,accumulate)}}self.$each.$$p=function(value){var key=Opal.yield1(block,value);if(key===nil){releaseAccumulate();accumulate=[];previous=nil}else{if(previous===nil||previous===key){accumulate.push(value)}else{releaseAccumulate();accumulate=[value]}previous=key}};self.$each();releaseAccumulate()},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_Enumerable_chunk_7.$$arity=0);Opal.defn(self,"$chunk_while",TMP_Enumerable_chunk_while_10=function $$chunk_while(){var TMP_11,self=this,$iter=TMP_Enumerable_chunk_while_10.$$p,block=$iter||nil;if($iter)TMP_Enumerable_chunk_while_10.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"slice_when",[],(TMP_11=function(before,after){var self=TMP_11.$$s||this;if(before==null)before=nil;if(after==null)after=nil;return Opal.yieldX(block,[before,after])["$!"]()},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11))},TMP_Enumerable_chunk_while_10.$$arity=0);Opal.defn(self,"$collect",TMP_Enumerable_collect_12=function $$collect(){var TMP_13,self=this,$iter=TMP_Enumerable_collect_12.$$p,block=$iter||nil;if($iter)TMP_Enumerable_collect_12.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect"],(TMP_13=function(){var self=TMP_13.$$s||this;return self.$enumerator_size()},TMP_13.$$s=self,TMP_13.$$arity=0,TMP_13))}var result=[];self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);result.push(value)};self.$each();return result},TMP_Enumerable_collect_12.$$arity=0);Opal.defn(self,"$collect_concat",TMP_Enumerable_collect_concat_14=function $$collect_concat(){var TMP_15,TMP_16,self=this,$iter=TMP_Enumerable_collect_concat_14.$$p,block=$iter||nil;if($iter)TMP_Enumerable_collect_concat_14.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["collect_concat"],(TMP_15=function(){var self=TMP_15.$$s||this;return self.$enumerator_size()},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15))}return $send(self,"map",[],(TMP_16=function(item){var self=TMP_16.$$s||this;if(item==null)item=nil;return Opal.yield1(block,item)},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16)).$flatten(1)},TMP_Enumerable_collect_concat_14.$$arity=0);Opal.defn(self,"$count",TMP_Enumerable_count_17=function $$count(object){var TMP_18,TMP_19,TMP_20,self=this,$iter=TMP_Enumerable_count_17.$$p,block=$iter||nil,result=nil;if($iter)TMP_Enumerable_count_17.$$p=null;result=0;if(object!=null&&block!==nil){self.$warn("warning: given block not used")}if($truthy(object!=null)){block=$send(self,"proc",[],(TMP_18=function($a_rest){var self=TMP_18.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Opal").$destructure(args)["$=="](object)},TMP_18.$$s=self,TMP_18.$$arity=-1,TMP_18))}else if($truthy(block["$nil?"]())){block=$send(self,"proc",[],(TMP_19=function(){var self=TMP_19.$$s||this;return true},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19))}$send(self,"each",[],(TMP_20=function($a_rest){var self=TMP_20.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,args))){return result++}else{return nil}},TMP_20.$$s=self,TMP_20.$$arity=-1,TMP_20));return result},TMP_Enumerable_count_17.$$arity=-1);Opal.defn(self,"$cycle",TMP_Enumerable_cycle_21=function $$cycle(n){var TMP_22,self=this,$iter=TMP_Enumerable_cycle_21.$$p,block=$iter||nil;if(n==null){n=nil}if($iter)TMP_Enumerable_cycle_21.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["cycle",n],(TMP_22=function(){var self=TMP_22.$$s||this;if(n["$=="](nil)){if($truthy(self["$respond_to?"]("size"))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")}else{return nil}}else{n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_gt(n,0))){return $rb_times(self.$enumerator_size(),n)}else{return 0}}},TMP_22.$$s=self,TMP_22.$$arity=0,TMP_22))}if($truthy(n["$nil?"]())){}else{n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(n<=0)){return nil}}var result,all=[],i,length,value;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);all.push(param)};self.$each();if(result!==undefined){return result}if(all.length===0){return nil}if(n===nil){while(true){for(i=0,length=all.length;i1){for(i=0,length=all.length;in){buffer.shift()}if(buffer.length==n){Opal.yield1(block,buffer.slice(0,n))}};self.$each();return result},TMP_Enumerable_each_cons_27.$$arity=1);Opal.defn(self,"$each_entry",TMP_Enumerable_each_entry_29=function $$each_entry($a_rest){var TMP_30,self=this,data,$iter=TMP_Enumerable_each_entry_29.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}data=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){data[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_each_entry_29.$$p=null;if(block!==nil){}else{return $send(self,"to_enum",["each_entry"].concat(Opal.to_a(data)),(TMP_30=function(){var self=TMP_30.$$s||this;return self.$enumerator_size()},TMP_30.$$s=self,TMP_30.$$arity=0,TMP_30))}self.$each.$$p=function(){var item=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);Opal.yield1(block,item)};self.$each.apply(self,data);return self},TMP_Enumerable_each_entry_29.$$arity=-1);Opal.defn(self,"$each_slice",TMP_Enumerable_each_slice_31=function $$each_slice(n){var TMP_32,self=this,$iter=TMP_Enumerable_each_slice_31.$$p,block=$iter||nil;if($iter)TMP_Enumerable_each_slice_31.$$p=null;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(n<=0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"invalid slice size")}if(block!==nil){}else{return $send(self,"enum_for",["each_slice",n],(TMP_32=function(){var self=TMP_32.$$s||this;if($truthy(self["$respond_to?"]("size"))){return $rb_divide(self.$size(),n).$ceil()}else{return nil}},TMP_32.$$s=self,TMP_32.$$arity=0,TMP_32))}var result,slice=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);slice.push(param);if(slice.length===n){Opal.yield1(block,slice);slice=[]}};self.$each();if(result!==undefined){return result}if(slice.length>0){Opal.yield1(block,slice)}return nil},TMP_Enumerable_each_slice_31.$$arity=1);Opal.defn(self,"$each_with_index",TMP_Enumerable_each_with_index_33=function $$each_with_index($a_rest){var TMP_34,self=this,args,$iter=TMP_Enumerable_each_with_index_33.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_each_with_index_33.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_with_index"].concat(Opal.to_a(args)),(TMP_34=function(){var self=TMP_34.$$s||this;return self.$enumerator_size()},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))}var result,index=0;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);block(param,index);index++};self.$each.apply(self,args);if(result!==undefined){return result}return self},TMP_Enumerable_each_with_index_33.$$arity=-1);Opal.defn(self,"$each_with_object",TMP_Enumerable_each_with_object_35=function $$each_with_object(object){var TMP_36,self=this,$iter=TMP_Enumerable_each_with_object_35.$$p,block=$iter||nil;if($iter)TMP_Enumerable_each_with_object_35.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["each_with_object",object],(TMP_36=function(){var self=TMP_36.$$s||this;return self.$enumerator_size()},TMP_36.$$s=self,TMP_36.$$arity=0,TMP_36))}var result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);block(param,object)};self.$each();if(result!==undefined){return result}return object},TMP_Enumerable_each_with_object_35.$$arity=1);Opal.defn(self,"$entries",TMP_Enumerable_entries_37=function $$entries($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}var result=[];self.$each.$$p=function(){result.push(Opal.const_get_relative($nesting,"Opal").$destructure(arguments))};self.$each.apply(self,args);return result},TMP_Enumerable_entries_37.$$arity=-1);Opal.alias(self,"find","detect");Opal.defn(self,"$find_all",TMP_Enumerable_find_all_38=function $$find_all(){var TMP_39,self=this,$iter=TMP_Enumerable_find_all_38.$$p,block=$iter||nil;if($iter)TMP_Enumerable_find_all_38.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["find_all"],(TMP_39=function(){var self=TMP_39.$$s||this;return self.$enumerator_size()},TMP_39.$$s=self,TMP_39.$$arity=0,TMP_39))}var result=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){result.push(param)}};self.$each();return result},TMP_Enumerable_find_all_38.$$arity=0);Opal.defn(self,"$find_index",TMP_Enumerable_find_index_40=function $$find_index(object){try{var TMP_41,TMP_42,self=this,$iter=TMP_Enumerable_find_index_40.$$p,block=$iter||nil,index=nil;if($iter)TMP_Enumerable_find_index_40.$$p=null;if($truthy(object===undefined&&block===nil)){return self.$enum_for("find_index")}if(object!=null&&block!==nil){self.$warn("warning: given block not used")}index=0;if($truthy(object!=null)){$send(self,"each",[],(TMP_41=function($a_rest){var self=TMP_41.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if(Opal.const_get_relative($nesting,"Opal").$destructure(value)["$=="](object)){Opal.ret(index)}return index+=1},TMP_41.$$s=self,TMP_41.$$arity=-1,TMP_41))}else{$send(self,"each",[],(TMP_42=function($a_rest){var self=TMP_42.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(index)}return index+=1},TMP_42.$$s=self,TMP_42.$$arity=-1,TMP_42))}return nil}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_find_index_40.$$arity=-1);Opal.defn(self,"$first",TMP_Enumerable_first_45=function $$first(number){try{var TMP_43,TMP_44,self=this,result=nil,current=nil;if($truthy(number===undefined)){return $send(self,"each",[],(TMP_43=function(value){var self=TMP_43.$$s||this;if(value==null)value=nil;Opal.ret(value)},TMP_43.$$s=self,TMP_43.$$arity=1,TMP_43))}else{result=[];number=Opal.const_get_relative($nesting,"Opal").$coerce_to(number,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(number<0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to take negative size")}if($truthy(number==0)){return[]}current=0;$send(self,"each",[],(TMP_44=function($a_rest){var self=TMP_44.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}result.push(Opal.const_get_relative($nesting,"Opal").$destructure(args));if($truthy(number<=++current)){Opal.ret(result)}else{return nil}},TMP_44.$$s=self,TMP_44.$$arity=-1,TMP_44));return result}}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_first_45.$$arity=-1);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_Enumerable_grep_46=function $$grep(pattern){var self=this,$iter=TMP_Enumerable_grep_46.$$p,block=$iter||nil;if($iter)TMP_Enumerable_grep_46.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)){value=Opal.yield1(block,param);result.push(value)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)){result.push(param)}}}self.$each();return result},TMP_Enumerable_grep_46.$$arity=1);Opal.defn(self,"$grep_v",TMP_Enumerable_grep_v_47=function $$grep_v(pattern){var self=this,$iter=TMP_Enumerable_grep_v_47.$$p,block=$iter||nil;if($iter)TMP_Enumerable_grep_v_47.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($falsy(value)){value=Opal.yield1(block,param);result.push(value)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($falsy(value)){result.push(param)}}}self.$each();return result},TMP_Enumerable_grep_v_47.$$arity=1);Opal.defn(self,"$group_by",TMP_Enumerable_group_by_48=function $$group_by(){var TMP_49,$a,self=this,$iter=TMP_Enumerable_group_by_48.$$p,block=$iter||nil,hash=nil,$writer=nil;if($iter)TMP_Enumerable_group_by_48.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["group_by"],(TMP_49=function(){var self=TMP_49.$$s||this;return self.$enumerator_size()},TMP_49.$$s=self,TMP_49.$$arity=0,TMP_49))}hash=Opal.const_get_relative($nesting,"Hash").$new();var result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);($truthy($a=hash["$[]"](value))?$a:($writer=[value,[]],$send(hash,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]))["$<<"](param)};self.$each();if(result!==undefined){return result}return hash},TMP_Enumerable_group_by_48.$$arity=0);Opal.defn(self,"$include?",TMP_Enumerable_include$q_51=function(obj){try{var TMP_50,self=this;$send(self,"each",[],(TMP_50=function($a_rest){var self=TMP_50.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(Opal.const_get_relative($nesting,"Opal").$destructure(args)["$=="](obj)){Opal.ret(true)}else{return nil}},TMP_50.$$s=self,TMP_50.$$arity=-1,TMP_50));return false}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_include$q_51.$$arity=1);Opal.defn(self,"$inject",TMP_Enumerable_inject_52=function $$inject(object,sym){var self=this,$iter=TMP_Enumerable_inject_52.$$p,block=$iter||nil;if($iter)TMP_Enumerable_inject_52.$$p=null;var result=object;if(block!==nil&&sym===undefined){self.$each.$$p=function(){var value=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}value=Opal.yieldX(block,[result,value]);result=value}}else{if(sym===undefined){if(!Opal.const_get_relative($nesting,"Symbol")["$==="](object)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+object.$inspect()+" is not a Symbol")}sym=object;result=undefined}self.$each.$$p=function(){var value=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=value;return}result=result.$__send__(sym,value)}}self.$each();return result==undefined?nil:result},TMP_Enumerable_inject_52.$$arity=-1);Opal.defn(self,"$lazy",TMP_Enumerable_lazy_54=function $$lazy(){var TMP_53,self=this;return $send(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Enumerator"),"Lazy"),"new",[self,self.$enumerator_size()],(TMP_53=function(enum$,$a_rest){var self=TMP_53.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;return $send(enum$,"yield",Opal.to_a(args))},TMP_53.$$s=self,TMP_53.$$arity=-2,TMP_53))},TMP_Enumerable_lazy_54.$$arity=0);Opal.defn(self,"$enumerator_size",TMP_Enumerable_enumerator_size_55=function $$enumerator_size(){var self=this;if($truthy(self["$respond_to?"]("size"))){return self.$size()}else{return nil}},TMP_Enumerable_enumerator_size_55.$$arity=0);Opal.alias(self,"map","collect");Opal.defn(self,"$max",TMP_Enumerable_max_56=function $$max(n){var self=this,$iter=TMP_Enumerable_max_56.$$p,block=$iter||nil;if($iter)TMP_Enumerable_max_56.$$p=null;if(n===undefined||n===nil){var result,value;self.$each.$$p=function(){var item=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=item;return}if(block!==nil){value=Opal.yieldX(block,[item,result])}else{value=item["$<=>"](result)}if(value===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}if(value>0){result=item}};self.$each();if(result===undefined){return nil}else{return result}}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");return $send(self,"sort",[],block.$to_proc()).$reverse().$first(n)},TMP_Enumerable_max_56.$$arity=-1);Opal.defn(self,"$max_by",TMP_Enumerable_max_by_57=function $$max_by(){var TMP_58,self=this,$iter=TMP_Enumerable_max_by_57.$$p,block=$iter||nil;if($iter)TMP_Enumerable_max_by_57.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["max_by"],(TMP_58=function(){var self=TMP_58.$$s||this;return self.$enumerator_size()},TMP_58.$$s=self,TMP_58.$$arity=0,TMP_58))}var result,by;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)>0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_Enumerable_max_by_57.$$arity=0);Opal.alias(self,"member?","include?");Opal.defn(self,"$min",TMP_Enumerable_min_59=function $$min(){var self=this,$iter=TMP_Enumerable_min_59.$$p,block=$iter||nil;if($iter)TMP_Enumerable_min_59.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}if(value<0){result=param}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(result===undefined){result=param;return}if(Opal.const_get_relative($nesting,"Opal").$compare(param,result)<0){result=param}}}self.$each();return result===undefined?nil:result},TMP_Enumerable_min_59.$$arity=0);Opal.defn(self,"$min_by",TMP_Enumerable_min_by_60=function $$min_by(){var TMP_61,self=this,$iter=TMP_Enumerable_min_by_60.$$p,block=$iter||nil;if($iter)TMP_Enumerable_min_by_60.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["min_by"],(TMP_61=function(){var self=TMP_61.$$s||this;return self.$enumerator_size()},TMP_61.$$s=self,TMP_61.$$arity=0,TMP_61))}var result,by;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value["$<=>"](by)<0){result=param;by=value}};self.$each();return result===undefined?nil:result},TMP_Enumerable_min_by_60.$$arity=0);Opal.defn(self,"$minmax",TMP_Enumerable_minmax_62=function $$minmax(){var $a,TMP_63,self=this,$iter=TMP_Enumerable_minmax_62.$$p,block=$iter||nil;if($iter)TMP_Enumerable_minmax_62.$$p=null;block=$truthy($a=block)?$a:$send(self,"proc",[],(TMP_63=function(a,b){var self=TMP_63.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_63.$$s=self,TMP_63.$$arity=2,TMP_63));var min=nil,max=nil,first_time=true;self.$each.$$p=function(){var element=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);if(first_time){min=max=element;first_time=false}else{var min_cmp=block.$call(min,element);if(min_cmp===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}else if(min_cmp>0){min=element}var max_cmp=block.$call(max,element);if(max_cmp===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"comparison failed")}else if(max_cmp<0){max=element}}};self.$each();return[min,max]},TMP_Enumerable_minmax_62.$$arity=0);Opal.defn(self,"$minmax_by",TMP_Enumerable_minmax_by_64=function $$minmax_by(){var self=this,$iter=TMP_Enumerable_minmax_by_64.$$p,block=$iter||nil;if($iter)TMP_Enumerable_minmax_by_64.$$p=null;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Enumerable_minmax_by_64.$$arity=0);Opal.defn(self,"$none?",TMP_Enumerable_none$q_65=function(){try{var TMP_66,TMP_67,self=this,$iter=TMP_Enumerable_none$q_65.$$p,block=$iter||nil;if($iter)TMP_Enumerable_none$q_65.$$p=null;if(block!==nil){$send(self,"each",[],(TMP_66=function($a_rest){var self=TMP_66.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){Opal.ret(false)}else{return nil}},TMP_66.$$s=self,TMP_66.$$arity=-1,TMP_66))}else{$send(self,"each",[],(TMP_67=function($a_rest){var self=TMP_67.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){Opal.ret(false)}else{return nil}},TMP_67.$$s=self,TMP_67.$$arity=-1,TMP_67))}return true}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_none$q_65.$$arity=0);Opal.defn(self,"$one?",TMP_Enumerable_one$q_68=function(){try{var TMP_69,TMP_70,self=this,$iter=TMP_Enumerable_one$q_68.$$p,block=$iter||nil,count=nil;if($iter)TMP_Enumerable_one$q_68.$$p=null;count=0;if(block!==nil){$send(self,"each",[],(TMP_69=function($a_rest){var self=TMP_69.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.yieldX(block,Opal.to_a(value)))){count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}}else{return nil}},TMP_69.$$s=self,TMP_69.$$arity=-1,TMP_69))}else{$send(self,"each",[],(TMP_70=function($a_rest){var self=TMP_70.$$s||this,value;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}value=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){value[$arg_idx-0]=arguments[$arg_idx]}if($truthy(Opal.const_get_relative($nesting,"Opal").$destructure(value))){count=$rb_plus(count,1);if($truthy($rb_gt(count,1))){Opal.ret(false)}else{return nil}}else{return nil}},TMP_70.$$s=self,TMP_70.$$arity=-1,TMP_70))}return count["$=="](1)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_one$q_68.$$arity=0);Opal.defn(self,"$partition",TMP_Enumerable_partition_71=function $$partition(){var TMP_72,self=this,$iter=TMP_Enumerable_partition_71.$$p,block=$iter||nil;if($iter)TMP_Enumerable_partition_71.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["partition"],(TMP_72=function(){var self=TMP_72.$$s||this;return self.$enumerator_size()},TMP_72.$$s=self,TMP_72.$$arity=0,TMP_72))}var truthy=[],falsy=[],result;self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)){truthy.push(param)}else{falsy.push(param)}};self.$each();return[truthy,falsy]},TMP_Enumerable_partition_71.$$arity=0);Opal.alias(self,"reduce","inject");Opal.defn(self,"$reject",TMP_Enumerable_reject_73=function $$reject(){var TMP_74,self=this,$iter=TMP_Enumerable_reject_73.$$p,block=$iter||nil;if($iter)TMP_Enumerable_reject_73.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reject"],(TMP_74=function(){var self=TMP_74.$$s||this;return self.$enumerator_size()},TMP_74.$$s=self,TMP_74.$$arity=0,TMP_74))}var result=[];self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($falsy(value)){result.push(param)}};self.$each();return result},TMP_Enumerable_reject_73.$$arity=0);Opal.defn(self,"$reverse_each",TMP_Enumerable_reverse_each_75=function $$reverse_each(){var TMP_76,self=this,$iter=TMP_Enumerable_reverse_each_75.$$p,block=$iter||nil;if($iter)TMP_Enumerable_reverse_each_75.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["reverse_each"],(TMP_76=function(){var self=TMP_76.$$s||this;return self.$enumerator_size()},TMP_76.$$s=self,TMP_76.$$arity=0,TMP_76))}var result=[];self.$each.$$p=function(){result.push(arguments)};self.$each();for(var i=result.length-1;i>=0;i--){Opal.yieldX(block,result[i])}return result},TMP_Enumerable_reverse_each_75.$$arity=0);Opal.alias(self,"select","find_all");Opal.defn(self,"$slice_before",TMP_Enumerable_slice_before_77=function $$slice_before(pattern){var TMP_78,self=this,$iter=TMP_Enumerable_slice_before_77.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_before_77.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_78=function(e){var self=TMP_78.$$s||this;if(e==null)e=nil;var slice=[];if(block!==nil){if(pattern===undefined){self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=Opal.yield1(block,param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=block(param,pattern.$dup());if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}}else{self.$each.$$p=function(){var param=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),value=pattern["$==="](param);if($truthy(value)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}self.$each();if(slice.length>0){e["$<<"](slice)}},TMP_78.$$s=self,TMP_78.$$arity=1,TMP_78))},TMP_Enumerable_slice_before_77.$$arity=-1);Opal.defn(self,"$slice_after",TMP_Enumerable_slice_after_79=function $$slice_after(pattern){var TMP_80,TMP_81,self=this,$iter=TMP_Enumerable_slice_after_79.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_after_79.$$p=null;if($truthy(pattern===undefined&&block===nil)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"both pattern and block are given")}if($truthy(pattern!==undefined&&block!==nil||arguments.length>1)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" expected 1)")}if($truthy(pattern!==undefined)){block=$send(self,"proc",[],(TMP_80=function(e){var self=TMP_80.$$s||this;if(e==null)e=nil;return pattern["$==="](e)},TMP_80.$$s=self,TMP_80.$$arity=1,TMP_80))}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_81=function(yielder){var self=TMP_81.$$s||this;if(yielder==null)yielder=nil;var accumulate;self.$each.$$p=function(){var element=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),end_chunk=Opal.yield1(block,element);if(accumulate==null){accumulate=[]}if($truthy(end_chunk)){accumulate.push(element);yielder.$yield(accumulate);accumulate=null}else{accumulate.push(element)}};self.$each();if(accumulate!=null){yielder.$yield(accumulate)}},TMP_81.$$s=self,TMP_81.$$arity=1,TMP_81))},TMP_Enumerable_slice_after_79.$$arity=-1);Opal.defn(self,"$slice_when",TMP_Enumerable_slice_when_82=function $$slice_when(){var TMP_83,self=this,$iter=TMP_Enumerable_slice_when_82.$$p,block=$iter||nil;if($iter)TMP_Enumerable_slice_when_82.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"wrong number of arguments (0 for 1)")}return $send(Opal.const_get_relative($nesting,"Enumerator"),"new",[],(TMP_83=function(yielder){var self=TMP_83.$$s||this;if(yielder==null)yielder=nil;var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=Opal.const_get_relative($nesting,"Opal").$destructure(arguments),before=params[0],after=params[1],match=Opal.yieldX(block,[before,after]);last_after=after;if(slice===nil){slice=[]}if($truthy(match)){slice.push(before);yielder.$yield(slice);slice=[]}else{slice.push(before)}};self.$each_cons(2);if(slice!==nil){slice.push(last_after);yielder.$yield(slice)}},TMP_83.$$s=self,TMP_83.$$arity=1,TMP_83))},TMP_Enumerable_slice_when_82.$$arity=0);Opal.defn(self,"$sort",TMP_Enumerable_sort_84=function $$sort(){var TMP_85,self=this,$iter=TMP_Enumerable_sort_84.$$p,block=$iter||nil,ary=nil;if($iter)TMP_Enumerable_sort_84.$$p=null;ary=self.$to_a();if(block!==nil){}else{block=$send(self,"lambda",[],(TMP_85=function(a,b){var self=TMP_85.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_85.$$s=self,TMP_85.$$arity=2,TMP_85))}return $send(ary,"sort",[],block.$to_proc())},TMP_Enumerable_sort_84.$$arity=0);Opal.defn(self,"$sort_by",TMP_Enumerable_sort_by_86=function $$sort_by(){var TMP_87,TMP_88,TMP_89,TMP_90,self=this,$iter=TMP_Enumerable_sort_by_86.$$p,block=$iter||nil,dup=nil;if($iter)TMP_Enumerable_sort_by_86.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["sort_by"],(TMP_87=function(){var self=TMP_87.$$s||this;return self.$enumerator_size()},TMP_87.$$s=self,TMP_87.$$arity=0,TMP_87))}dup=$send(self,"map",[],(TMP_88=function(){var self=TMP_88.$$s||this,arg=nil;arg=Opal.const_get_relative($nesting,"Opal").$destructure(arguments);return[Opal.yield1(block,arg),arg]},TMP_88.$$s=self,TMP_88.$$arity=0,TMP_88));$send(dup,"sort!",[],(TMP_89=function(a,b){var self=TMP_89.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a[0]["$<=>"](b[0])},TMP_89.$$s=self,TMP_89.$$arity=2,TMP_89));return $send(dup,"map!",[],(TMP_90=function(i){var self=TMP_90.$$s||this;if(i==null)i=nil;return i[1]},TMP_90.$$s=self,TMP_90.$$arity=1,TMP_90))},TMP_Enumerable_sort_by_86.$$arity=0);Opal.defn(self,"$sum",TMP_Enumerable_sum_91=function $$sum(initial){var TMP_92,self=this,$iter=TMP_Enumerable_sum_91.$$p,block=$iter||nil,result=nil;if(initial==null){initial=0}if($iter)TMP_Enumerable_sum_91.$$p=null;result=initial;$send(self,"each",[],(TMP_92=function($a_rest){var self=TMP_92.$$s||this,args,item=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if(block!==nil){item=$send(block,"call",Opal.to_a(args))}else{item=Opal.const_get_relative($nesting,"Opal").$destructure(args)}return result=$rb_plus(result,item)},TMP_92.$$s=self,TMP_92.$$arity=-1,TMP_92));return result},TMP_Enumerable_sum_91.$$arity=-1);Opal.defn(self,"$take",TMP_Enumerable_take_93=function $$take(num){var self=this;return self.$first(num)},TMP_Enumerable_take_93.$$arity=1);Opal.defn(self,"$take_while",TMP_Enumerable_take_while_94=function $$take_while(){try{var TMP_95,self=this,$iter=TMP_Enumerable_take_while_94.$$p,block=$iter||nil,result=nil;if($iter)TMP_Enumerable_take_while_94.$$p=null;if($truthy(block)){}else{return self.$enum_for("take_while")}result=[];return $send(self,"each",[],(TMP_95=function($a_rest){var self=TMP_95.$$s||this,args,value=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=Opal.const_get_relative($nesting,"Opal").$destructure(args);if($truthy(Opal.yield1(block,value))){}else{Opal.ret(result)}return result.push(value)},TMP_95.$$s=self,TMP_95.$$arity=-1,TMP_95))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Enumerable_take_while_94.$$arity=0);Opal.defn(self,"$uniq",TMP_Enumerable_uniq_96=function $$uniq(){var TMP_97,self=this,$iter=TMP_Enumerable_uniq_96.$$p,block=$iter||nil,hash=nil;if($iter)TMP_Enumerable_uniq_96.$$p=null;hash=$hash2([],{});$send(self,"each",[],(TMP_97=function($a_rest){var self=TMP_97.$$s||this,args,value=nil,produced=nil,$writer=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}value=Opal.const_get_relative($nesting,"Opal").$destructure(args);produced=function(){if(block!==nil){return block.$call(value)}else{return value}return nil}();if($truthy(hash["$has_key?"](produced))){return nil}else{$writer=[produced,value];$send(hash,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}},TMP_97.$$s=self,TMP_97.$$arity=-1,TMP_97));return hash.$values()},TMP_Enumerable_uniq_96.$$arity=0);Opal.alias(self,"to_a","entries");Opal.defn(self,"$zip",TMP_Enumerable_zip_98=function $$zip($a_rest){var self=this,others,$iter=TMP_Enumerable_zip_98.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}others=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){others[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Enumerable_zip_98.$$p=null;return $send(self.$to_a(),"zip",Opal.to_a(others))},TMP_Enumerable_zip_98.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["corelib/enumerator"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs")},TMP_Enumerator_inspect_7.$$arity=0);(function($base,$super,$parent_nesting){function $Generator(){}var self=$Generator=$klass($base,$super,"Generator",$Generator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Generator_initialize_8,TMP_Generator_each_9;def.block=nil;self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defn(self,"$initialize",TMP_Generator_initialize_8=function $$initialize(){var self=this,$iter=TMP_Generator_initialize_8.$$p,block=$iter||nil;if($iter)TMP_Generator_initialize_8.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"LocalJumpError"),"no block given")}return self.block=block},TMP_Generator_initialize_8.$$arity=0);return(Opal.defn(self,"$each",TMP_Generator_each_9=function $$each($a_rest){var self=this,args,$iter=TMP_Generator_each_9.$$p,block=$iter||nil,yielder=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Generator_each_9.$$p=null;yielder=$send(Opal.const_get_relative($nesting,"Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder);Opal.yieldX(self.block,args)}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}return self},TMP_Generator_each_9.$$arity=-1),nil)&&"each"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $Yielder(){}var self=$Yielder=$klass($base,$super,"Yielder",$Yielder);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Yielder_initialize_10,TMP_Yielder_yield_11,TMP_Yielder_$lt$lt_12;def.block=nil;Opal.defn(self,"$initialize",TMP_Yielder_initialize_10=function $$initialize(){var self=this,$iter=TMP_Yielder_initialize_10.$$p,block=$iter||nil;if($iter)TMP_Yielder_initialize_10.$$p=null;return self.block=block},TMP_Yielder_initialize_10.$$arity=0);Opal.defn(self,"$yield",TMP_Yielder_yield_11=function($a_rest){var self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}var value=Opal.yieldX(self.block,values);if(value===$breaker){throw $breaker}return value},TMP_Yielder_yield_11.$$arity=-1);return(Opal.defn(self,"$<<",TMP_Yielder_$lt$lt_12=function($a_rest){var self=this,values;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}values=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){values[$arg_idx-0]=arguments[$arg_idx]}$send(self,"yield",Opal.to_a(values));return self},TMP_Yielder_$lt$lt_12.$$arity=-1),nil)&&"<<"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $Lazy(){}var self=$Lazy=$klass($base,$super,"Lazy",$Lazy);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Lazy_initialize_13,TMP_Lazy_lazy_16,TMP_Lazy_collect_17,TMP_Lazy_collect_concat_19,TMP_Lazy_drop_24,TMP_Lazy_drop_while_25,TMP_Lazy_enum_for_27,TMP_Lazy_find_all_28,TMP_Lazy_grep_30,TMP_Lazy_reject_33,TMP_Lazy_take_36,TMP_Lazy_take_while_37,TMP_Lazy_inspect_39;def.enumerator=nil;(function($base,$super,$parent_nesting){function $StopLazyError(){}var self=$StopLazyError=$klass($base,$super,"StopLazyError",$StopLazyError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"Exception"),$nesting);Opal.defn(self,"$initialize",TMP_Lazy_initialize_13=function $$initialize(object,size){var TMP_14,self=this,$iter=TMP_Lazy_initialize_13.$$p,block=$iter||nil;if(size==null){size=nil}if($iter)TMP_Lazy_initialize_13.$$p=null;if(block!==nil){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy new without a block")}self.enumerator=object;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Lazy_initialize_13,false),[size],(TMP_14=function(yielder,$a_rest){var self=TMP_14.$$s||this,each_args,TMP_15;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}each_args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){each_args[$arg_idx-1]=arguments[$arg_idx]}if(yielder==null)yielder=nil;try{return $send(object,"each",Opal.to_a(each_args),(TMP_15=function($a_rest){var self=TMP_15.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args.unshift(yielder);Opal.yieldX(block,args)},TMP_15.$$s=self,TMP_15.$$arity=-1,TMP_15))}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_14.$$s=self,TMP_14.$$arity=-2,TMP_14))},TMP_Lazy_initialize_13.$$arity=-2);Opal.alias(self,"force","to_a");Opal.defn(self,"$lazy",TMP_Lazy_lazy_16=function $$lazy(){var self=this;return self},TMP_Lazy_lazy_16.$$arity=0);Opal.defn(self,"$collect",TMP_Lazy_collect_17=function $$collect(){var TMP_18,self=this,$iter=TMP_Lazy_collect_17.$$p,block=$iter||nil;if($iter)TMP_Lazy_collect_17.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,self.$enumerator_size()],(TMP_18=function(enum$,$a_rest){var self=TMP_18.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);enum$.$yield(value)},TMP_18.$$s=self,TMP_18.$$arity=-2,TMP_18))},TMP_Lazy_collect_17.$$arity=0);Opal.defn(self,"$collect_concat",TMP_Lazy_collect_concat_19=function $$collect_concat(){var TMP_20,self=this,$iter=TMP_Lazy_collect_concat_19.$$p,block=$iter||nil;if($iter)TMP_Lazy_collect_concat_19.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy map without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_20=function(enum$,$a_rest){var self=TMP_20.$$s||this,args,TMP_21,TMP_22;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each")){$send(value,"each",[],(TMP_21=function(v){var self=TMP_21.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}else{var array=Opal.const_get_relative($nesting,"Opal").$try_convert(value,Opal.const_get_relative($nesting,"Array"),"to_ary");if(array===nil){enum$.$yield(value)}else{$send(value,"each",[],(TMP_22=function(v){var self=TMP_22.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}}},TMP_20.$$s=self,TMP_20.$$arity=-2,TMP_20))},TMP_Lazy_collect_concat_19.$$arity=0);Opal.defn(self,"$drop",TMP_Lazy_drop_24=function $$drop(n){var TMP_23,self=this,current_size=nil,set_size=nil,dropped=nil;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to drop negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();dropped=0;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,set_size],(TMP_23=function(enum$,$a_rest){var self=TMP_23.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy($rb_lt(dropped,n))){return dropped=$rb_plus(dropped,1)}else{return $send(enum$,"yield",Opal.to_a(args))}},TMP_23.$$s=self,TMP_23.$$arity=-2,TMP_23))},TMP_Lazy_drop_24.$$arity=1);Opal.defn(self,"$drop_while",TMP_Lazy_drop_while_25=function $$drop_while(){var TMP_26,self=this,$iter=TMP_Lazy_drop_while_25.$$p,block=$iter||nil,succeeding=nil;if($iter)TMP_Lazy_drop_while_25.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy drop_while without a block")}succeeding=true;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_26=function(enum$,$a_rest){var self=TMP_26.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy(succeeding)){var value=Opal.yieldX(block,args);if($falsy(value)){succeeding=false;$send(enum$,"yield",Opal.to_a(args))}}else{return $send(enum$,"yield",Opal.to_a(args))}},TMP_26.$$s=self,TMP_26.$$arity=-2,TMP_26))},TMP_Lazy_drop_while_25.$$arity=0);Opal.defn(self,"$enum_for",TMP_Lazy_enum_for_27=function $$enum_for(method,$a_rest){var self=this,args,$iter=TMP_Lazy_enum_for_27.$$p,block=$iter||nil;if(method==null){method="each"}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Lazy_enum_for_27.$$p=null;return $send(self.$class(),"for",[self,method].concat(Opal.to_a(args)),block.$to_proc())},TMP_Lazy_enum_for_27.$$arity=-1);Opal.defn(self,"$find_all",TMP_Lazy_find_all_28=function $$find_all(){var TMP_29,self=this,$iter=TMP_Lazy_find_all_28.$$p,block=$iter||nil;if($iter)TMP_Lazy_find_all_28.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy select without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_29=function(enum$,$a_rest){var self=TMP_29.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}},TMP_29.$$s=self,TMP_29.$$arity=-2,TMP_29))},TMP_Lazy_find_all_28.$$arity=0);Opal.alias(self,"flat_map","collect_concat");Opal.defn(self,"$grep",TMP_Lazy_grep_30=function $$grep(pattern){var TMP_31,TMP_32,self=this,$iter=TMP_Lazy_grep_30.$$p,block=$iter||nil;if($iter)TMP_Lazy_grep_30.$$p=null;if($truthy(block)){return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_31=function(enum$,$a_rest){var self=TMP_31.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=Opal.const_get_relative($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){value=Opal.yield1(block,param);enum$.$yield(Opal.yield1(block,param))}},TMP_31.$$s=self,TMP_31.$$arity=-2,TMP_31))}else{return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_32=function(enum$,$a_rest){var self=TMP_32.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var param=Opal.const_get_relative($nesting,"Opal").$destructure(args),value=pattern["$==="](param);if($truthy(value)){enum$.$yield(param)}},TMP_32.$$s=self,TMP_32.$$arity=-2,TMP_32))}},TMP_Lazy_grep_30.$$arity=1);Opal.alias(self,"map","collect");Opal.alias(self,"select","find_all");Opal.defn(self,"$reject",TMP_Lazy_reject_33=function $$reject(){var TMP_34,self=this,$iter=TMP_Lazy_reject_33.$$p,block=$iter||nil;if($iter)TMP_Lazy_reject_33.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy reject without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_34=function(enum$,$a_rest){var self=TMP_34.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($falsy(value)){$send(enum$,"yield",Opal.to_a(args))}},TMP_34.$$s=self,TMP_34.$$arity=-2,TMP_34))},TMP_Lazy_reject_33.$$arity=0);Opal.defn(self,"$take",TMP_Lazy_take_36=function $$take(n){var TMP_35,self=this,current_size=nil,set_size=nil,taken=nil;n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(n,0))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"attempt to take negative size")}current_size=self.$enumerator_size();set_size=function(){if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](current_size))){if($truthy($rb_lt(n,current_size))){return n}else{return current_size}}else{return current_size}return nil}();taken=0;return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,set_size],(TMP_35=function(enum$,$a_rest){var self=TMP_35.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;if($truthy($rb_lt(taken,n))){$send(enum$,"yield",Opal.to_a(args));return taken=$rb_plus(taken,1)}else{return self.$raise(Opal.const_get_relative($nesting,"StopLazyError"))}},TMP_35.$$s=self,TMP_35.$$arity=-2,TMP_35))},TMP_Lazy_take_36.$$arity=1);Opal.defn(self,"$take_while",TMP_Lazy_take_while_37=function $$take_while(){var TMP_38,self=this,$iter=TMP_Lazy_take_while_37.$$p,block=$iter||nil;if($iter)TMP_Lazy_take_while_37.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"tried to call lazy take_while without a block")}return $send(Opal.const_get_relative($nesting,"Lazy"),"new",[self,nil],(TMP_38=function(enum$,$a_rest){var self=TMP_38.$$s||this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(enum$==null)enum$=nil;var value=Opal.yieldX(block,args);if($truthy(value)){$send(enum$,"yield",Opal.to_a(args))}else{self.$raise(Opal.const_get_relative($nesting,"StopLazyError"))}},TMP_38.$$s=self,TMP_38.$$arity=-2,TMP_38))},TMP_Lazy_take_while_37.$$arity=0);Opal.alias(self,"to_enum","enum_for");return(Opal.defn(self,"$inspect",TMP_Lazy_inspect_39=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.enumerator.$inspect()+">"},TMP_Lazy_inspect_39.$$arity=0),nil)&&"inspect"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["corelib/numeric"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$instance_of?","$class","$Float","$coerce","$===","$raise","$__send__","$equal?","$-","$*","$div","$<","$-@","$ceil","$to_f","$denominator","$to_r","$==","$floor","$/","$%","$Complex","$zero?","$numerator","$abs","$arg","$coerce_to!","$round","$to_i","$truncate","$>"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){function $Numeric(){}var self=$Numeric=$klass($base,$super,"Numeric",$Numeric);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Numeric_coerce_1,TMP_Numeric___coerced___2,TMP_Numeric_$lt$eq$gt_3,TMP_Numeric_$$_4,TMP_Numeric_$$_5,TMP_Numeric_$_6,TMP_Numeric_abs_7,TMP_Numeric_abs2_8,TMP_Numeric_angle_9,TMP_Numeric_ceil_10,TMP_Numeric_conj_11,TMP_Numeric_denominator_12,TMP_Numeric_div_13,TMP_Numeric_divmod_14,TMP_Numeric_fdiv_15,TMP_Numeric_floor_16,TMP_Numeric_i_17,TMP_Numeric_imag_18,TMP_Numeric_integer$q_19,TMP_Numeric_nonzero$q_20,TMP_Numeric_numerator_21,TMP_Numeric_polar_22,TMP_Numeric_quo_23,TMP_Numeric_real_24,TMP_Numeric_real$q_25,TMP_Numeric_rect_26,TMP_Numeric_round_27,TMP_Numeric_to_c_28,TMP_Numeric_to_int_29,TMP_Numeric_truncate_30,TMP_Numeric_zero$q_31,TMP_Numeric_positive$q_32,TMP_Numeric_negative$q_33,TMP_Numeric_dup_34,TMP_Numeric_clone_35;self.$include(Opal.const_get_relative($nesting,"Comparable"));Opal.defn(self,"$coerce",TMP_Numeric_coerce_1=function $$coerce(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){return[other,self]}return[self.$Float(other),self.$Float(self)]},TMP_Numeric_coerce_1.$$arity=1);Opal.defn(self,"$__coerced__",TMP_Numeric___coerced___2=function $$__coerced__(method,other){var $a,$b,self=this,a=nil,b=nil,$case=nil;try{$b=other.$coerce(self),$a=Opal.to_ary($b),a=$a[0]==null?nil:$a[0],b=$a[1]==null?nil:$a[1],$b}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"StandardError")])){try{$case=method;if("+"["$==="]($case)||"-"["$==="]($case)||"*"["$==="]($case)||"/"["$==="]($case)||"%"["$==="]($case)||"&"["$==="]($case)||"|"["$==="]($case)||"^"["$==="]($case)||"**"["$==="]($case)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerce into Numeric")}else if(">"["$==="]($case)||">="["$==="]($case)||"<"["$==="]($case)||"<="["$==="]($case)||"<=>"["$==="]($case)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+other.$class()+" failed")}}finally{Opal.pop_exception()}}else{throw $err}}return a.$__send__(method,b)},TMP_Numeric___coerced___2.$$arity=2);Opal.defn(self,"$<=>",TMP_Numeric_$lt$eq$gt_3=function(other){var self=this;if($truthy(self["$equal?"](other))){return 0}return nil},TMP_Numeric_$lt$eq$gt_3.$$arity=1);Opal.defn(self,"$+@",TMP_Numeric_$$_4=function(){var self=this;return self},TMP_Numeric_$$_4.$$arity=0);Opal.defn(self,"$-@",TMP_Numeric_$$_5=function(){var self=this;return $rb_minus(0,self)},TMP_Numeric_$$_5.$$arity=0);Opal.defn(self,"$%",TMP_Numeric_$_6=function(other){var self=this;return $rb_minus(self,$rb_times(other,self.$div(other)))},TMP_Numeric_$_6.$$arity=1);Opal.defn(self,"$abs",TMP_Numeric_abs_7=function $$abs(){var self=this;if($rb_lt(self,0)){return self["$-@"]()}else{return self}},TMP_Numeric_abs_7.$$arity=0);Opal.defn(self,"$abs2",TMP_Numeric_abs2_8=function $$abs2(){var self=this;return $rb_times(self,self)},TMP_Numeric_abs2_8.$$arity=0);Opal.defn(self,"$angle",TMP_Numeric_angle_9=function $$angle(){var self=this;if($rb_lt(self,0)){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")}else{return 0}},TMP_Numeric_angle_9.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$ceil",TMP_Numeric_ceil_10=function $$ceil(){var self=this;return self.$to_f().$ceil()},TMP_Numeric_ceil_10.$$arity=0);Opal.defn(self,"$conj",TMP_Numeric_conj_11=function $$conj(){var self=this;return self},TMP_Numeric_conj_11.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_Numeric_denominator_12=function $$denominator(){var self=this;return self.$to_r().$denominator()},TMP_Numeric_denominator_12.$$arity=0);Opal.defn(self,"$div",TMP_Numeric_div_13=function $$div(other){var self=this;if(other["$=="](0)){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by o")}return $rb_divide(self,other).$floor()},TMP_Numeric_div_13.$$arity=1);Opal.defn(self,"$divmod",TMP_Numeric_divmod_14=function $$divmod(other){var self=this;return[self.$div(other),self["$%"](other)]},TMP_Numeric_divmod_14.$$arity=1);Opal.defn(self,"$fdiv",TMP_Numeric_fdiv_15=function $$fdiv(other){var self=this;return $rb_divide(self.$to_f(),other)},TMP_Numeric_fdiv_15.$$arity=1);Opal.defn(self,"$floor",TMP_Numeric_floor_16=function $$floor(){var self=this;return self.$to_f().$floor()},TMP_Numeric_floor_16.$$arity=0);Opal.defn(self,"$i",TMP_Numeric_i_17=function $$i(){var self=this;return self.$Complex(0,self)},TMP_Numeric_i_17.$$arity=0);Opal.defn(self,"$imag",TMP_Numeric_imag_18=function $$imag(){var self=this;return 0},TMP_Numeric_imag_18.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$integer?",TMP_Numeric_integer$q_19=function(){var self=this;return false},TMP_Numeric_integer$q_19.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$nonzero?",TMP_Numeric_nonzero$q_20=function(){var self=this;if($truthy(self["$zero?"]())){return nil}else{return self}},TMP_Numeric_nonzero$q_20.$$arity=0);Opal.defn(self,"$numerator",TMP_Numeric_numerator_21=function $$numerator(){var self=this;return self.$to_r().$numerator()},TMP_Numeric_numerator_21.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_Numeric_polar_22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_Numeric_polar_22.$$arity=0);Opal.defn(self,"$quo",TMP_Numeric_quo_23=function $$quo(other){var self=this;return $rb_divide(Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](self,Opal.const_get_relative($nesting,"Rational"),"to_r"),other)},TMP_Numeric_quo_23.$$arity=1);Opal.defn(self,"$real",TMP_Numeric_real_24=function $$real(){var self=this;return self},TMP_Numeric_real_24.$$arity=0);Opal.defn(self,"$real?",TMP_Numeric_real$q_25=function(){var self=this;return true},TMP_Numeric_real$q_25.$$arity=0);Opal.defn(self,"$rect",TMP_Numeric_rect_26=function $$rect(){var self=this;return[self,0]},TMP_Numeric_rect_26.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$round",TMP_Numeric_round_27=function $$round(digits){var self=this;return self.$to_f().$round(digits)},TMP_Numeric_round_27.$$arity=-1);Opal.defn(self,"$to_c",TMP_Numeric_to_c_28=function $$to_c(){var self=this;return self.$Complex(self,0)},TMP_Numeric_to_c_28.$$arity=0);Opal.defn(self,"$to_int",TMP_Numeric_to_int_29=function $$to_int(){var self=this;return self.$to_i()},TMP_Numeric_to_int_29.$$arity=0);Opal.defn(self,"$truncate",TMP_Numeric_truncate_30=function $$truncate(){var self=this;return self.$to_f().$truncate()},TMP_Numeric_truncate_30.$$arity=0);Opal.defn(self,"$zero?",TMP_Numeric_zero$q_31=function(){var self=this;return self["$=="](0)},TMP_Numeric_zero$q_31.$$arity=0);Opal.defn(self,"$positive?",TMP_Numeric_positive$q_32=function(){var self=this;return $rb_gt(self,0)},TMP_Numeric_positive$q_32.$$arity=0);Opal.defn(self,"$negative?",TMP_Numeric_negative$q_33=function(){var self=this;return $rb_lt(self,0)},TMP_Numeric_negative$q_33.$$arity=0);Opal.defn(self,"$dup",TMP_Numeric_dup_34=function $$dup(){var self=this;return self},TMP_Numeric_dup_34.$$arity=0);return(Opal.defn(self,"$clone",TMP_Numeric_clone_35=function $$clone($kwargs){var self=this,freeze;if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}freeze=$kwargs.$$smap["freeze"];if(freeze==null){freeze=true}return self},TMP_Numeric_clone_35.$$arity=-1),nil)&&"clone"}($nesting[0],null,$nesting)};Opal.modules["corelib/array"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$==","$object_id","$inspect","$enum_for","$bsearch_index","$to_proc","$coerce_to!","$>","$*","$enumerator_size","$empty?","$size","$map","$equal?","$dup","$each","$[]","$dig","$eql?","$length","$begin","$end","$exclude_end?","$flatten","$__id__","$to_s","$new","$!","$>=","$**","$delete_if","$reverse","$rotate","$rand","$at","$keep_if","$shuffle!","$<","$sort","$sort_by","$!=","$times","$[]=","$-","$<<","$values","$kind_of?","$last","$first","$upto","$reject","$pristine"]);self.$require("corelib/enumerable");self.$require("corelib/numeric");return function($base,$super,$parent_nesting){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Array_$$_1,TMP_Array_initialize_2,TMP_Array_try_convert_3,TMP_Array_$_4,TMP_Array_$_5,TMP_Array_$_6,TMP_Array_$_7,TMP_Array_$_8,TMP_Array_$lt$lt_9,TMP_Array_$lt$eq$gt_10,TMP_Array_$eq$eq_11,TMP_Array_$$_12,TMP_Array_$$$eq_13,TMP_Array_any$q_14,TMP_Array_assoc_15,TMP_Array_at_16,TMP_Array_bsearch_index_17,TMP_Array_bsearch_18,TMP_Array_cycle_19,TMP_Array_clear_21,TMP_Array_count_22,TMP_Array_initialize_copy_23,TMP_Array_collect_24,TMP_Array_collect$B_26,TMP_Array_combination_28,TMP_Array_repeated_combination_30,TMP_Array_compact_32,TMP_Array_compact$B_33,TMP_Array_concat_36,TMP_Array_delete_37,TMP_Array_delete_at_38,TMP_Array_delete_if_39,TMP_Array_dig_41,TMP_Array_drop_42,TMP_Array_dup_43,TMP_Array_each_44,TMP_Array_each_index_46,TMP_Array_empty$q_48,TMP_Array_eql$q_49,TMP_Array_fetch_50,TMP_Array_fill_51,TMP_Array_first_52,TMP_Array_flatten_53,TMP_Array_flatten$B_54,TMP_Array_hash_55,TMP_Array_include$q_56,TMP_Array_index_57,TMP_Array_insert_58,TMP_Array_inspect_59,TMP_Array_join_60,TMP_Array_keep_if_61,TMP_Array_last_63,TMP_Array_length_64,TMP_Array_permutation_65,TMP_Array_repeated_permutation_67,TMP_Array_pop_69,TMP_Array_product_70,TMP_Array_push_71,TMP_Array_rassoc_72,TMP_Array_reject_73,TMP_Array_reject$B_75,TMP_Array_replace_77,TMP_Array_reverse_78,TMP_Array_reverse$B_79,TMP_Array_reverse_each_80,TMP_Array_rindex_82,TMP_Array_rotate_83,TMP_Array_rotate$B_84,TMP_Array_sample_87,TMP_Array_select_88,TMP_Array_select$B_90,TMP_Array_shift_92,TMP_Array_shuffle_93,TMP_Array_shuffle$B_94,TMP_Array_slice$B_95,TMP_Array_sort_96,TMP_Array_sort$B_97,TMP_Array_sort_by$B_98,TMP_Array_take_100,TMP_Array_take_while_101,TMP_Array_to_a_102,TMP_Array_to_h_103,TMP_Array_transpose_106,TMP_Array_uniq_107,TMP_Array_uniq$B_108,TMP_Array_unshift_109,TMP_Array_values_at_112,TMP_Array_zip_113,TMP_Array_inherited_114,TMP_Array_instance_variables_115;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_array=true;function toArraySubclass(obj,klass){if(klass.$$name===Opal.Array){return obj}else{return klass.$allocate().$replace(obj.$to_a())}}Opal.defs(self,"$[]",TMP_Array_$$_1=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return toArraySubclass(objects,self)},TMP_Array_$$_1.$$arity=-1);Opal.defn(self,"$initialize",TMP_Array_initialize_2=function $$initialize(size,obj){var self=this,$iter=TMP_Array_initialize_2.$$p,block=$iter||nil;if(size==null){size=nil}if(obj==null){obj=nil}if($iter)TMP_Array_initialize_2.$$p=null;if(obj!==nil&&block!==nil){self.$warn("warning: block supersedes default value argument")}if(size>Opal.const_get_qualified(Opal.const_get_relative($nesting,"Integer"),"MAX")){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"array size too big")}if(arguments.length>2){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..2)")}if(arguments.length===0){self.splice(0,self.length);return self}if(arguments.length===1){if(size.$$is_array){self.$replace(size.$to_a());return self}else if(size["$respond_to?"]("to_ary")){self.$replace(size.$to_ary());return self}}size=Opal.const_get_relative($nesting,"Opal").$coerce_to(size,Opal.const_get_relative($nesting,"Integer"),"to_int");if(size<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"negative array size")}self.splice(0,self.length);var i,value;if(block===nil){for(i=0;i",TMP_Array_$lt$eq$gt_10=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](other))){other=other.$to_a()}else if($truthy(other["$respond_to?"]("to_ary"))){other=other.$to_ary().$to_a()}else{return nil}if(self.$hash()===other.$hash()){return 0}var count=Math.min(self.length,other.length);for(var i=0;i"](other[i]);if(tmp!==0){return tmp}}return self.length["$<=>"](other.length)},TMP_Array_$lt$eq$gt_10.$$arity=1);Opal.defn(self,"$==",TMP_Array_$eq$eq_11=function(other){var self=this;var recursed={};function _eqeq(array,other){var i,length,a,b;if(array===other)return true;if(!other.$$is_array){if(Opal.const_get_relative($nesting,"Opal")["$respond_to?"](other,"to_ary")){return other["$=="](array)}else{return false}}if(array.constructor!==Array)array=array.$to_a();if(other.constructor!==Array)other=other.$to_a();if(array.length!==other.length){return false}recursed[array.$object_id()]=true;for(i=0,length=array.length;isize){return nil}if(to<0){to+=size;if(to<0){return[]}}if(!exclude){to+=1}result=self.slice(from,to);return toArraySubclass(result,self.$class())}function $array_slice_index_length(self,index,length){var size=self.length,exclude,from,to,result;index=Opal.Opal.$coerce_to(index,Opal.Integer,"to_int");if(index<0){index+=size;if(index<0){return nil}}if(length===undefined){if(index>=size||index<0){return nil}return self[index]}else{length=Opal.Opal.$coerce_to(length,Opal.Integer,"to_int");if(length<0||index>size||index<0){return nil}result=self.slice(index,index+length)}return toArraySubclass(result,self.$class())}Opal.defn(self,"$[]",TMP_Array_$$_12=function(index,length){var self=this;if(index.$$is_range){return $array_slice_range(self,index)}else{return $array_slice_index_length(self,index,length)}},TMP_Array_$$_12.$$arity=-2);Opal.defn(self,"$[]=",TMP_Array_$$$eq_13=function(index,value,extra){var self=this,data=nil,length=nil;var i,size=self.length;if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](index))){if($truthy(Opal.const_get_relative($nesting,"Array")["$==="](value))){data=value.$to_a()}else if($truthy(value["$respond_to?"]("to_ary"))){data=value.$to_ary().$to_a()}else{data=[value]}var exclude=index.excl,from=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.begin,Opal.const_get_relative($nesting,"Integer"),"to_int"),to=Opal.const_get_relative($nesting,"Opal").$coerce_to(index.end,Opal.const_get_relative($nesting,"Integer"),"to_int");if(from<0){from+=size;if(from<0){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+index.$inspect()+" out of range")}}if(to<0){to+=size}if(!exclude){to+=1}if(from>size){for(i=size;isize){for(i=size;i=self.length){return nil}return self[index]},TMP_Array_at_16.$$arity=1);Opal.defn(self,"$bsearch_index",TMP_Array_bsearch_index_17=function $$bsearch_index(){var self=this,$iter=TMP_Array_bsearch_index_17.$$p,block=$iter||nil;if($iter)TMP_Array_bsearch_index_17.$$p=null;if(block!==nil){}else{return self.$enum_for("bsearch_index")}var min=0,max=self.length,mid,val,ret,smaller=false,satisfied=nil;while(min0){for(i=0,length=self.length;i0&&n>k){return binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k)}return 0}Opal.defn(self,"$combination",TMP_Array_combination_28=function $$combination(n){var TMP_29,self=this,$iter=TMP_Array_combination_28.$$p,$yield=$iter||nil,num=nil;if($iter)TMP_Array_combination_28.$$p=null;num=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int");if($yield!==nil){}else{return $send(self,"enum_for",["combination",num],(TMP_29=function(){var self=TMP_29.$$s||this;return binomial_coefficient(self.length,num)},TMP_29.$$s=self,TMP_29.$$arity=0,TMP_29))}var i,length,stack,chosen,lev,done,next;if(num===0){Opal.yield1($yield,[])}else if(num===1){for(i=0,length=self.length;i=0&&num=0){iterate(num,0,[],self)}return self},TMP_Array_repeated_combination_30.$$arity=1);Opal.defn(self,"$compact",TMP_Array_compact_32=function $$compact(){var self=this;var result=[];for(var i=0,length=self.length,item;i=self.length){return nil}var result=self[index];self.splice(index,1);return result},TMP_Array_delete_at_38.$$arity=1);Opal.defn(self,"$delete_if",TMP_Array_delete_if_39=function $$delete_if(){var TMP_40,self=this,$iter=TMP_Array_delete_if_39.$$p,block=$iter||nil;if($iter)TMP_Array_delete_if_39.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["delete_if"],(TMP_40=function(){var self=TMP_40.$$s||this;return self.$size()},TMP_40.$$s=self,TMP_40.$$arity=0,TMP_40))}for(var i=0,length=self.length,value;i=0&&index2)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 0..2)")}$c=args,$b=Opal.to_ary($c),one=$b[0]==null?nil:$b[0],two=$b[1]==null?nil:$b[1],$c}else{if($truthy(args.length==0)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"wrong number of arguments (0 for 1..3)")}else if($truthy(args.length>3)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+args.$length()+" for 1..3)")}$c=args,$b=Opal.to_ary($c),obj=$b[0]==null?nil:$b[0],one=$b[1]==null?nil:$b[1],two=$b[2]==null?nil:$b[2],$c}if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](one))){if($truthy(two)){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"length invalid with range")}left=Opal.const_get_relative($nesting,"Opal").$coerce_to(one.$begin(),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+one.$inspect()+" out of range")}right=Opal.const_get_relative($nesting,"Opal").$coerce_to(one.$end(),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(right<0)){right+=this.length}if($truthy(one["$exclude_end?"]())){}else{right+=1}if($truthy(right<=left)){return self}}else if($truthy(one)){left=Opal.const_get_relative($nesting,"Opal").$coerce_to(one,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(left<0)){left+=this.length}if($truthy(left<0)){left=0}if($truthy(two)){right=Opal.const_get_relative($nesting,"Opal").$coerce_to(two,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(right==0)){return self}right+=left}else{right=this.length}}else{left=0;right=this.length}if($truthy(left>this.length)){for(i=this.length;ithis.length)){this.length=right}if($truthy(block)){for(length=this.length;left0){if(index<0){index+=self.length+1;if(index<0){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+index+" is out of bounds")}}if(index>self.length){for(var i=self.length;iself.length){count=self.length}return self.slice(self.length-count,self.length)},TMP_Array_last_63.$$arity=-1);Opal.defn(self,"$length",TMP_Array_length_64=function $$length(){var self=this;return self.length},TMP_Array_length_64.$$arity=0);Opal.alias(self,"map","collect");Opal.alias(self,"map!","collect!");function descending_factorial(from,how_many){var count=how_many>=0?1:0;while(how_many){count*=from;from--;how_many--}return count}Opal.defn(self,"$permutation",TMP_Array_permutation_65=function $$permutation(num){var TMP_66,self=this,$iter=TMP_Array_permutation_65.$$p,block=$iter||nil,perm=nil,used=nil;if($iter)TMP_Array_permutation_65.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["permutation",num],(TMP_66=function(){var self=TMP_66.$$s||this;return descending_factorial(self.length,num===undefined?self.length:num)},TMP_66.$$s=self,TMP_66.$$arity=0,TMP_66))}var permute,offensive,output;if(num===undefined){num=self.length}else{num=Opal.const_get_relative($nesting,"Opal").$coerce_to(num,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(num<0||self.lengthself.length)){return self.splice(0,self.length)}else{return self.splice(self.length-count,self.length)}},TMP_Array_pop_69.$$arity=-1);Opal.defn(self,"$product",TMP_Array_product_70=function $$product($a_rest){var self=this,args,$iter=TMP_Array_product_70.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Array_product_70.$$p=null;var result=block!==nil?null:[],n=args.length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),i,m,subarray,len,resultlen=1;arrays[0]=self;for(i=1;i2147483647){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"too big to product")}lengths[i]=len;counters[i]=0}outer_loop:for(;;){subarray=[];for(i=0;i=0;i--){if(i>=self.length){break}if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(i=self.length-1;i>=0;i--){if(i>=self.length){break}value=block(self[i]);if(value!==false&&value!==nil){return i}}}else if(object==null){return self.$enum_for("rindex")}return nil},TMP_Array_rindex_82.$$arity=-1);Opal.defn(self,"$rotate",TMP_Array_rotate_83=function $$rotate(n){var self=this;if(n==null){n=1}n=Opal.const_get_relative($nesting,"Opal").$coerce_to(n,Opal.const_get_relative($nesting,"Integer"),"to_int");var ary,idx,firstPart,lastPart;if(self.length===1){return self.slice()}if(self.length===0){return[]}ary=self.slice();idx=n%ary.length;firstPart=ary.slice(idx);lastPart=ary.slice(0,idx);return firstPart.concat(lastPart)},TMP_Array_rotate_83.$$arity=-1);Opal.defn(self,"$rotate!",TMP_Array_rotate$B_84=function(cnt){var self=this,ary=nil;if(cnt==null){cnt=1}if(self.length===0||self.length===1){return self}cnt=Opal.const_get_relative($nesting,"Opal").$coerce_to(cnt,Opal.const_get_relative($nesting,"Integer"),"to_int");ary=self.$rotate(cnt);return self.$replace(ary)},TMP_Array_rotate$B_84.$$arity=-1);(function($base,$super,$parent_nesting){function $SampleRandom(){}var self=$SampleRandom=$klass($base,$super,"SampleRandom",$SampleRandom);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SampleRandom_initialize_85,TMP_SampleRandom_rand_86;def.rng=nil;Opal.defn(self,"$initialize",TMP_SampleRandom_initialize_85=function $$initialize(rng){var self=this;return self.rng=rng},TMP_SampleRandom_initialize_85.$$arity=1);return(Opal.defn(self,"$rand",TMP_SampleRandom_rand_86=function $$rand(size){var self=this,random=nil;random=Opal.const_get_relative($nesting,"Opal").$coerce_to(self.rng.$rand(size),Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy(random<0)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"random value must be >= 0")}if($truthy(randomself.length){count=self.length}switch(count){case 0:return[];break;case 1:return[self[rng.$rand(self.length)]];break;case 2:i=rng.$rand(self.length);j=rng.$rand(self.length);if(i===j){j=i===0?i+1:i-1}return[self[i],self[j]];break;default:if(self.length/count>3){abandon=false;spin=0;result=Opal.const_get_relative($nesting,"Array").$new(count);i=1;result[0]=rng.$rand(self.length);while(i100){abandon=true;break}k=rng.$rand(self.length)}if(abandon){break}j++}if(abandon){break}result[i]=k;i++}if(!abandon){i=0;while(i=i){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"random number too big "+j)}}else{j=self.$rand(i)}tmp=self[--i];self[i]=self[j];self[j]=tmp}return self},TMP_Array_shuffle$B_94.$$arity=-1);Opal.alias(self,"slice","[]");Opal.defn(self,"$slice!",TMP_Array_slice$B_95=function(index,length){var self=this,result=nil,range=nil,range_start=nil,range_end=nil,start=nil;result=nil;if($truthy(length===undefined)){if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](index))){range=index;result=self["$[]"](range);range_start=Opal.const_get_relative($nesting,"Opal").$coerce_to(range.$begin(),Opal.const_get_relative($nesting,"Integer"),"to_int");range_end=Opal.const_get_relative($nesting,"Opal").$coerce_to(range.$end(),Opal.const_get_relative($nesting,"Integer"),"to_int");if(range_start<0){range_start+=self.length}if(range_end<0){range_end+=self.length}else if(range_end>=self.length){range_end=self.length-1;if(range.excl){range_end+=1}}var range_length=range_end-range_start;if(range.excl){range_end-=1}else{range_length+=1}if(range_start=0&&range_end=0&&range_length>0){self.splice(range_start,range_length)}}else{start=Opal.const_get_relative($nesting,"Opal").$coerce_to(index,Opal.const_get_relative($nesting,"Integer"),"to_int");if(start<0){start+=self.length}if(start<0||start>=self.length){return nil}result=self[start];if(start===0){self.shift()}else{self.splice(start,1)}}}else{start=Opal.const_get_relative($nesting,"Opal").$coerce_to(index,Opal.const_get_relative($nesting,"Integer"),"to_int");length=Opal.const_get_relative($nesting,"Opal").$coerce_to(length,Opal.const_get_relative($nesting,"Integer"),"to_int");if(length<0){return nil}var end=start+length;result=self["$[]"](start,length);if(start<0){start+=self.length}if(start+length>self.length){length=self.length-start}if(start=0){self.splice(start,length)}}return result},TMP_Array_slice$B_95.$$arity=-2);Opal.defn(self,"$sort",TMP_Array_sort_96=function $$sort(){var self=this,$iter=TMP_Array_sort_96.$$p,block=$iter||nil;if($iter)TMP_Array_sort_96.$$p=null;if($truthy(self.length>1)){}else{return self}if(block===nil){block=function(a,b){return a["$<=>"](b)}}return self.slice().sort(function(x,y){var ret=block(x,y);if(ret===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed")}return $rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0})},TMP_Array_sort_96.$$arity=0);Opal.defn(self,"$sort!",TMP_Array_sort$B_97=function(){var self=this,$iter=TMP_Array_sort$B_97.$$p,block=$iter||nil;if($iter)TMP_Array_sort$B_97.$$p=null;var result;if(block!==nil){result=$send(self.slice(),"sort",[],block.$to_proc())}else{result=self.slice().$sort()}self.length=0;for(var i=0,length=result.length;i=0;i--){self.unshift(objects[i])}return self},TMP_Array_unshift_109.$$arity=-1);Opal.defn(self,"$values_at",TMP_Array_values_at_112=function $$values_at($a_rest){var TMP_110,self=this,args,out=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}out=[];$send(args,"each",[],(TMP_110=function(elem){var self=TMP_110.$$s||this,TMP_111,finish=nil,start=nil,i=nil;if(elem==null)elem=nil;if($truthy(elem["$kind_of?"](Opal.const_get_relative($nesting,"Range")))){finish=Opal.const_get_relative($nesting,"Opal").$coerce_to(elem.$last(),Opal.const_get_relative($nesting,"Integer"),"to_int");start=Opal.const_get_relative($nesting,"Opal").$coerce_to(elem.$first(),Opal.const_get_relative($nesting,"Integer"),"to_int");if(start<0){start=start+self.length;return nil}if(finish<0){finish=finish+self.length}if(elem["$exclude_end?"]()){finish--}if(finish=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include","$coerce_to?","$[]","$merge!","$allocate","$raise","$coerce_to!","$each","$fetch","$>=","$>","$==","$compare_by_identity","$lambda?","$abs","$arity","$call","$enum_for","$size","$respond_to?","$class","$dig","$inspect","$map","$to_proc","$flatten","$eql?","$default","$dup","$default_proc","$default_proc=","$-","$default=","$alias_method","$proc"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Hash(){}var self=$Hash=$klass($base,$super,"Hash",$Hash);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Hash_$$_1,TMP_Hash_allocate_2,TMP_Hash_try_convert_3,TMP_Hash_initialize_4,TMP_Hash_$eq$eq_5,TMP_Hash_$gt$eq_7,TMP_Hash_$gt_8,TMP_Hash_$lt_9,TMP_Hash_$lt$eq_10,TMP_Hash_$$_11,TMP_Hash_$$$eq_12,TMP_Hash_assoc_13,TMP_Hash_clear_14,TMP_Hash_clone_15,TMP_Hash_compact_16,TMP_Hash_compact$B_17,TMP_Hash_compare_by_identity_18,TMP_Hash_compare_by_identity$q_19,TMP_Hash_default_20,TMP_Hash_default$eq_21,TMP_Hash_default_proc_22,TMP_Hash_default_proc$eq_23,TMP_Hash_delete_24,TMP_Hash_delete_if_25,TMP_Hash_dig_27,TMP_Hash_each_28,TMP_Hash_each_key_30,TMP_Hash_each_value_32,TMP_Hash_empty$q_34,TMP_Hash_fetch_35,TMP_Hash_fetch_values_36,TMP_Hash_flatten_38,TMP_Hash_has_key$q_39,TMP_Hash_has_value$q_40,TMP_Hash_hash_41,TMP_Hash_index_42,TMP_Hash_indexes_43,TMP_Hash_inspect_44,TMP_Hash_invert_45,TMP_Hash_keep_if_46,TMP_Hash_keys_48,TMP_Hash_length_49,TMP_Hash_merge_50,TMP_Hash_merge$B_51,TMP_Hash_rassoc_52,TMP_Hash_rehash_53,TMP_Hash_reject_54,TMP_Hash_reject$B_56,TMP_Hash_replace_58,TMP_Hash_select_59,TMP_Hash_select$B_61,TMP_Hash_shift_63,TMP_Hash_to_a_64,TMP_Hash_to_h_65,TMP_Hash_to_hash_66,TMP_Hash_to_proc_68,TMP_Hash_transform_values_69,TMP_Hash_transform_values$B_71,TMP_Hash_values_73;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_hash=true;Opal.defs(self,"$[]",TMP_Hash_$$_1=function($a_rest){var self=this,argv;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}argv=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){argv[$arg_idx-0]=arguments[$arg_idx]}var hash,argc=argv.length,i;if(argc===1){hash=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),Opal.const_get_relative($nesting,"Hash"),"to_hash");if(hash!==nil){return self.$allocate()["$merge!"](hash)}argv=Opal.const_get_relative($nesting,"Opal")["$coerce_to?"](argv["$[]"](0),Opal.const_get_relative($nesting,"Array"),"to_ary");if(argv===nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"odd number of arguments for Hash")}argc=argv.length;hash=self.$allocate();for(i=0;i=",TMP_Hash_$gt$eq_7=function(other){var TMP_6,self=this,result=nil;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");if(self.$$keys.length",TMP_Hash_$gt_8=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");if(self.$$keys.length<=other.$$keys.length){return false}return $rb_ge(self,other)},TMP_Hash_$gt_8.$$arity=1);Opal.defn(self,"$<",TMP_Hash_$lt_9=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");return $rb_gt(other,self)},TMP_Hash_$lt_9.$$arity=1);Opal.defn(self,"$<=",TMP_Hash_$lt$eq_10=function(other){var self=this;other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Hash"),"to_hash");return $rb_ge(other,self)},TMP_Hash_$lt$eq_10.$$arity=1);Opal.defn(self,"$[]",TMP_Hash_$$_11=function(key){var self=this;var value=Opal.hash_get(self,key);if(value!==undefined){return value}return self.$default(key)},TMP_Hash_$$_11.$$arity=1);Opal.defn(self,"$[]=",TMP_Hash_$$$eq_12=function(key,value){var self=this;Opal.hash_put(self,key,value);return value},TMP_Hash_$$$eq_12.$$arity=2);Opal.defn(self,"$assoc",TMP_Hash_assoc_13=function $$assoc(object){var self=this;for(var i=0,keys=self.$$keys,length=keys.length,key;i"+value.$inspect())}return"{"+result.join(", ")+"}"}finally{if(top){inspect_ids=undefined}}},TMP_Hash_inspect_44.$$arity=0);Opal.defn(self,"$invert",TMP_Hash_invert_45=function $$invert(){var self=this;var hash=Opal.hash();for(var i=0,keys=self.$$keys,length=keys.length,key,value;i0){key=keys[0];key=key.$$is_string?key:key.key;return[key,Opal.hash_delete(self,key)]}return self.$default(nil)},TMP_Hash_shift_63.$$arity=0);Opal.alias(self,"size","length");self.$alias_method("store","[]=");Opal.defn(self,"$to_a",TMP_Hash_to_a_64=function $$to_a(){var self=this;var result=[];for(var i=0,keys=self.$$keys,length=keys.length,key,value;irhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$bridge","$raise","$name","$class","$Float","$respond_to?","$coerce_to!","$__coerced__","$===","$!","$>","$**","$new","$<","$to_f","$==","$nan?","$infinite?","$enum_for","$+","$-","$gcd","$lcm","$/","$frexp","$to_i","$ldexp","$rationalize","$*","$<<","$to_r","$-@","$size","$<=","$>=","$<=>","$compare","$empty?"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Number(){}var self=$Number=$klass($base,$super,"Number",$Number);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Number_coerce_2,TMP_Number___id___3,TMP_Number_$_4,TMP_Number_$_5,TMP_Number_$_6,TMP_Number_$_7,TMP_Number_$_8,TMP_Number_$_9,TMP_Number_$_10,TMP_Number_$_11,TMP_Number_$lt_12,TMP_Number_$lt$eq_13,TMP_Number_$gt_14,TMP_Number_$gt$eq_15,TMP_Number_$lt$eq$gt_16,TMP_Number_$lt$lt_17,TMP_Number_$gt$gt_18,TMP_Number_$$_19,TMP_Number_$$_20,TMP_Number_$$_21,TMP_Number_$_22,TMP_Number_$$_23,TMP_Number_$eq$eq$eq_24,TMP_Number_$eq$eq_25,TMP_Number_abs_26,TMP_Number_abs2_27,TMP_Number_angle_28,TMP_Number_bit_length_29,TMP_Number_ceil_30,TMP_Number_chr_31,TMP_Number_denominator_32,TMP_Number_downto_33,TMP_Number_equal$q_35,TMP_Number_even$q_36,TMP_Number_floor_37,TMP_Number_gcd_38,TMP_Number_gcdlcm_39,TMP_Number_integer$q_40,TMP_Number_is_a$q_41,TMP_Number_instance_of$q_42,TMP_Number_lcm_43,TMP_Number_next_44,TMP_Number_nonzero$q_45,TMP_Number_numerator_46,TMP_Number_odd$q_47,TMP_Number_ord_48,TMP_Number_pred_49,TMP_Number_quo_50,TMP_Number_rationalize_51,TMP_Number_round_52,TMP_Number_step_53,TMP_Number_times_55,TMP_Number_to_f_57,TMP_Number_to_i_58,TMP_Number_to_r_59,TMP_Number_to_s_60,TMP_Number_divmod_61,TMP_Number_upto_62,TMP_Number_zero$q_64,TMP_Number_size_65,TMP_Number_nan$q_66,TMP_Number_finite$q_67,TMP_Number_infinite$q_68,TMP_Number_positive$q_69,TMP_Number_negative$q_70;Opal.const_get_relative($nesting,"Opal").$bridge(self,Number);Number.prototype.$$is_number=true;self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_1;Opal.defn(self,"$allocate",TMP_allocate_1=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_1.$$arity=0);Opal.udef(self,"$"+"new");return nil})(Opal.get_singleton_class(self),$nesting);Opal.defn(self,"$coerce",TMP_Number_coerce_2=function $$coerce(other){var self=this;if(other===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}else if(other.$$is_string){return[self.$Float(other),self]}else if(other["$respond_to?"]("to_f")){return[Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Float"),"to_f"),self]}else if(other.$$is_number){return[other,self]}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't convert "+other.$class()+" into Float")}},TMP_Number_coerce_2.$$arity=1);Opal.defn(self,"$__id__",TMP_Number___id___3=function $$__id__(){var self=this;return self*2+1},TMP_Number___id___3.$$arity=0);Opal.alias(self,"object_id","__id__");Opal.defn(self,"$+",TMP_Number_$_4=function(other){var self=this;if(other.$$is_number){return self+other}else{return self.$__coerced__("+",other)}},TMP_Number_$_4.$$arity=1);Opal.defn(self,"$-",TMP_Number_$_5=function(other){var self=this;if(other.$$is_number){return self-other}else{return self.$__coerced__("-",other)}},TMP_Number_$_5.$$arity=1);Opal.defn(self,"$*",TMP_Number_$_6=function(other){var self=this;if(other.$$is_number){return self*other}else{return self.$__coerced__("*",other)}},TMP_Number_$_6.$$arity=1);Opal.defn(self,"$/",TMP_Number_$_7=function(other){var self=this;if(other.$$is_number){return self/other}else{return self.$__coerced__("/",other)}},TMP_Number_$_7.$$arity=1);Opal.alias(self,"fdiv","/");Opal.defn(self,"$%",TMP_Number_$_8=function(other){var self=this;if(other.$$is_number){if(other==-Infinity){return other}else if(other==0){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else if(other<0||self<0){return(self%other+other)%other}else{return self%other}}else{return self.$__coerced__("%",other)}},TMP_Number_$_8.$$arity=1);Opal.defn(self,"$&",TMP_Number_$_9=function(other){var self=this;if(other.$$is_number){return self&other}else{return self.$__coerced__("&",other)}},TMP_Number_$_9.$$arity=1);Opal.defn(self,"$|",TMP_Number_$_10=function(other){var self=this;if(other.$$is_number){return self|other}else{return self.$__coerced__("|",other)}},TMP_Number_$_10.$$arity=1);Opal.defn(self,"$^",TMP_Number_$_11=function(other){var self=this;if(other.$$is_number){return self^other}else{return self.$__coerced__("^",other)}},TMP_Number_$_11.$$arity=1);Opal.defn(self,"$<",TMP_Number_$lt_12=function(other){var self=this;if(other.$$is_number){return self",TMP_Number_$gt_14=function(other){var self=this;if(other.$$is_number){return self>other}else{return self.$__coerced__(">",other)}},TMP_Number_$gt_14.$$arity=1);Opal.defn(self,"$>=",TMP_Number_$gt$eq_15=function(other){var self=this;if(other.$$is_number){return self>=other}else{return self.$__coerced__(">=",other)}},TMP_Number_$gt$eq_15.$$arity=1);var spaceship_operator=function(self,other){if(other.$$is_number){if(isNaN(self)||isNaN(other)){return nil}if(self>other){return 1}else if(self",other)}};Opal.defn(self,"$<=>",TMP_Number_$lt$eq$gt_16=function(other){var self=this;try{return spaceship_operator(self,other)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return nil}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Number_$lt$eq$gt_16.$$arity=1);Opal.defn(self,"$<<",TMP_Number_$lt$lt_17=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](count,Opal.const_get_relative($nesting,"Integer"),"to_int");return count>0?self<>-count},TMP_Number_$lt$lt_17.$$arity=1);Opal.defn(self,"$>>",TMP_Number_$gt$gt_18=function(count){var self=this;count=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](count,Opal.const_get_relative($nesting,"Integer"),"to_int");return count>0?self>>count:self<<-count},TMP_Number_$gt$gt_18.$$arity=1);Opal.defn(self,"$[]",TMP_Number_$$_19=function(bit){var self=this;bit=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](bit,Opal.const_get_relative($nesting,"Integer"),"to_int");if(bit<0){return 0}if(bit>=32){return self<0?1:0}return self>>bit&1},TMP_Number_$$_19.$$arity=1);Opal.defn(self,"$+@",TMP_Number_$$_20=function(){var self=this;return+self},TMP_Number_$$_20.$$arity=0);Opal.defn(self,"$-@",TMP_Number_$$_21=function(){var self=this;return-self},TMP_Number_$$_21.$$arity=0);Opal.defn(self,"$~",TMP_Number_$_22=function(){var self=this;return~self},TMP_Number_$_22.$$arity=0);Opal.defn(self,"$**",TMP_Number_$$_23=function(other){var $a,$b,self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){if($truthy($truthy($a=Opal.const_get_relative($nesting,"Integer")["$==="](self)["$!"]())?$a:$rb_gt(other,0))){return Math.pow(self,other)}else{return Opal.const_get_relative($nesting,"Rational").$new(self,1)["$**"](other)}}else if($truthy(($a=$rb_lt(self,0))?$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](other))?$b:Opal.const_get_relative($nesting,"Rational")["$==="](other):$rb_lt(self,0))){return Opal.const_get_relative($nesting,"Complex").$new(self,0)["$**"](other.$to_f())}else if($truthy(other.$$is_number!=null)){return Math.pow(self,other)}else{return self.$__coerced__("**",other)}},TMP_Number_$$_23.$$arity=1);Opal.defn(self,"$===",TMP_Number_$eq$eq$eq_24=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},TMP_Number_$eq$eq$eq_24.$$arity=1);Opal.defn(self,"$==",TMP_Number_$eq$eq_25=function(other){var self=this;if(other.$$is_number){return self.valueOf()===other.valueOf()}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}},TMP_Number_$eq$eq_25.$$arity=1);Opal.defn(self,"$abs",TMP_Number_abs_26=function $$abs(){var self=this;return Math.abs(self)},TMP_Number_abs_26.$$arity=0);Opal.defn(self,"$abs2",TMP_Number_abs2_27=function $$abs2(){var self=this;return Math.abs(self*self)},TMP_Number_abs2_27.$$arity=0);Opal.defn(self,"$angle",TMP_Number_angle_28=function $$angle(){var self=this;if($truthy(self["$nan?"]())){return self}if(self==0){if(1/self>0){return 0}else{return Math.PI}}else if(self<0){return Math.PI}else{return 0}},TMP_Number_angle_28.$$arity=0);Opal.alias(self,"arg","angle");Opal.alias(self,"phase","angle");Opal.defn(self,"$bit_length",TMP_Number_bit_length_29=function $$bit_length(){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){}else{self.$raise(Opal.const_get_relative($nesting,"NoMethodError").$new(""+"undefined method `bit_length` for "+self+":Float","bit_length"))}if(self===0||self===-1){return 0}var result=0,value=self<0?~self:self;while(value!=0){result+=1;value>>>=1}return result},TMP_Number_bit_length_29.$$arity=0);Opal.defn(self,"$ceil",TMP_Number_ceil_30=function $$ceil(){var self=this;return Math.ceil(self)},TMP_Number_ceil_30.$$arity=0);Opal.defn(self,"$chr",TMP_Number_chr_31=function $$chr(encoding){var self=this;return String.fromCharCode(self)},TMP_Number_chr_31.$$arity=-1);Opal.defn(self,"$denominator",TMP_Number_denominator_32=function $$denominator(){var $a,self=this,$iter=TMP_Number_denominator_32.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_denominator_32.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return 1}else{return $send(self,Opal.find_super_dispatcher(self,"denominator",TMP_Number_denominator_32,false),$zuper,$iter)}},TMP_Number_denominator_32.$$arity=0);Opal.defn(self,"$downto",TMP_Number_downto_33=function $$downto(stop){var TMP_34,self=this,$iter=TMP_Number_downto_33.$$p,block=$iter||nil;if($iter)TMP_Number_downto_33.$$p=null;if(block!==nil){}else{return $send(self,"enum_for",["downto",stop],(TMP_34=function(){var self=TMP_34.$$s||this;if($truthy(Opal.const_get_relative($nesting,"Numeric")["$==="](stop))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}if($truthy($rb_gt(stop,self))){return 0}else{return $rb_plus($rb_minus(self,stop),1)}},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))}if(!stop.$$is_number){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"comparison of "+self.$class()+" with "+stop.$class()+" failed")}for(var i=self;i>=stop;i--){block(i)}return self},TMP_Number_downto_33.$$arity=1);Opal.alias(self,"eql?","==");Opal.defn(self,"$equal?",TMP_Number_equal$q_35=function(other){var $a,self=this;return $truthy($a=self["$=="](other))?$a:isNaN(self)&&isNaN(other)},TMP_Number_equal$q_35.$$arity=1);Opal.defn(self,"$even?",TMP_Number_even$q_36=function(){var self=this;return self%2===0},TMP_Number_even$q_36.$$arity=0);Opal.defn(self,"$floor",TMP_Number_floor_37=function $$floor(){var self=this;return Math.floor(self)},TMP_Number_floor_37.$$arity=0);Opal.defn(self,"$gcd",TMP_Number_gcd_38=function $$gcd(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an integer")}var min=Math.abs(self),max=Math.abs(other);while(min>0){var tmp=min;min=max%min;max=tmp}return max},TMP_Number_gcd_38.$$arity=1);Opal.defn(self,"$gcdlcm",TMP_Number_gcdlcm_39=function $$gcdlcm(other){var self=this;return[self.$gcd(),self.$lcm()]},TMP_Number_gcdlcm_39.$$arity=1);Opal.defn(self,"$integer?",TMP_Number_integer$q_40=function(){var self=this;return self%1===0},TMP_Number_integer$q_40.$$arity=0);Opal.defn(self,"$is_a?",TMP_Number_is_a$q_41=function(klass){var $a,self=this,$iter=TMP_Number_is_a$q_41.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_is_a$q_41.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Integer")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Float")))?Opal.const_get_relative($nesting,"Float")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"is_a?",TMP_Number_is_a$q_41,false),$zuper,$iter)},TMP_Number_is_a$q_41.$$arity=1);Opal.alias(self,"kind_of?","is_a?");Opal.defn(self,"$instance_of?",TMP_Number_instance_of$q_42=function(klass){var $a,self=this,$iter=TMP_Number_instance_of$q_42.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_instance_of$q_42.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Fixnum")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Integer")))?Opal.const_get_relative($nesting,"Integer")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Integer")))){return true}if($truthy(($a=klass["$=="](Opal.const_get_relative($nesting,"Float")))?Opal.const_get_relative($nesting,"Float")["$==="](self):klass["$=="](Opal.const_get_relative($nesting,"Float")))){return true}return $send(self,Opal.find_super_dispatcher(self,"instance_of?",TMP_Number_instance_of$q_42,false),$zuper,$iter)},TMP_Number_instance_of$q_42.$$arity=1);Opal.defn(self,"$lcm",TMP_Number_lcm_43=function $$lcm(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an integer")}if(self==0||other==0){return 0}else{return Math.abs(self*other/self.$gcd(other))}},TMP_Number_lcm_43.$$arity=1);Opal.alias(self,"magnitude","abs");Opal.alias(self,"modulo","%");Opal.defn(self,"$next",TMP_Number_next_44=function $$next(){var self=this;return self+1},TMP_Number_next_44.$$arity=0);Opal.defn(self,"$nonzero?",TMP_Number_nonzero$q_45=function(){var self=this;return self==0?nil:self},TMP_Number_nonzero$q_45.$$arity=0);Opal.defn(self,"$numerator",TMP_Number_numerator_46=function $$numerator(){var $a,self=this,$iter=TMP_Number_numerator_46.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_numerator_46.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}else{return $send(self,Opal.find_super_dispatcher(self,"numerator",TMP_Number_numerator_46,false),$zuper,$iter)}},TMP_Number_numerator_46.$$arity=0);Opal.defn(self,"$odd?",TMP_Number_odd$q_47=function(){var self=this;return self%2!==0},TMP_Number_odd$q_47.$$arity=0);Opal.defn(self,"$ord",TMP_Number_ord_48=function $$ord(){var self=this;return self},TMP_Number_ord_48.$$arity=0);Opal.defn(self,"$pred",TMP_Number_pred_49=function $$pred(){var self=this;return self-1},TMP_Number_pred_49.$$arity=0);Opal.defn(self,"$quo",TMP_Number_quo_50=function $$quo(other){var self=this,$iter=TMP_Number_quo_50.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Number_quo_50.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){return $send(self,Opal.find_super_dispatcher(self,"quo",TMP_Number_quo_50,false),$zuper,$iter)}else{return $rb_divide(self,other)}},TMP_Number_quo_50.$$arity=1);Opal.defn(self,"$rationalize",TMP_Number_rationalize_51=function $$rationalize(eps){var $a,$b,self=this,f=nil,n=nil;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){return Opal.const_get_relative($nesting,"Rational").$new(self,1)}else if($truthy(self["$infinite?"]())){return self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"Infinity")}else if($truthy(self["$nan?"]())){return self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"NaN")}else if($truthy(eps==null)){$b=Opal.const_get_relative($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),f=$a[0]==null?nil:$a[0],n=$a[1]==null?nil:$a[1],$b;f=Opal.const_get_relative($nesting,"Math").$ldexp(f,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"MANT_DIG")).$to_i();n=$rb_minus(n,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"MANT_DIG"));return Opal.const_get_relative($nesting,"Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize(Opal.const_get_relative($nesting,"Rational").$new(1,1["$<<"]($rb_minus(1,n))))}else{return self.$to_r().$rationalize(eps)}},TMP_Number_rationalize_51.$$arity=-1);Opal.defn(self,"$round",TMP_Number_round_52=function $$round(ndigits){var $a,$b,self=this,_=nil,exp=nil;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](self))){if($truthy(ndigits==null)){return self}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Float")["$==="](ndigits))?ndigits["$infinite?"]():$a)){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"Infinity")}ndigits=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](ndigits,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_lt(ndigits,Opal.const_get_qualified(Opal.const_get_relative($nesting,"Integer"),"MIN")))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"out of bounds")}if($truthy(ndigits>=0)){return self}ndigits=ndigits["$-@"]();if(.415241*ndigits-.125>self.$size()){return 0}var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(x)+f/2)/f)*f;return self<0?-x:x}else{if($truthy($truthy($a=self["$nan?"]())?ndigits==null:$a)){self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"NaN")}ndigits=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](ndigits||0,Opal.const_get_relative($nesting,"Integer"),"to_int");if($truthy($rb_le(ndigits,0))){if($truthy(self["$nan?"]())){self.$raise(Opal.const_get_relative($nesting,"RangeError"),"NaN")}else if($truthy(self["$infinite?"]())){self.$raise(Opal.const_get_relative($nesting,"FloatDomainError"),"Infinity")}}else if(ndigits["$=="](0)){return Math.round(self)}else if($truthy($truthy($a=self["$nan?"]())?$a:self["$infinite?"]())){return self}$b=Opal.const_get_relative($nesting,"Math").$frexp(self),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],exp=$a[1]==null?nil:$a[1],$b;if($truthy($rb_ge(ndigits,$rb_minus($rb_plus(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"DIG"),2),function(){if($truthy($rb_gt(exp,0))){return $rb_divide(exp,4)}else{return $rb_minus($rb_divide(exp,3),1)}return nil}())))){return self}if($truthy($rb_lt(ndigits,function(){if($truthy($rb_gt(exp,0))){return $rb_plus($rb_divide(exp,3),1)}else{return $rb_divide(exp,4)}return nil}()["$-@"]()))){return 0}return Math.round(self*Math.pow(10,ndigits))/Math.pow(10,ndigits)}},TMP_Number_round_52.$$arity=-1);Opal.defn(self,"$step",TMP_Number_step_53=function $$step($limit,$step,$kwargs){var TMP_54,self=this,$post_args,to,by,limit,step,$iter=TMP_Number_step_53.$$p,block=$iter||nil,positional_args=nil,keyword_args=nil;$post_args=Opal.slice.call(arguments,0,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}to=$kwargs.$$smap["to"];by=$kwargs.$$smap["by"];if(0<$post_args.length){limit=$post_args.splice(0,1)[0]}if(0<$post_args.length){step=$post_args.splice(0,1)[0]}if($iter)TMP_Number_step_53.$$p=null;if(limit!==undefined&&to!==undefined){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"to is given twice")}if(step!==undefined&&by!==undefined){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step is given twice")}function validateParameters(){if(to!==undefined){limit=to}if(limit===undefined){limit=nil}if(step===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"step must be numeric")}if(step===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be 0")}if(by!==undefined){step=by}if(step===nil||step==null){step=1}var sign=step["$<=>"](0);if(sign===nil){self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"0 can't be coerced into "+step.$class())}if(limit===nil||limit==null){limit=sign>0?Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY"):Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")["$-@"]()}Opal.const_get_relative($nesting,"Opal").$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5){err=.5}return floor((limit-self)/step+err)+1}}}function stepSize(){validateParameters();if(step===0){return Infinity}if(step%1!==0){return stepFloatSize()}else if(step>0&&self>limit||step<0&&self0){if(step===Infinity||step===-Infinity){block(self)}else{var i=0,d;if(step>0){while(id){d=limit}block(d);i+=1}}}}}else{var value=self;if(step>0){while(value<=limit){block(value);value+=step}}else{while(value>=limit){block(value);value+=step}}}return self},TMP_Number_step_53.$$arity=-1);Opal.alias(self,"succ","next");Opal.defn(self,"$times",TMP_Number_times_55=function $$times(){var TMP_56,self=this,$iter=TMP_Number_times_55.$$p,block=$iter||nil;if($iter)TMP_Number_times_55.$$p=null;if($truthy(block)){}else{return $send(self,"enum_for",["times"],(TMP_56=function(){var self=TMP_56.$$s||this;return self},TMP_56.$$s=self,TMP_56.$$arity=0,TMP_56))}for(var i=0;i0)},TMP_Number_positive$q_69.$$arity=0);return(Opal.defn(self,"$negative?",TMP_Number_negative$q_70=function(){var self=this;return self==-Infinity||1/self<0},TMP_Number_negative$q_70.$$arity=0),nil)&&"negative?"})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);Opal.const_set($nesting[0],"Fixnum",Opal.const_get_relative($nesting,"Number"));(function($base,$super,$parent_nesting){function $Integer(){}var self=$Integer=$klass($base,$super,"Integer",$Integer);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_71,TMP_$eq$eq$eq_72;Opal.defn(self,"$allocate",TMP_allocate_71=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_71.$$arity=0);Opal.udef(self,"$"+"new");return(Opal.defn(self,"$===",TMP_$eq$eq$eq_72=function(other){var self=this;if(!other.$$is_number){return false}return other%1===0},TMP_$eq$eq$eq_72.$$arity=1),nil)&&"==="})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"MAX",Math.pow(2,30)-1);return Opal.const_set($nesting[0],"MIN",-Math.pow(2,30))})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$super,$parent_nesting){function $Float(){}var self=$Float=$klass($base,$super,"Float",$Float);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$$is_number_class=true;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_allocate_73,TMP_$eq$eq$eq_74;Opal.defn(self,"$allocate",TMP_allocate_73=function $$allocate(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"allocator undefined for "+self.$name())},TMP_allocate_73.$$arity=0);Opal.udef(self,"$"+"new");return(Opal.defn(self,"$===",TMP_$eq$eq$eq_74=function(other){var self=this;return!!other.$$is_number},TMP_$eq$eq$eq_74.$$arity=1),nil)&&"==="})(Opal.get_singleton_class(self),$nesting);Opal.const_set($nesting[0],"INFINITY",Infinity);Opal.const_set($nesting[0],"MAX",Number.MAX_VALUE);Opal.const_set($nesting[0],"MIN",Number.MIN_VALUE);Opal.const_set($nesting[0],"NAN",NaN);Opal.const_set($nesting[0],"DIG",15);Opal.const_set($nesting[0],"MANT_DIG",53);Opal.const_set($nesting[0],"RADIX",2);return Opal.const_set($nesting[0],"EPSILON",Number.EPSILON||2.220446049250313e-16)}($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting)};Opal.modules["corelib/range"]=function(Opal){function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$include","$attr_reader","$raise","$<=>","$include?","$<=","$<","$enum_for","$upto","$to_proc","$respond_to?","$class","$succ","$!","$==","$===","$exclude_end?","$eql?","$begin","$end","$last","$to_a","$>","$-","$abs","$to_i","$coerce_to!","$ceil","$/","$size","$loop","$+","$*","$>=","$each_with_index","$%","$bsearch","$inspect","$[]","$hash"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Range_initialize_1,TMP_Range_$eq$eq_2,TMP_Range_$eq$eq$eq_3,TMP_Range_cover$q_4,TMP_Range_each_5,TMP_Range_eql$q_6,TMP_Range_exclude_end$q_7,TMP_Range_first_8,TMP_Range_last_9,TMP_Range_max_10,TMP_Range_min_11,TMP_Range_size_12,TMP_Range_step_13,TMP_Range_bsearch_17,TMP_Range_to_s_18,TMP_Range_inspect_19,TMP_Range_marshal_load_20,TMP_Range_hash_21;def.begin=def.end=def.excl=nil;self.$include(Opal.const_get_relative($nesting,"Enumerable"));def.$$is_range=true;self.$attr_reader("begin","end");Opal.defn(self,"$initialize",TMP_Range_initialize_1=function $$initialize(first,last,exclude){var self=this;if(exclude==null){exclude=false}if($truthy(self.begin)){self.$raise(Opal.const_get_relative($nesting,"NameError"),"'initialize' called twice")}if($truthy(first["$<=>"](last))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"bad value for range")}self.begin=first;self.end=last;return self.excl=exclude},TMP_Range_initialize_1.$$arity=-3);Opal.defn(self,"$==",TMP_Range_$eq$eq_2=function(other){var self=this;if(!other.$$is_range){return false}return self.excl===other.excl&&self.begin==other.begin&&self.end==other.end},TMP_Range_$eq$eq_2.$$arity=1);Opal.defn(self,"$===",TMP_Range_$eq$eq$eq_3=function(value){var self=this;return self["$include?"](value)},TMP_Range_$eq$eq$eq_3.$$arity=1);Opal.defn(self,"$cover?",TMP_Range_cover$q_4=function(value){var $a,self=this,beg_cmp=nil,end_cmp=nil;beg_cmp=self.begin["$<=>"](value);if($truthy($truthy($a=beg_cmp)?$rb_le(beg_cmp,0):$a)){}else{return false}end_cmp=value["$<=>"](self.end);if($truthy(self.excl)){return $truthy($a=end_cmp)?$rb_lt(end_cmp,0):$a}else{return $truthy($a=end_cmp)?$rb_le(end_cmp,0):$a}},TMP_Range_cover$q_4.$$arity=1);Opal.defn(self,"$each",TMP_Range_each_5=function $$each(){var $a,self=this,$iter=TMP_Range_each_5.$$p,block=$iter||nil,current=nil,last=nil;if($iter)TMP_Range_each_5.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}var i,limit;if(self.begin.$$is_number&&self.end.$$is_number){if(self.begin%1!==0||self.end%1!==0){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't iterate from Float")}for(i=self.begin,limit=self.end+function(){if($truthy(self.excl)){return 0}else{return 1}return nil}();i"](last),0))){Opal.yield1(block,current);current=current.$succ()}if($truthy($truthy($a=self.excl["$!"]())?current["$=="](last):$a)){Opal.yield1(block,current)}return self},TMP_Range_each_5.$$arity=0);Opal.defn(self,"$eql?",TMP_Range_eql$q_6=function(other){var $a,$b,self=this;if($truthy(Opal.const_get_relative($nesting,"Range")["$==="](other))){}else{return false}return $truthy($a=$truthy($b=self.excl["$==="](other["$exclude_end?"]()))?self.begin["$eql?"](other.$begin()):$b)?self.end["$eql?"](other.$end()):$a},TMP_Range_eql$q_6.$$arity=1);Opal.defn(self,"$exclude_end?",TMP_Range_exclude_end$q_7=function(){var self=this;return self.excl},TMP_Range_exclude_end$q_7.$$arity=0);Opal.defn(self,"$first",TMP_Range_first_8=function $$first(n){var self=this,$iter=TMP_Range_first_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_first_8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(n==null)){return self.begin}return $send(self,Opal.find_super_dispatcher(self,"first",TMP_Range_first_8,false),$zuper,$iter)},TMP_Range_first_8.$$arity=-1);Opal.alias(self,"include?","cover?");Opal.defn(self,"$last",TMP_Range_last_9=function $$last(n){var self=this;if($truthy(n==null)){return self.end}return self.$to_a().$last(n)},TMP_Range_last_9.$$arity=-1);Opal.defn(self,"$max",TMP_Range_max_10=function $$max(){var $a,self=this,$iter=TMP_Range_max_10.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_max_10.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"max",TMP_Range_max_10,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.excl?self.end-1:self.end}},TMP_Range_max_10.$$arity=0);Opal.alias(self,"member?","cover?");Opal.defn(self,"$min",TMP_Range_min_11=function $$min(){var $a,self=this,$iter=TMP_Range_min_11.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Range_min_11.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($yield!==nil){return $send(self,Opal.find_super_dispatcher(self,"min",TMP_Range_min_11,false),$zuper,$iter)}else if($truthy($rb_gt(self.begin,self.end))){return nil}else if($truthy($truthy($a=self.excl)?self.begin["$=="](self.end):$a)){return nil}else{return self.begin}},TMP_Range_min_11.$$arity=0);Opal.defn(self,"$size",TMP_Range_size_12=function $$size(){var $a,self=this,_begin=nil,_end=nil,infinity=nil;_begin=self.begin;_end=self.end;if($truthy(self.excl)){_end=$rb_minus(_end,1)}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](_begin))?Opal.const_get_relative($nesting,"Numeric")["$==="](_end):$a)){}else{return nil}if($truthy($rb_lt(_end,_begin))){return 0}infinity=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY");if($truthy($truthy($a=infinity["$=="](_begin.$abs()))?$a:_end.$abs()["$=="](infinity))){return infinity}return(Math.abs(_end-_begin)+1).$to_i()},TMP_Range_size_12.$$arity=0);Opal.defn(self,"$step",TMP_Range_step_13=function $$step(n){var TMP_14,TMP_15,TMP_16,self=this,$iter=TMP_Range_step_13.$$p,$yield=$iter||nil,i=nil;if(n==null){n=1}if($iter)TMP_Range_step_13.$$p=null;function coerceStepSize(){if(!n.$$is_number){n=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](n,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(n<0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be negative")}else if(n===0){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"step can't be 0")}}function enumeratorSize(){if(!self.begin["$respond_to?"]("succ")){return nil}if(self.begin.$$is_string&&self.end.$$is_string){return nil}if(n%1===0){return $rb_divide(self.$size(),n).$ceil()}else{var begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"EPSILON"),size;if(err>.5){err=.5}if(self.excl){size=floor((end-begin)/n-err);if(size*n+beginarity&&self.$$is_lambda&&!self.$$is_curried){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+length+" for "+arity+")")}if(length>=arity){return self.$call.apply(self,args)}result=function(){return curried.apply(null,args.concat($slice.call(arguments)))};result.$$is_lambda=self.$$is_lambda;result.$$is_curried=true;return result}curried.$$is_lambda=self.$$is_lambda;curried.$$is_curried=true;return curried},TMP_Proc_curry_9.$$arity=-1);Opal.defn(self,"$dup",TMP_Proc_dup_10=function $$dup(){var self=this;var original_proc=self.$$original_proc||self,proc=function(){return original_proc.apply(this,arguments)};for(var prop in self){if(self.hasOwnProperty(prop)){proc[prop]=self[prop]}}return proc},TMP_Proc_dup_10.$$arity=0);return Opal.alias(self,"clone","dup")}($nesting[0],Function,$nesting)};Opal.modules["corelib/method"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$arity","$new","$class","$join","$source_location","$raise"]);(function($base,$super,$parent_nesting){function $Method(){}var self=$Method=$klass($base,$super,"Method",$Method);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Method_initialize_1,TMP_Method_arity_2,TMP_Method_parameters_3,TMP_Method_source_location_4,TMP_Method_comments_5,TMP_Method_call_6,TMP_Method_unbind_7,TMP_Method_to_proc_8,TMP_Method_inspect_9;def.method=def.receiver=def.owner=def.name=nil;self.$attr_reader("owner","receiver","name");Opal.defn(self,"$initialize",TMP_Method_initialize_1=function $$initialize(receiver,owner,method,name){var self=this;self.receiver=receiver;self.owner=owner;self.name=name;return self.method=method},TMP_Method_initialize_1.$$arity=4);Opal.defn(self,"$arity",TMP_Method_arity_2=function $$arity(){var self=this;return self.method.$arity()},TMP_Method_arity_2.$$arity=0);Opal.defn(self,"$parameters",TMP_Method_parameters_3=function $$parameters(){var self=this;return self.method.$$parameters},TMP_Method_parameters_3.$$arity=0);Opal.defn(self,"$source_location",TMP_Method_source_location_4=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},TMP_Method_source_location_4.$$arity=0);Opal.defn(self,"$comments",TMP_Method_comments_5=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},TMP_Method_comments_5.$$arity=0);Opal.defn(self,"$call",TMP_Method_call_6=function $$call($a_rest){var self=this,args,$iter=TMP_Method_call_6.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Method_call_6.$$p=null;self.method.$$p=block;return self.method.apply(self.receiver,args)},TMP_Method_call_6.$$arity=-1);Opal.alias(self,"[]","call");Opal.defn(self,"$unbind",TMP_Method_unbind_7=function $$unbind(){var self=this;return Opal.const_get_relative($nesting,"UnboundMethod").$new(self.receiver.$class(),self.owner,self.method,self.name)},TMP_Method_unbind_7.$$arity=0);Opal.defn(self,"$to_proc",TMP_Method_to_proc_8=function $$to_proc(){var self=this;var proc=self.$call.bind(self);proc.$$unbound=self.method;proc.$$is_lambda=true;return proc},TMP_Method_to_proc_8.$$arity=0);return(Opal.defn(self,"$inspect",TMP_Method_inspect_9=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.receiver.$class()+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},TMP_Method_inspect_9.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $UnboundMethod(){}var self=$UnboundMethod=$klass($base,$super,"UnboundMethod",$UnboundMethod);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UnboundMethod_initialize_10,TMP_UnboundMethod_arity_11,TMP_UnboundMethod_parameters_12,TMP_UnboundMethod_source_location_13,TMP_UnboundMethod_comments_14,TMP_UnboundMethod_bind_15,TMP_UnboundMethod_inspect_16;def.method=def.owner=def.name=def.source=nil;self.$attr_reader("source","owner","name");Opal.defn(self,"$initialize",TMP_UnboundMethod_initialize_10=function $$initialize(source,owner,method,name){var self=this;self.source=source;self.owner=owner;self.method=method;return self.name=name},TMP_UnboundMethod_initialize_10.$$arity=4);Opal.defn(self,"$arity",TMP_UnboundMethod_arity_11=function $$arity(){var self=this;return self.method.$arity()},TMP_UnboundMethod_arity_11.$$arity=0);Opal.defn(self,"$parameters",TMP_UnboundMethod_parameters_12=function $$parameters(){var self=this;return self.method.$$parameters},TMP_UnboundMethod_parameters_12.$$arity=0);Opal.defn(self,"$source_location",TMP_UnboundMethod_source_location_13=function $$source_location(){var $a,self=this;return $truthy($a=self.method.$$source_location)?$a:["(eval)",0]},TMP_UnboundMethod_source_location_13.$$arity=0);Opal.defn(self,"$comments",TMP_UnboundMethod_comments_14=function $$comments(){var $a,self=this;return $truthy($a=self.method.$$comments)?$a:[]},TMP_UnboundMethod_comments_14.$$arity=0);Opal.defn(self,"$bind",TMP_UnboundMethod_bind_15=function $$bind(object){var self=this;if(self.owner.$$is_module||Opal.is_a(object,self.owner)){return Opal.const_get_relative($nesting,"Method").$new(object,self.owner,self.method,self.name)}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"can't bind singleton method to a different class (expected "+object+".kind_of?("+self.owner+" to be true)")}},TMP_UnboundMethod_bind_15.$$arity=1);return(Opal.defn(self,"$inspect",TMP_UnboundMethod_inspect_16=function $$inspect(){var self=this;return""+"#<"+self.$class()+": "+self.source+"#"+self.name+" (defined in "+self.owner+" in "+self.$source_location().$join(":")+")>"},TMP_UnboundMethod_inspect_16.$$arity=0),nil)&&"inspect"}($nesting[0],null,$nesting)};Opal.modules["corelib/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil;$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features;$gvars.LOAD_PATH=$gvars[":"]=[];$gvars["/"]="\n";$gvars[","]=nil;Opal.const_set($nesting[0],"ARGV",[]);Opal.const_set($nesting[0],"ARGF",Opal.const_get_relative($nesting,"Object").$new());Opal.const_set($nesting[0],"ENV",$hash2([],{}));$gvars.VERBOSE=false;$gvars.DEBUG=false;return $gvars.SAFE=0};Opal.modules["opal/regexp_anchors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$==","$new"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"REGEXP_START",function(){if(Opal.const_get_relative($nesting,"RUBY_ENGINE")["$=="]("opal")){return"^"}else{return nil}return nil}());Opal.const_set($nesting[0],"REGEXP_END",function(){if(Opal.const_get_relative($nesting,"RUBY_ENGINE")["$=="]("opal")){return"$"}else{return nil}return nil}());Opal.const_set($nesting[0],"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"INLINE_IDENTIFIER_REGEXP",Opal.const_get_relative($nesting,"Regexp").$new(""+"[^"+Opal.const_get_relative($nesting,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+Opal.const_get_relative($nesting,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]"));Opal.const_set($nesting[0],"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F");Opal.const_set($nesting[0],"CONST_NAME_REGEXP",Opal.const_get_relative($nesting,"Regexp").$new(""+Opal.const_get_relative($nesting,"REGEXP_START")+"(::)?[A-Z][^"+Opal.const_get_relative($nesting,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+Opal.const_get_relative($nesting,"REGEXP_END")))}($nesting[0],$nesting)};Opal.modules["opal/mini"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/base");self.$require("corelib/nil");self.$require("corelib/boolean");self.$require("corelib/string");self.$require("corelib/comparable");self.$require("corelib/enumerable");self.$require("corelib/enumerator");self.$require("corelib/array");self.$require("corelib/hash");self.$require("corelib/number");self.$require("corelib/range");self.$require("corelib/proc");self.$require("corelib/method");self.$require("corelib/regexp");self.$require("corelib/variables");return self.$require("opal/regexp_anchors")};Opal.modules["corelib/string/inheritance"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$gvars=Opal.gvars;Opal.add_stubs(["$require","$new","$allocate","$initialize","$to_proc","$__send__","$class","$clone","$respond_to?","$==","$to_s","$inspect","$+","$*","$map","$split","$enum_for","$each_line","$to_a","$%","$-"]);self.$require("corelib/string");(function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_inherited_1;return Opal.defs(self,"$inherited",TMP_String_inherited_1=function $$inherited(klass){var self=this,replace=nil;replace=Opal.const_get_relative($nesting,"Class").$new(Opal.const_get_qualified(Opal.const_get_relative($nesting,"String"),"Wrapper"));klass.$$proto=replace.$$proto;klass.$$proto.$$class=klass;klass.$$alloc=replace.$$alloc;klass.$$parent=Opal.const_get_qualified(Opal.const_get_relative($nesting,"String"),"Wrapper");klass.$allocate=replace.$allocate;klass.$new=replace.$new},TMP_String_inherited_1.$$arity=1)})($nesting[0],null,$nesting);return function($base,$super,$parent_nesting){function $Wrapper(){}var self=$Wrapper=$klass($base,$super,"Wrapper",$Wrapper);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Wrapper_allocate_2,TMP_Wrapper_new_3,TMP_Wrapper_$$_4,TMP_Wrapper_initialize_5,TMP_Wrapper_method_missing_6,TMP_Wrapper_initialize_copy_7,TMP_Wrapper_respond_to$q_8,TMP_Wrapper_$eq$eq_9,TMP_Wrapper_to_s_10,TMP_Wrapper_inspect_11,TMP_Wrapper_$_12,TMP_Wrapper_$_13,TMP_Wrapper_split_15,TMP_Wrapper_replace_16,TMP_Wrapper_each_line_17,TMP_Wrapper_lines_19,TMP_Wrapper_$_20,TMP_Wrapper_instance_variables_21;def.literal=nil;def.$$is_string=true;Opal.defs(self,"$allocate",TMP_Wrapper_allocate_2=function $$allocate(string){var self=this,$iter=TMP_Wrapper_allocate_2.$$p,$yield=$iter||nil,obj=nil;if(string==null){string=""}if($iter)TMP_Wrapper_allocate_2.$$p=null;obj=$send(self,Opal.find_super_dispatcher(self,"allocate",TMP_Wrapper_allocate_2,false,$Wrapper),[],null);obj.literal=string;return obj},TMP_Wrapper_allocate_2.$$arity=-1);Opal.defs(self,"$new",TMP_Wrapper_new_3=function($a_rest){var self=this,args,$iter=TMP_Wrapper_new_3.$$p,block=$iter||nil,obj=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Wrapper_new_3.$$p=null;obj=self.$allocate();$send(obj,"initialize",Opal.to_a(args),block.$to_proc());return obj},TMP_Wrapper_new_3.$$arity=-1);Opal.defs(self,"$[]",TMP_Wrapper_$$_4=function($a_rest){var self=this,objects;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}objects=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){objects[$arg_idx-0]=arguments[$arg_idx]}return self.$allocate(objects)},TMP_Wrapper_$$_4.$$arity=-1);Opal.defn(self,"$initialize",TMP_Wrapper_initialize_5=function $$initialize(string){var self=this;if(string==null){string=""}return self.literal=string},TMP_Wrapper_initialize_5.$$arity=-1);Opal.defn(self,"$method_missing",TMP_Wrapper_method_missing_6=function $$method_missing($a_rest){var self=this,args,$iter=TMP_Wrapper_method_missing_6.$$p,block=$iter||nil,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Wrapper_method_missing_6.$$p=null;result=$send(self.literal,"__send__",Opal.to_a(args),block.$to_proc());if($truthy(result.$$is_string!=null)){if($truthy(result==self.literal)){return self}else{return self.$class().$allocate(result)}}else{return result}},TMP_Wrapper_method_missing_6.$$arity=-1);Opal.defn(self,"$initialize_copy",TMP_Wrapper_initialize_copy_7=function $$initialize_copy(other){var self=this;return self.literal=other.literal.$clone()},TMP_Wrapper_initialize_copy_7.$$arity=1);Opal.defn(self,"$respond_to?",TMP_Wrapper_respond_to$q_8=function(name,$a_rest){var $b,self=this,$iter=TMP_Wrapper_respond_to$q_8.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Wrapper_respond_to$q_8.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $truthy($b=$send(self,Opal.find_super_dispatcher(self,"respond_to?",TMP_Wrapper_respond_to$q_8,false),$zuper,$iter))?$b:self.literal["$respond_to?"](name)},TMP_Wrapper_respond_to$q_8.$$arity=-2);Opal.defn(self,"$==",TMP_Wrapper_$eq$eq_9=function(other){var self=this;return self.literal["$=="](other)},TMP_Wrapper_$eq$eq_9.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.defn(self,"$to_s",TMP_Wrapper_to_s_10=function $$to_s(){var self=this;return self.literal.$to_s()},TMP_Wrapper_to_s_10.$$arity=0);Opal.alias(self,"to_str","to_s");Opal.defn(self,"$inspect",TMP_Wrapper_inspect_11=function $$inspect(){var self=this;return self.literal.$inspect()},TMP_Wrapper_inspect_11.$$arity=0);Opal.defn(self,"$+",TMP_Wrapper_$_12=function(other){var self=this;return $rb_plus(self.literal,other)},TMP_Wrapper_$_12.$$arity=1);Opal.defn(self,"$*",TMP_Wrapper_$_13=function(other){var self=this;var result=$rb_times(self.literal,other);if(result.$$is_string){return self.$class().$allocate(result)}else{return result}},TMP_Wrapper_$_13.$$arity=1);Opal.defn(self,"$split",TMP_Wrapper_split_15=function $$split(pattern,limit){var TMP_14,self=this;return $send(self.literal.$split(pattern,limit),"map",[],(TMP_14=function(str){var self=TMP_14.$$s||this;if(str==null)str=nil;return self.$class().$allocate(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_Wrapper_split_15.$$arity=-1);Opal.defn(self,"$replace",TMP_Wrapper_replace_16=function $$replace(string){var self=this;return self.literal=string},TMP_Wrapper_replace_16.$$arity=1);Opal.defn(self,"$each_line",TMP_Wrapper_each_line_17=function $$each_line(separator){var TMP_18,self=this,$iter=TMP_Wrapper_each_line_17.$$p,$yield=$iter||nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_Wrapper_each_line_17.$$p=null;if($yield!==nil){}else{return self.$enum_for("each_line",separator)}return $send(self.literal,"each_line",[separator],(TMP_18=function(str){var self=TMP_18.$$s||this;if(str==null)str=nil;return Opal.yield1($yield,self.$class().$allocate(str))},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18))},TMP_Wrapper_each_line_17.$$arity=-1);Opal.defn(self,"$lines",TMP_Wrapper_lines_19=function $$lines(separator){var self=this,$iter=TMP_Wrapper_lines_19.$$p,block=$iter||nil,e=nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if($iter)TMP_Wrapper_lines_19.$$p=null;e=$send(self,"each_line",[separator],block.$to_proc());if($truthy(block)){return self}else{return e.$to_a()}},TMP_Wrapper_lines_19.$$arity=-1);Opal.defn(self,"$%",TMP_Wrapper_$_20=function(data){var self=this;return self.literal["$%"](data)},TMP_Wrapper_$_20.$$arity=1);return(Opal.defn(self,"$instance_variables",TMP_Wrapper_instance_variables_21=function $$instance_variables(){var self=this,$iter=TMP_Wrapper_instance_variables_21.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Wrapper_instance_variables_21.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $rb_minus($send(self,Opal.find_super_dispatcher(self,"instance_variables",TMP_Wrapper_instance_variables_21,false),$zuper,$iter),["@literal"])},TMP_Wrapper_instance_variables_21.$$arity=0),nil)&&"instance_variables"}(Opal.const_get_relative($nesting,"String"),null,$nesting)};Opal.modules["corelib/string/encoding"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var TMP_12,TMP_15,TMP_18,TMP_21,TMP_24,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$+","$[]","$new","$to_proc","$each","$const_set","$sub","$==","$default_external","$upcase","$raise","$attr_accessor","$attr_reader","$register","$length","$bytes","$to_a","$each_byte","$bytesize","$enum_for","$force_encoding","$dup","$coerce_to!","$find","$getbyte"]);self.$require("corelib/string");(function($base,$super,$parent_nesting){function $Encoding(){}var self=$Encoding=$klass($base,$super,"Encoding",$Encoding);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Encoding_register_1,TMP_Encoding_find_3,TMP_Encoding_initialize_4,TMP_Encoding_ascii_compatible$q_5,TMP_Encoding_dummy$q_6,TMP_Encoding_to_s_7,TMP_Encoding_inspect_8,TMP_Encoding_each_byte_9,TMP_Encoding_getbyte_10,TMP_Encoding_bytesize_11;def.ascii=def.dummy=def.name=nil;self["$$register"]={};Opal.defs(self,"$register",TMP_Encoding_register_1=function $$register(name,options){var $a,TMP_2,self=this,$iter=TMP_Encoding_register_1.$$p,block=$iter||nil,names=nil,encoding=nil,register=nil;if(options==null){options=$hash2([],{})}if($iter)TMP_Encoding_register_1.$$p=null;names=$rb_plus([name],$truthy($a=options["$[]"]("aliases"))?$a:[]);encoding=$send(Opal.const_get_relative($nesting,"Class"),"new",[self],block.$to_proc()).$new(name,names,$truthy($a=options["$[]"]("ascii"))?$a:false,$truthy($a=options["$[]"]("dummy"))?$a:false);register=self["$$register"];return $send(names,"each",[],(TMP_2=function(name){var self=TMP_2.$$s||this;if(name==null)name=nil;self.$const_set(name.$sub("-","_"),encoding);return register[""+"$$"+name]=encoding},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Encoding_register_1.$$arity=-2);Opal.defs(self,"$find",TMP_Encoding_find_3=function $$find(name){var $a,self=this,register=nil,encoding=nil;if(name["$=="]("default_external")){return self.$default_external()}register=self["$$register"];encoding=$truthy($a=register[""+"$$"+name])?$a:register[""+"$$"+name.$upcase()];if($truthy(encoding)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"unknown encoding name - "+name)}return encoding},TMP_Encoding_find_3.$$arity=1);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("default_external")})(Opal.get_singleton_class(self),$nesting);self.$attr_reader("name","names");Opal.defn(self,"$initialize",TMP_Encoding_initialize_4=function $$initialize(name,names,ascii,dummy){var self=this;self.name=name;self.names=names;self.ascii=ascii;return self.dummy=dummy},TMP_Encoding_initialize_4.$$arity=4);Opal.defn(self,"$ascii_compatible?",TMP_Encoding_ascii_compatible$q_5=function(){var self=this;return self.ascii},TMP_Encoding_ascii_compatible$q_5.$$arity=0);Opal.defn(self,"$dummy?",TMP_Encoding_dummy$q_6=function(){var self=this;return self.dummy},TMP_Encoding_dummy$q_6.$$arity=0);Opal.defn(self,"$to_s",TMP_Encoding_to_s_7=function $$to_s(){var self=this;return self.name},TMP_Encoding_to_s_7.$$arity=0);Opal.defn(self,"$inspect",TMP_Encoding_inspect_8=function $$inspect(){var self=this;return""+"#"},TMP_Encoding_inspect_8.$$arity=0);Opal.defn(self,"$each_byte",TMP_Encoding_each_byte_9=function $$each_byte($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_each_byte_9.$$arity=-1);Opal.defn(self,"$getbyte",TMP_Encoding_getbyte_10=function $$getbyte($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_getbyte_10.$$arity=-1);Opal.defn(self,"$bytesize",TMP_Encoding_bytesize_11=function $$bytesize($a_rest){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_Encoding_bytesize_11.$$arity=-1);(function($base,$super,$parent_nesting){function $EncodingError(){}var self=$EncodingError=$klass($base,$super,"EncodingError",$EncodingError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting);return function($base,$super,$parent_nesting){function $CompatibilityError(){}var self=$CompatibilityError=$klass($base,$super,"CompatibilityError",$CompatibilityError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil}($nesting[0],Opal.const_get_relative($nesting,"EncodingError"),$nesting)})($nesting[0],null,$nesting);$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:true})],(TMP_12=function(){var self=TMP_12.$$s||this,TMP_each_byte_13,TMP_bytesize_14;Opal.def(self,"$each_byte",TMP_each_byte_13=function $$each_byte(string){var self=this,$iter=TMP_each_byte_13.$$p,block=$iter||nil;if($iter)TMP_each_byte_13.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_16.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_17=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_17.$$arity=1),nil)&&"bytesize"},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-16BE"],(TMP_18=function(){var self=TMP_18.$$s||this,TMP_each_byte_19,TMP_bytesize_20;Opal.def(self,"$each_byte",TMP_each_byte_19=function $$each_byte(string){var self=this,$iter=TMP_each_byte_19.$$p,block=$iter||nil;if($iter)TMP_each_byte_19.$$p=null;for(var i=0,length=string.length;i>8);Opal.yield1(block,code&255)}},TMP_each_byte_19.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_20=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_20.$$arity=1),nil)&&"bytesize"},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["UTF-32LE"],(TMP_21=function(){var self=TMP_21.$$s||this,TMP_each_byte_22,TMP_bytesize_23;Opal.def(self,"$each_byte",TMP_each_byte_22=function $$each_byte(string){var self=this,$iter=TMP_each_byte_22.$$p,block=$iter||nil;if($iter)TMP_each_byte_22.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_22.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_23=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_23.$$arity=1),nil)&&"bytesize"},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21));$send(Opal.const_get_relative($nesting,"Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii","dummy"],{aliases:["BINARY","US-ASCII","ASCII"],ascii:true,dummy:true})],(TMP_24=function(){var self=TMP_24.$$s||this,TMP_each_byte_25,TMP_bytesize_26;Opal.def(self,"$each_byte",TMP_each_byte_25=function $$each_byte(string){var self=this,$iter=TMP_each_byte_25.$$p,block=$iter||nil;if($iter)TMP_each_byte_25.$$p=null;for(var i=0,length=string.length;i>8)}},TMP_each_byte_25.$$arity=1);return(Opal.def(self,"$bytesize",TMP_bytesize_26=function $$bytesize(string){var self=this;return string.$bytes().$length()},TMP_bytesize_26.$$arity=1),nil)&&"bytesize"},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24));return function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_bytes_27,TMP_String_bytesize_28,TMP_String_each_byte_29,TMP_String_encode_30,TMP_String_encoding_31,TMP_String_force_encoding_32,TMP_String_getbyte_33,TMP_String_valid_encoding$q_34;def.encoding=nil;String.prototype.encoding=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_16LE");Opal.defn(self,"$bytes",TMP_String_bytes_27=function $$bytes(){var self=this;return self.$each_byte().$to_a()},TMP_String_bytes_27.$$arity=0);Opal.defn(self,"$bytesize",TMP_String_bytesize_28=function $$bytesize(){var self=this;return self.encoding.$bytesize(self)},TMP_String_bytesize_28.$$arity=0);Opal.defn(self,"$each_byte",TMP_String_each_byte_29=function $$each_byte(){var self=this,$iter=TMP_String_each_byte_29.$$p,block=$iter||nil;if($iter)TMP_String_each_byte_29.$$p=null;if(block!==nil){}else{return self.$enum_for("each_byte")}$send(self.encoding,"each_byte",[self],block.$to_proc());return self},TMP_String_each_byte_29.$$arity=0);Opal.defn(self,"$encode",TMP_String_encode_30=function $$encode(encoding){var self=this;return self.$dup().$force_encoding(encoding)},TMP_String_encode_30.$$arity=1);Opal.defn(self,"$encoding",TMP_String_encoding_31=function $$encoding(){var self=this;return self.encoding},TMP_String_encoding_31.$$arity=0);Opal.defn(self,"$force_encoding",TMP_String_force_encoding_32=function $$force_encoding(encoding){var self=this;if(encoding===self.encoding){return self}encoding=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](encoding,Opal.const_get_relative($nesting,"String"),"to_s");encoding=Opal.const_get_relative($nesting,"Encoding").$find(encoding);if(encoding===self.encoding){return self}self.encoding=encoding;return self},TMP_String_force_encoding_32.$$arity=1);Opal.defn(self,"$getbyte",TMP_String_getbyte_33=function $$getbyte(idx){var self=this;return self.encoding.$getbyte(self,idx)},TMP_String_getbyte_33.$$arity=1);return(Opal.defn(self,"$valid_encoding?",TMP_String_valid_encoding$q_34=function(){var self=this;return true},TMP_String_valid_encoding$q_34.$$arity=0),nil)&&"valid_encoding?"}($nesting[0],null,$nesting)};Opal.modules["corelib/math"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy;Opal.add_stubs(["$new","$raise","$Float","$type_error","$Integer","$module_function","$checked","$float!","$===","$gamma","$-","$integer!","$/","$infinite?"]);return function($base,$parent_nesting){var $Math,self=$Math=$module($base,"Math");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Math_checked_1,TMP_Math_float$B_2,TMP_Math_integer$B_3,TMP_Math_acos_4,TMP_Math_acosh_5,TMP_Math_asin_6,TMP_Math_asinh_7,TMP_Math_atan_8,TMP_Math_atan2_9,TMP_Math_atanh_10,TMP_Math_cbrt_11,TMP_Math_cos_12,TMP_Math_cosh_13,TMP_Math_erf_14,TMP_Math_erfc_15,TMP_Math_exp_16,TMP_Math_frexp_17,TMP_Math_gamma_18,TMP_Math_hypot_19,TMP_Math_ldexp_20,TMP_Math_lgamma_21,TMP_Math_log_22,TMP_Math_log10_23,TMP_Math_log2_24,TMP_Math_sin_25,TMP_Math_sinh_26,TMP_Math_sqrt_27,TMP_Math_tan_28,TMP_Math_tanh_29;Opal.const_set($nesting[0],"E",Math.E);Opal.const_set($nesting[0],"PI",Math.PI);Opal.const_set($nesting[0],"DomainError",Opal.const_get_relative($nesting,"Class").$new(Opal.const_get_relative($nesting,"StandardError")));Opal.defs(self,"$checked",TMP_Math_checked_1=function $$checked(method,$a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if(isNaN(args[0])||args.length==2&&isNaN(args[1])){return NaN}var result=Math[method].apply(null,args);if(isNaN(result)){self.$raise(Opal.const_get_relative($nesting,"DomainError"),""+'Numerical argument is out of domain - "'+method+'"')}return result},TMP_Math_checked_1.$$arity=-2);Opal.defs(self,"$float!",TMP_Math_float$B_2=function(value){var self=this;try{return self.$Float(value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return self.$raise(Opal.const_get_relative($nesting,"Opal").$type_error(value,Opal.const_get_relative($nesting,"Float")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Math_float$B_2.$$arity=1);Opal.defs(self,"$integer!",TMP_Math_integer$B_3=function(value){var self=this;try{return self.$Integer(value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"ArgumentError")])){try{return self.$raise(Opal.const_get_relative($nesting,"Opal").$type_error(value,Opal.const_get_relative($nesting,"Integer")))}finally{Opal.pop_exception()}}else{throw $err}}},TMP_Math_integer$B_3.$$arity=1);self.$module_function();Opal.defn(self,"$acos",TMP_Math_acos_4=function $$acos(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("acos",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_acos_4.$$arity=1);if($truthy(typeof Math.acosh!=="undefined")){}else{Math.acosh=function(x){return Math.log(x+Math.sqrt(x*x-1))}}Opal.defn(self,"$acosh",TMP_Math_acosh_5=function $$acosh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("acosh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_acosh_5.$$arity=1);Opal.defn(self,"$asin",TMP_Math_asin_6=function $$asin(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("asin",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_asin_6.$$arity=1);if($truthy(typeof Math.asinh!=="undefined")){}else{Math.asinh=function(x){return Math.log(x+Math.sqrt(x*x+1))}}Opal.defn(self,"$asinh",TMP_Math_asinh_7=function $$asinh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("asinh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_asinh_7.$$arity=1);Opal.defn(self,"$atan",TMP_Math_atan_8=function $$atan(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atan",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atan_8.$$arity=1);Opal.defn(self,"$atan2",TMP_Math_atan2_9=function $$atan2(y,x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atan2",Opal.const_get_relative($nesting,"Math")["$float!"](y),Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atan2_9.$$arity=2);if($truthy(typeof Math.atanh!=="undefined")){}else{Math.atanh=function(x){return.5*Math.log((1+x)/(1-x))}}Opal.defn(self,"$atanh",TMP_Math_atanh_10=function $$atanh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("atanh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_atanh_10.$$arity=1);if($truthy(typeof Math.cbrt!=="undefined")){}else{Math.cbrt=function(x){if(x==0){return 0}if(x<0){return-Math.cbrt(-x)}var r=x,ex=0;while(r<.125){r*=8;ex--}while(r>1){r*=.125;ex++}r=(-.46946116*r+1.072302)*r+.3812513;while(ex<0){r*=.5;ex++}while(ex>0){r*=2;ex--}r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);r=2/3*r+1/3*x/(r*r);return r}}Opal.defn(self,"$cbrt",TMP_Math_cbrt_11=function $$cbrt(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cbrt",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cbrt_11.$$arity=1);Opal.defn(self,"$cos",TMP_Math_cos_12=function $$cos(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cos",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cos_12.$$arity=1);if($truthy(typeof Math.cosh!=="undefined")){}else{Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}}Opal.defn(self,"$cosh",TMP_Math_cosh_13=function $$cosh(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("cosh",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_cosh_13.$$arity=1);if($truthy(typeof Math.erf!=="undefined")){}else{Math.erf=function(x){var A1=.254829592,A2=-.284496736,A3=1.421413741,A4=-1.453152027,A5=1.061405429,P=.3275911;var sign=1;if(x<0){sign=-1}x=Math.abs(x);var t=1/(1+P*x);var y=1-((((A5*t+A4)*t+A3)*t+A2)*t+A1)*t*Math.exp(-x*x);return sign*y}}Opal.defn(self,"$erf",TMP_Math_erf_14=function $$erf(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("erf",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_erf_14.$$arity=1);if($truthy(typeof Math.erfc!=="undefined")){}else{Math.erfc=function(x){var z=Math.abs(x),t=1/(.5*z+1);var A1=t*.17087277+-.82215223,A2=t*A1+1.48851587,A3=t*A2+-1.13520398,A4=t*A3+.27886807,A5=t*A4+-.18628806,A6=t*A5+.09678418,A7=t*A6+.37409196,A8=t*A7+1.00002368,A9=t*A8,A10=-z*z-1.26551223+A9;var a=t*Math.exp(A10);if(x<0){return 2-a}else{return a}}}Opal.defn(self,"$erfc",TMP_Math_erfc_15=function $$erfc(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("erfc",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_erfc_15.$$arity=1);Opal.defn(self,"$exp",TMP_Math_exp_16=function $$exp(x){var self=this;return Opal.const_get_relative($nesting,"Math").$checked("exp",Opal.const_get_relative($nesting,"Math")["$float!"](x))},TMP_Math_exp_16.$$arity=1);Opal.defn(self,"$frexp",TMP_Math_frexp_17=function $$frexp(x){var self=this;x=Opal.const_get_relative($nesting,"Math")["$float!"](x);if(isNaN(x)){return[NaN,0]}var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1,frac=x/Math.pow(2,ex);return[frac,ex]},TMP_Math_frexp_17.$$arity=1);Opal.defn(self,"$gamma",TMP_Math_gamma_18=function $$gamma(n){var self=this;n=Opal.const_get_relative($nesting,"Math")["$float!"](n);var i,t,x,value,result,twoN,threeN,fourN,fiveN;var G=4.7421875;var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n)){return NaN}if(n===0&&1/n<0){return-Infinity}if(n===-1||n===-Infinity){self.$raise(Opal.const_get_relative($nesting,"DomainError"),'Numerical argument is out of domain - "gamma"')}if(Opal.const_get_relative($nesting,"Integer")["$==="](n)){if(n<=0){return isFinite(n)?Infinity:NaN}if(n>171){return Infinity}value=n-2;result=n-1;while(value>1){result*=value;value--}if(result==0){result=1}return result}if(n<.5){return Math.PI/(Math.sin(Math.PI*n)*Opal.const_get_relative($nesting,"Math").$gamma($rb_minus(1,n)))}if(n>=171.35){return Infinity}if(n>85){twoN=n*n;threeN=twoN*n;fourN=threeN*n;fiveN=fourN*n;return Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n))}n-=1;x=P[0];for(i=1;irhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$===","$real?","$raise","$new","$*","$cos","$sin","$attr_reader","$class","$==","$real","$imag","$Complex","$-@","$+","$__coerced__","$-","$nan?","$/","$conj","$abs2","$quo","$polar","$exp","$log","$>","$!=","$divmod","$**","$hypot","$atan2","$lcm","$denominator","$to_s","$numerator","$abs","$arg","$rationalize","$to_f","$to_i","$to_r","$inspect","$positive?","$zero?","$infinite?"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Complex(){}var self=$Complex=$klass($base,$super,"Complex",$Complex);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Complex_rect_1,TMP_Complex_polar_2,TMP_Complex_initialize_3,TMP_Complex_coerce_4,TMP_Complex_$eq$eq_5,TMP_Complex_$$_6,TMP_Complex_$_7,TMP_Complex_$_8,TMP_Complex_$_9,TMP_Complex_$_10,TMP_Complex_$$_11,TMP_Complex_abs_12,TMP_Complex_abs2_13,TMP_Complex_angle_14,TMP_Complex_conj_15,TMP_Complex_denominator_16,TMP_Complex_eql$q_17,TMP_Complex_fdiv_18,TMP_Complex_hash_19,TMP_Complex_inspect_20,TMP_Complex_numerator_21,TMP_Complex_polar_22,TMP_Complex_rationalize_23,TMP_Complex_real$q_24,TMP_Complex_rect_25,TMP_Complex_to_f_26,TMP_Complex_to_i_27,TMP_Complex_to_r_28,TMP_Complex_to_s_29;def.real=def.imag=nil;Opal.defs(self,"$rect",TMP_Complex_rect_1=function $$rect(real,imag){var $a,$b,$c,self=this;if(imag==null){imag=0}if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Numeric")["$==="](real))?real["$real?"]():$c)?Opal.const_get_relative($nesting,"Numeric")["$==="](imag):$b)?imag["$real?"]():$a)){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not a real")}return self.$new(real,imag)},TMP_Complex_rect_1.$$arity=-2);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return Opal.alias(self,"rectangular","rect")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$polar",TMP_Complex_polar_2=function $$polar(r,theta){var $a,$b,$c,self=this;if(theta==null){theta=0}if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Numeric")["$==="](r))?r["$real?"]():$c)?Opal.const_get_relative($nesting,"Numeric")["$==="](theta):$b)?theta["$real?"]():$a)){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not a real")}return self.$new($rb_times(r,Opal.const_get_relative($nesting,"Math").$cos(theta)),$rb_times(r,Opal.const_get_relative($nesting,"Math").$sin(theta)))},TMP_Complex_polar_2.$$arity=-2);self.$attr_reader("real","imag");Opal.defn(self,"$initialize",TMP_Complex_initialize_3=function $$initialize(real,imag){var self=this;if(imag==null){imag=0}self.real=real;return self.imag=imag},TMP_Complex_initialize_3.$$arity=-2);Opal.defn(self,"$coerce",TMP_Complex_coerce_4=function $$coerce(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return[other,self]}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return[Opal.const_get_relative($nesting,"Complex").$new(other,0),self]}else{return self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}},TMP_Complex_coerce_4.$$arity=1);Opal.defn(self,"$==",TMP_Complex_$eq$eq_5=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return($a=self.real["$=="](other.$real()))?self.imag["$=="](other.$imag()):self.real["$=="](other.$real())}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return($a=self.real["$=="](other))?self.imag["$=="](0):self.real["$=="](other)}else{return other["$=="](self)}},TMP_Complex_$eq$eq_5.$$arity=1);Opal.defn(self,"$-@",TMP_Complex_$$_6=function(){var self=this;return self.$Complex(self.real["$-@"](),self.imag["$-@"]())},TMP_Complex_$$_6.$$arity=0);Opal.defn(self,"$+",TMP_Complex_$_7=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_plus(self.real,other.$real()),$rb_plus(self.imag,other.$imag()))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_plus(self.real,other),self.imag)}else{return self.$__coerced__("+",other)}},TMP_Complex_$_7.$$arity=1);Opal.defn(self,"$-",TMP_Complex_$_8=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus(self.real,other.$real()),$rb_minus(self.imag,other.$imag()))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_minus(self.real,other),self.imag)}else{return self.$__coerced__("-",other)}},TMP_Complex_$_8.$$arity=1);Opal.defn(self,"$*",TMP_Complex_$_9=function(other){var $a,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){return self.$Complex($rb_minus($rb_times(self.real,other.$real()),$rb_times(self.imag,other.$imag())),$rb_plus($rb_times(self.real,other.$imag()),$rb_times(self.imag,other.$real())))}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex($rb_times(self.real,other),$rb_times(self.imag,other))}else{return self.$__coerced__("*",other)}},TMP_Complex_$_9.$$arity=1);Opal.defn(self,"$/",TMP_Complex_$_10=function(other){var $a,$b,$c,$d,self=this;if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=Opal.const_get_relative($nesting,"Number")["$==="](self.real))?self.real["$nan?"]():$d)?$c:$truthy($d=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$d)?$b:$truthy($c=Opal.const_get_relative($nesting,"Number")["$==="](other.$real()))?other.$real()["$nan?"]():$c)?$a:$truthy($b=Opal.const_get_relative($nesting,"Number")["$==="](other.$imag()))?other.$imag()["$nan?"]():$b)){return Opal.const_get_relative($nesting,"Complex").$new(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"NAN"),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"NAN"))}else{return $rb_divide($rb_times(self,other.$conj()),other.$abs2())}}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](other))?other["$real?"]():$a)){return self.$Complex(self.real.$quo(other),self.imag.$quo(other))}else{return self.$__coerced__("/",other)}},TMP_Complex_$_10.$$arity=1);Opal.defn(self,"$**",TMP_Complex_$$_11=function(other){var $a,$b,$c,$d,self=this,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if(other["$=="](0)){return Opal.const_get_relative($nesting,"Complex").$new(1,0)}if($truthy(Opal.const_get_relative($nesting,"Complex")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;ore=other.$real();oim=other.$imag();nr=Opal.const_get_relative($nesting,"Math").$exp($rb_minus($rb_times(ore,Opal.const_get_relative($nesting,"Math").$log(r)),$rb_times(oim,theta)));ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,Opal.const_get_relative($nesting,"Math").$log(r)));return Opal.const_get_relative($nesting,"Complex").$polar(nr,ntheta)}else if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](other))){if($truthy($rb_gt(other,0))){x=self;z=x;n=$rb_minus(other,1);while($truthy(n["$!="](0))){while($truthy(($d=n.$divmod(2),$c=Opal.to_ary($d),div=$c[0]==null?nil:$c[0],mod=$c[1]==null?nil:$c[1],$d,mod["$=="](0)))){x=self.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag()));n=div}z=$rb_times(z,x);n=$rb_minus(n,1)}return z}else{return $rb_divide(Opal.const_get_relative($nesting,"Rational").$new(1,1),self)["$**"](other["$-@"]())}}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Float")["$==="](other))?$a:Opal.const_get_relative($nesting,"Rational")["$==="](other))){$b=self.$polar(),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],theta=$a[1]==null?nil:$a[1],$b;return Opal.const_get_relative($nesting,"Complex").$polar(r["$**"](other),$rb_times(theta,other))}else{return self.$__coerced__("**",other)}},TMP_Complex_$$_11.$$arity=1);Opal.defn(self,"$abs",TMP_Complex_abs_12=function $$abs(){var self=this;return Opal.const_get_relative($nesting,"Math").$hypot(self.real,self.imag)},TMP_Complex_abs_12.$$arity=0);Opal.defn(self,"$abs2",TMP_Complex_abs2_13=function $$abs2(){var self=this;return $rb_plus($rb_times(self.real,self.real),$rb_times(self.imag,self.imag))},TMP_Complex_abs2_13.$$arity=0);Opal.defn(self,"$angle",TMP_Complex_angle_14=function $$angle(){var self=this;return Opal.const_get_relative($nesting,"Math").$atan2(self.imag,self.real)},TMP_Complex_angle_14.$$arity=0);Opal.alias(self,"arg","angle");Opal.defn(self,"$conj",TMP_Complex_conj_15=function $$conj(){var self=this;return self.$Complex(self.real,self.imag["$-@"]())},TMP_Complex_conj_15.$$arity=0);Opal.alias(self,"conjugate","conj");Opal.defn(self,"$denominator",TMP_Complex_denominator_16=function $$denominator(){var self=this;return self.real.$denominator().$lcm(self.imag.$denominator())},TMP_Complex_denominator_16.$$arity=0);Opal.alias(self,"divide","/");Opal.defn(self,"$eql?",TMP_Complex_eql$q_17=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Complex")["$==="](other))?self.real.$class()["$=="](self.imag.$class()):$b)?self["$=="](other):$a},TMP_Complex_eql$q_17.$$arity=1);Opal.defn(self,"$fdiv",TMP_Complex_fdiv_18=function $$fdiv(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Numeric")["$==="](other))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+other.$class()+" can't be coerced into Complex")}return $rb_divide(self,other)},TMP_Complex_fdiv_18.$$arity=1);Opal.defn(self,"$hash",TMP_Complex_hash_19=function $$hash(){var self=this;return""+"Complex:"+self.real+":"+self.imag},TMP_Complex_hash_19.$$arity=0);Opal.alias(self,"imaginary","imag");Opal.defn(self,"$inspect",TMP_Complex_inspect_20=function $$inspect(){var self=this;return""+"("+self.$to_s()+")"},TMP_Complex_inspect_20.$$arity=0);Opal.alias(self,"magnitude","abs");Opal.udef(self,"$"+"negative?");Opal.defn(self,"$numerator",TMP_Complex_numerator_21=function $$numerator(){var self=this,d=nil;d=self.$denominator();return self.$Complex($rb_times(self.real.$numerator(),$rb_divide(d,self.real.$denominator())),$rb_times(self.imag.$numerator(),$rb_divide(d,self.imag.$denominator())))},TMP_Complex_numerator_21.$$arity=0);Opal.alias(self,"phase","arg");Opal.defn(self,"$polar",TMP_Complex_polar_22=function $$polar(){var self=this;return[self.$abs(),self.$arg()]},TMP_Complex_polar_22.$$arity=0);Opal.udef(self,"$"+"positive?");Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_Complex_rationalize_23=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if($truthy(self.imag["$!="](0))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't' convert "+self+" into Rational")}return self.$real().$rationalize(eps)},TMP_Complex_rationalize_23.$$arity=-1);Opal.defn(self,"$real?",TMP_Complex_real$q_24=function(){var self=this;return false},TMP_Complex_real$q_24.$$arity=0);Opal.defn(self,"$rect",TMP_Complex_rect_25=function $$rect(){var self=this;return[self.real,self.imag]},TMP_Complex_rect_25.$$arity=0);Opal.alias(self,"rectangular","rect");Opal.defn(self,"$to_f",TMP_Complex_to_f_26=function $$to_f(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Float")}return self.real.$to_f()},TMP_Complex_to_f_26.$$arity=0);Opal.defn(self,"$to_i",TMP_Complex_to_i_27=function $$to_i(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Integer")}return self.real.$to_i()},TMP_Complex_to_i_27.$$arity=0);Opal.defn(self,"$to_r",TMP_Complex_to_r_28=function $$to_r(){var self=this;if(self.imag["$=="](0)){}else{self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+"can't convert "+self+" into Rational")}return self.real.$to_r()},TMP_Complex_to_r_28.$$arity=0);Opal.defn(self,"$to_s",TMP_Complex_to_s_29=function $$to_s(){var $a,$b,$c,self=this,result=nil;result=self.real.$inspect();if($truthy($truthy($a=$truthy($b=$truthy($c=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?self.imag["$nan?"]():$c)?$b:self.imag["$positive?"]())?$a:self.imag["$zero?"]())){result=$rb_plus(result,"+")}else{result=$rb_plus(result,"-")}result=$rb_plus(result,self.imag.$abs().$inspect());if($truthy($truthy($a=Opal.const_get_relative($nesting,"Number")["$==="](self.imag))?$truthy($b=self.imag["$nan?"]())?$b:self.imag["$infinite?"]():$a)){result=$rb_plus(result,"*")}return $rb_plus(result,"i")},TMP_Complex_to_s_29.$$arity=0);return Opal.const_set($nesting[0],"I",self.$new(0,1))})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Complex_30;Opal.defn(self,"$Complex",TMP_Kernel_Complex_30=function $$Complex(real,imag){var self=this;if(imag==null){imag=nil}if($truthy(imag)){return Opal.const_get_relative($nesting,"Complex").$new(real,imag)}else{return Opal.const_get_relative($nesting,"Complex").$new(real,0)}},TMP_Kernel_Complex_30.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/rational"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$module=Opal.module;Opal.add_stubs(["$require","$to_i","$==","$raise","$<","$-@","$new","$gcd","$/","$nil?","$===","$reduce","$to_r","$equal?","$!","$coerce_to!","$attr_reader","$to_f","$numerator","$denominator","$<=>","$-","$*","$__coerced__","$+","$Rational","$>","$**","$abs","$ceil","$with_precision","$floor","$to_s","$<=","$truncate","$send","$convert"]);self.$require("corelib/numeric");(function($base,$super,$parent_nesting){function $Rational(){}var self=$Rational=$klass($base,$super,"Rational",$Rational);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rational_reduce_1,TMP_Rational_convert_2,TMP_Rational_initialize_3,TMP_Rational_numerator_4,TMP_Rational_denominator_5,TMP_Rational_coerce_6,TMP_Rational_$eq$eq_7,TMP_Rational_$lt$eq$gt_8,TMP_Rational_$_9,TMP_Rational_$_10,TMP_Rational_$_11,TMP_Rational_$_12,TMP_Rational_$$_13,TMP_Rational_abs_14,TMP_Rational_ceil_15,TMP_Rational_floor_16,TMP_Rational_hash_17,TMP_Rational_inspect_18,TMP_Rational_rationalize_19,TMP_Rational_round_20,TMP_Rational_to_f_21,TMP_Rational_to_i_22,TMP_Rational_to_r_23,TMP_Rational_to_s_24,TMP_Rational_truncate_25,TMP_Rational_with_precision_26;def.num=def.den=nil;Opal.defs(self,"$reduce",TMP_Rational_reduce_1=function $$reduce(num,den){var self=this,gcd=nil;num=num.$to_i();den=den.$to_i();if(den["$=="](0)){self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else if($truthy($rb_lt(den,0))){num=num["$-@"]();den=den["$-@"]()}else if(den["$=="](1)){return self.$new(num,den)}gcd=num.$gcd(den);return self.$new($rb_divide(num,gcd),$rb_divide(den,gcd))},TMP_Rational_reduce_1.$$arity=2);Opal.defs(self,"$convert",TMP_Rational_convert_2=function $$convert(num,den){var $a,$b,self=this;if($truthy($truthy($a=num["$nil?"]())?$a:den["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"cannot convert nil into Rational")}if($truthy($truthy($a=Opal.const_get_relative($nesting,"Integer")["$==="](num))?Opal.const_get_relative($nesting,"Integer")["$==="](den):$a)){return self.$reduce(num,den)}if($truthy($truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](num))?$b:Opal.const_get_relative($nesting,"String")["$==="](num))?$a:Opal.const_get_relative($nesting,"Complex")["$==="](num))){num=num.$to_r()}if($truthy($truthy($a=$truthy($b=Opal.const_get_relative($nesting,"Float")["$==="](den))?$b:Opal.const_get_relative($nesting,"String")["$==="](den))?$a:Opal.const_get_relative($nesting,"Complex")["$==="](den))){den=den.$to_r()}if($truthy($truthy($a=den["$equal?"](1))?Opal.const_get_relative($nesting,"Integer")["$==="](num)["$!"]():$a)){return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](num,Opal.const_get_relative($nesting,"Rational"),"to_r")}else if($truthy($truthy($a=Opal.const_get_relative($nesting,"Numeric")["$==="](num))?Opal.const_get_relative($nesting,"Numeric")["$==="](den):$a)){return $rb_divide(num,den)}else{return self.$reduce(num,den)}},TMP_Rational_convert_2.$$arity=2);self.$attr_reader("numerator","denominator");Opal.defn(self,"$initialize",TMP_Rational_initialize_3=function $$initialize(num,den){var self=this;self.num=num;return self.den=den},TMP_Rational_initialize_3.$$arity=2);Opal.defn(self,"$numerator",TMP_Rational_numerator_4=function $$numerator(){var self=this;return self.num},TMP_Rational_numerator_4.$$arity=0);Opal.defn(self,"$denominator",TMP_Rational_denominator_5=function $$denominator(){var self=this;return self.den},TMP_Rational_denominator_5.$$arity=0);Opal.defn(self,"$coerce",TMP_Rational_coerce_6=function $$coerce(other){var self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return[other,self]}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return[other.$to_r(),self]}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return[other,self.$to_f()]}else{return nil}}()},TMP_Rational_coerce_6.$$arity=1);Opal.defn(self,"$==",TMP_Rational_$eq$eq_7=function(other){var $a,self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return($a=self.num["$=="](other.$numerator()))?self.den["$=="](other.$denominator()):self.num["$=="](other.$numerator())}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return($a=self.num["$=="](other))?self.den["$=="](1):self.num["$=="](other)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$=="](other)}else{return other["$=="](self)}}()},TMP_Rational_$eq$eq_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Rational_$lt$eq$gt_8=function(other){var self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){return $rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()))["$<=>"](0)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return $rb_minus(self.num,$rb_times(self.den,other))["$<=>"](0)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$<=>"](other)}else{return self.$__coerced__("<=>",other)}}()},TMP_Rational_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$+",TMP_Rational_$_9=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_plus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_plus(self.num,$rb_times(other,self.den)),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_plus(self.$to_f(),other)}else{return self.$__coerced__("+",other)}}()},TMP_Rational_$_9.$$arity=1);Opal.defn(self,"$-",TMP_Rational_$_10=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_minus($rb_times(self.num,other.$denominator()),$rb_times(self.den,other.$numerator()));den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_minus(self.num,$rb_times(other,self.den)),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_minus(self.$to_f(),other)}else{return self.$__coerced__("-",other)}}()},TMP_Rational_$_10.$$arity=1);Opal.defn(self,"$*",TMP_Rational_$_11=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$numerator());den=$rb_times(self.den,other.$denominator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){return self.$Rational($rb_times(self.num,other),self.den)}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_times(self.$to_f(),other)}else{return self.$__coerced__("*",other)}}()},TMP_Rational_$_11.$$arity=1);Opal.defn(self,"$/",TMP_Rational_$_12=function(other){var self=this,$case=nil,num=nil,den=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){num=$rb_times(self.num,other.$denominator());den=$rb_times(self.den,other.$numerator());return self.$Rational(num,den)}else if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){if(other["$=="](0)){return $rb_divide(self.$to_f(),0)}else{return self.$Rational(self.num,$rb_times(self.den,other))}}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return $rb_divide(self.$to_f(),other)}else{return self.$__coerced__("/",other)}}()},TMP_Rational_$_12.$$arity=1);Opal.defn(self,"$**",TMP_Rational_$$_13=function(other){var $a,self=this,$case=nil;return function(){$case=other;if(Opal.const_get_relative($nesting,"Integer")["$==="]($case)){if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Float"),"INFINITY")}else if($truthy($rb_gt(other,0))){return self.$Rational(self.num["$**"](other),self.den["$**"](other))}else if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other["$-@"]()),self.num["$**"](other["$-@"]()))}else{return self.$Rational(1,1)}}else if(Opal.const_get_relative($nesting,"Float")["$==="]($case)){return self.$to_f()["$**"](other)}else if(Opal.const_get_relative($nesting,"Rational")["$==="]($case)){if(other["$=="](0)){return self.$Rational(1,1)}else if(other.$denominator()["$=="](1)){if($truthy($rb_lt(other,0))){return self.$Rational(self.den["$**"](other.$numerator().$abs()),self.num["$**"](other.$numerator().$abs()))}else{return self.$Rational(self.num["$**"](other.$numerator()),self.den["$**"](other.$numerator()))}}else if($truthy(($a=self["$=="](0))?$rb_lt(other,0):self["$=="](0))){return self.$raise(Opal.const_get_relative($nesting,"ZeroDivisionError"),"divided by 0")}else{return self.$to_f()["$**"](other)}}else{return self.$__coerced__("**",other)}}()},TMP_Rational_$$_13.$$arity=1);Opal.defn(self,"$abs",TMP_Rational_abs_14=function $$abs(){var self=this;return self.$Rational(self.num.$abs(),self.den.$abs())},TMP_Rational_abs_14.$$arity=0);Opal.defn(self,"$ceil",TMP_Rational_ceil_15=function $$ceil(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$ceil()}else{return self.$with_precision("ceil",precision)}},TMP_Rational_ceil_15.$$arity=-1);Opal.alias(self,"divide","/");Opal.defn(self,"$floor",TMP_Rational_floor_16=function $$floor(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){return $rb_divide(self.num["$-@"](),self.den)["$-@"]().$floor()}else{return self.$with_precision("floor",precision)}},TMP_Rational_floor_16.$$arity=-1);Opal.defn(self,"$hash",TMP_Rational_hash_17=function $$hash(){var self=this;return""+"Rational:"+self.num+":"+self.den},TMP_Rational_hash_17.$$arity=0);Opal.defn(self,"$inspect",TMP_Rational_inspect_18=function $$inspect(){var self=this;return""+"("+self.$to_s()+")"},TMP_Rational_inspect_18.$$arity=0);Opal.alias(self,"quo","/");Opal.defn(self,"$rationalize",TMP_Rational_rationalize_19=function $$rationalize(eps){var self=this;if(arguments.length>1){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"wrong number of arguments ("+arguments.length+" for 0..1)")}if(eps==null){return self}var e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e);var p0=0,p1=1,q0=1,q1=0,p2,q2;var c,k,t;while(true){c=a.$ceil();if($rb_le(c,b)){break}k=c-1;p2=k*p1+p0;q2=k*q1+q0;t=$rb_divide(1,$rb_minus(b,k));b=$rb_divide(1,$rb_minus(a,k));a=t;p0=p1;q0=q1;p1=p2;q1=q2}return self.$Rational(c*p1+p0,c*q1+q0)},TMP_Rational_rationalize_19.$$arity=-1);Opal.defn(self,"$round",TMP_Rational_round_20=function $$round(precision){var self=this,num=nil,den=nil,approx=nil;if(precision==null){precision=0}if(precision["$=="](0)){}else{return self.$with_precision("round",precision)}if(self.num["$=="](0)){return 0}if(self.den["$=="](1)){return self.num}num=$rb_plus($rb_times(self.num.$abs(),2),self.den);den=$rb_times(self.den,2);approx=$rb_divide(num,den).$truncate();if($truthy($rb_lt(self.num,0))){return approx["$-@"]()}else{return approx}},TMP_Rational_round_20.$$arity=-1);Opal.defn(self,"$to_f",TMP_Rational_to_f_21=function $$to_f(){var self=this;return $rb_divide(self.num,self.den)},TMP_Rational_to_f_21.$$arity=0);Opal.defn(self,"$to_i",TMP_Rational_to_i_22=function $$to_i(){var self=this;return self.$truncate()},TMP_Rational_to_i_22.$$arity=0);Opal.defn(self,"$to_r",TMP_Rational_to_r_23=function $$to_r(){var self=this;return self},TMP_Rational_to_r_23.$$arity=0);Opal.defn(self,"$to_s",TMP_Rational_to_s_24=function $$to_s(){var self=this;return""+self.num+"/"+self.den},TMP_Rational_to_s_24.$$arity=0);Opal.defn(self,"$truncate",TMP_Rational_truncate_25=function $$truncate(precision){var self=this;if(precision==null){precision=0}if(precision["$=="](0)){if($truthy($rb_lt(self.num,0))){return self.$ceil()}else{return self.$floor()}}else{return self.$with_precision("truncate",precision)}},TMP_Rational_truncate_25.$$arity=-1);return(Opal.defn(self,"$with_precision",TMP_Rational_with_precision_26=function $$with_precision(method,precision){var self=this,p=nil,s=nil;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](precision))){}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),"not an Integer")}p=10["$**"](precision);s=$rb_times(self,p);if($truthy($rb_lt(precision,1))){return $rb_divide(s.$send(method),p).$to_i()}else{return self.$Rational(s.$send(method),p)}},TMP_Rational_with_precision_26.$$arity=2),nil)&&"with_precision"})($nesting[0],Opal.const_get_relative($nesting,"Numeric"),$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Rational_27;Opal.defn(self,"$Rational",TMP_Kernel_Rational_27=function $$Rational(numerator,denominator){var self=this;if(denominator==null){denominator=1}return Opal.const_get_relative($nesting,"Rational").$convert(numerator,denominator)},TMP_Kernel_Rational_27.$$arity=-2)}($nesting[0],$nesting)};Opal.modules["corelib/time"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs","$to_f","$nil?","$>","$<","$strftime","$year","$month","$day","$+","$round","$/","$-","$copy_instance_variables","$initialize_dup","$is_a?","$zero?","$wday","$utc?","$mon","$yday","$hour","$min","$sec","$rjust","$ljust","$zone","$to_s","$[]","$cweek_cyear","$isdst","$<=","$!=","$==","$ceil"]);self.$require("corelib/comparable");return function($base,$super,$parent_nesting){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Time_at_1,TMP_Time_new_2,TMP_Time_local_3,TMP_Time_gm_4,TMP_Time_now_5,TMP_Time_$_6,TMP_Time_$_7,TMP_Time_$lt$eq$gt_8,TMP_Time_$eq$eq_9,TMP_Time_asctime_10,TMP_Time_day_11,TMP_Time_yday_12,TMP_Time_isdst_13,TMP_Time_dup_14,TMP_Time_eql$q_15,TMP_Time_friday$q_16,TMP_Time_hash_17,TMP_Time_hour_18,TMP_Time_inspect_19,TMP_Time_min_20,TMP_Time_mon_21,TMP_Time_monday$q_22,TMP_Time_saturday$q_23,TMP_Time_sec_24,TMP_Time_succ_25,TMP_Time_usec_26,TMP_Time_zone_27,TMP_Time_getgm_28,TMP_Time_gmtime_29,TMP_Time_gmt$q_30,TMP_Time_gmt_offset_31,TMP_Time_strftime_32,TMP_Time_sunday$q_33,TMP_Time_thursday$q_34,TMP_Time_to_a_35,TMP_Time_to_f_36,TMP_Time_to_i_37,TMP_Time_tuesday$q_38,TMP_Time_wday_39,TMP_Time_wednesday$q_40,TMP_Time_year_41,TMP_Time_cweek_cyear_42;self.$include(Opal.const_get_relative($nesting,"Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];Opal.defs(self,"$at",TMP_Time_at_1=function $$at(seconds,frac){var self=this;var result;if(Opal.const_get_relative($nesting,"Time")["$==="](seconds)){if(frac!==undefined){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"can't convert Time into an exact number")}result=new Date(seconds.getTime());result.is_utc=seconds.is_utc;return result}if(!seconds.$$is_number){seconds=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](seconds,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(frac===undefined){return new Date(seconds*1e3)}if(!frac.$$is_number){frac=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](frac,Opal.const_get_relative($nesting,"Integer"),"to_int")}return new Date(seconds*1e3+frac/1e3)},TMP_Time_at_1.$$arity=-2);function time_params(year,month,day,hour,min,sec){if(year.$$is_string){year=parseInt(year,10)}else{year=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](year,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(month===nil){month=1}else if(!month.$$is_number){if(month["$respond_to?"]("to_str")){month=month.$to_str();switch(month.toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}}else{month=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](month,Opal.const_get_relative($nesting,"Integer"),"to_int")}}if(month<1||month>12){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"month out of range: "+month)}month=month-1;if(day===nil){day=1}else if(day.$$is_string){day=parseInt(day,10)}else{day=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](day,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(day<1||day>31){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"day out of range: "+day)}if(hour===nil){hour=0}else if(hour.$$is_string){hour=parseInt(hour,10)}else{hour=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](hour,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(hour<0||hour>24){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"hour out of range: "+hour)}if(min===nil){min=0}else if(min.$$is_string){min=parseInt(min,10)}else{min=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](min,Opal.const_get_relative($nesting,"Integer"),"to_int")}if(min<0||min>59){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"min out of range: "+min)}if(sec===nil){sec=0}else if(!sec.$$is_number){if(sec.$$is_string){sec=parseInt(sec,10)}else{sec=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](sec,Opal.const_get_relative($nesting,"Integer"),"to_int")}}if(sec<0||sec>60){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"sec out of range: "+sec)}return[year,month,day,hour,min,sec]}Opal.defs(self,"$new",TMP_Time_new_2=function(year,month,day,hour,min,sec,utc_offset){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(utc_offset==null){utc_offset=nil}var args,result;if(year===undefined){return new Date}if(utc_offset!==nil){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time")}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_Time_new_2.$$arity=-1);Opal.defs(self,"$local",TMP_Time_local_3=function $$local(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(year,month,day,hour,min,0,sec*1e3);if(year<100){result.setFullYear(year)}return result},TMP_Time_local_3.$$arity=-2);Opal.defs(self,"$gm",TMP_Time_gm_4=function $$gm(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(min==null){min=nil}if(sec==null){sec=nil}if(millisecond==null){millisecond=nil}if(_dummy1==null){_dummy1=nil}if(_dummy2==null){_dummy2=nil}if(_dummy3==null){_dummy3=nil}var args,result;if(arguments.length===10){args=$slice.call(arguments);year=args[5];month=args[4];day=args[3];hour=args[2];min=args[1];sec=args[0]}args=time_params(year,month,day,hour,min,sec);year=args[0];month=args[1];day=args[2];hour=args[3];min=args[4];sec=args[5];result=new Date(Date.UTC(year,month,day,hour,min,0,sec*1e3));if(year<100){result.setUTCFullYear(year)}result.is_utc=true;return result},TMP_Time_gm_4.$$arity=-2);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"mktime","local");return Opal.alias(self,"utc","gm")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$now",TMP_Time_now_5=function $$now(){var self=this;return self.$new()},TMP_Time_now_5.$$arity=0);Opal.defn(self,"$+",TMP_Time_$_6=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"time + time?")}if(!other.$$is_number){other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()+other*1e3);result.is_utc=self.is_utc;return result},TMP_Time_$_6.$$arity=1);Opal.defn(self,"$-",TMP_Time_$_7=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){return(self.getTime()-other.getTime())/1e3}if(!other.$$is_number){other=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](other,Opal.const_get_relative($nesting,"Integer"),"to_int")}var result=new Date(self.getTime()-other*1e3);result.is_utc=self.is_utc;return result},TMP_Time_$_7.$$arity=1);Opal.defn(self,"$<=>",TMP_Time_$lt$eq$gt_8=function(other){var self=this,r=nil;if($truthy(Opal.const_get_relative($nesting,"Time")["$==="](other))){return self.$to_f()["$<=>"](other.$to_f())}else{r=other["$<=>"](self);if($truthy(r["$nil?"]())){return nil}else if($truthy($rb_gt(r,0))){return-1}else if($truthy($rb_lt(r,0))){return 1}else{return 0}}},TMP_Time_$lt$eq$gt_8.$$arity=1);Opal.defn(self,"$==",TMP_Time_$eq$eq_9=function(other){var $a,self=this;return $truthy($a=Opal.const_get_relative($nesting,"Time")["$==="](other))?self.$to_f()===other.$to_f():$a},TMP_Time_$eq$eq_9.$$arity=1);Opal.defn(self,"$asctime",TMP_Time_asctime_10=function $$asctime(){var self=this;return self.$strftime("%a %b %e %H:%M:%S %Y")},TMP_Time_asctime_10.$$arity=0);Opal.alias(self,"ctime","asctime");Opal.defn(self,"$day",TMP_Time_day_11=function $$day(){var self=this;return self.is_utc?self.getUTCDate():self.getDate()},TMP_Time_day_11.$$arity=0);Opal.defn(self,"$yday",TMP_Time_yday_12=function $$yday(){var self=this,start_of_year=nil,start_of_day=nil,one_day=nil;start_of_year=Opal.const_get_relative($nesting,"Time").$new(self.$year()).$to_i();start_of_day=Opal.const_get_relative($nesting,"Time").$new(self.$year(),self.$month(),self.$day()).$to_i();one_day=86400;return $rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),one_day).$round(),1)},TMP_Time_yday_12.$$arity=0);Opal.defn(self,"$isdst",TMP_Time_isdst_13=function $$isdst(){var self=this;var jan=new Date(self.getFullYear(),0,1),jul=new Date(self.getFullYear(),6,1);return self.getTimezoneOffset()"](other)["$zero?"]():$a},TMP_Time_eql$q_15.$$arity=1);Opal.defn(self,"$friday?",TMP_Time_friday$q_16=function(){var self=this;return self.$wday()==5},TMP_Time_friday$q_16.$$arity=0);Opal.defn(self,"$hash",TMP_Time_hash_17=function $$hash(){var self=this;return"Time:"+self.getTime()},TMP_Time_hash_17.$$arity=0);Opal.defn(self,"$hour",TMP_Time_hour_18=function $$hour(){var self=this;return self.is_utc?self.getUTCHours():self.getHours()},TMP_Time_hour_18.$$arity=0);Opal.defn(self,"$inspect",TMP_Time_inspect_19=function $$inspect(){var self=this;if($truthy(self["$utc?"]())){return self.$strftime("%Y-%m-%d %H:%M:%S UTC")}else{return self.$strftime("%Y-%m-%d %H:%M:%S %z")}},TMP_Time_inspect_19.$$arity=0);Opal.alias(self,"mday","day");Opal.defn(self,"$min",TMP_Time_min_20=function $$min(){var self=this;return self.is_utc?self.getUTCMinutes():self.getMinutes()},TMP_Time_min_20.$$arity=0);Opal.defn(self,"$mon",TMP_Time_mon_21=function $$mon(){var self=this;return(self.is_utc?self.getUTCMonth():self.getMonth())+1},TMP_Time_mon_21.$$arity=0);Opal.defn(self,"$monday?",TMP_Time_monday$q_22=function(){var self=this;return self.$wday()==1},TMP_Time_monday$q_22.$$arity=0);Opal.alias(self,"month","mon");Opal.defn(self,"$saturday?",TMP_Time_saturday$q_23=function(){var self=this;return self.$wday()==6},TMP_Time_saturday$q_23.$$arity=0);Opal.defn(self,"$sec",TMP_Time_sec_24=function $$sec(){var self=this;return self.is_utc?self.getUTCSeconds():self.getSeconds()},TMP_Time_sec_24.$$arity=0);Opal.defn(self,"$succ",TMP_Time_succ_25=function $$succ(){var self=this;var result=new Date(self.getTime()+1e3);result.is_utc=self.is_utc;return result},TMP_Time_succ_25.$$arity=0);Opal.defn(self,"$usec",TMP_Time_usec_26=function $$usec(){var self=this;return self.getMilliseconds()*1e3},TMP_Time_usec_26.$$arity=0);Opal.defn(self,"$zone",TMP_Time_zone_27=function $$zone(){var self=this;var string=self.toString(),result;if(string.indexOf("(")==-1){result=string.match(/[A-Z]{3,4}/)[0]}else{result=string.match(/\((.+)\)(?:\s|$)/)[1]}if(result=="GMT"&&/(GMT\W*\d{4})/.test(string)){return RegExp.$1}else{return result}},TMP_Time_zone_27.$$arity=0);Opal.defn(self,"$getgm",TMP_Time_getgm_28=function $$getgm(){var self=this;var result=new Date(self.getTime());result.is_utc=true;return result},TMP_Time_getgm_28.$$arity=0);Opal.alias(self,"getutc","getgm");Opal.defn(self,"$gmtime",TMP_Time_gmtime_29=function $$gmtime(){var self=this;self.is_utc=true;return self},TMP_Time_gmtime_29.$$arity=0);Opal.alias(self,"utc","gmtime");Opal.defn(self,"$gmt?",TMP_Time_gmt$q_30=function(){var self=this;return self.is_utc===true},TMP_Time_gmt$q_30.$$arity=0);Opal.defn(self,"$gmt_offset",TMP_Time_gmt_offset_31=function $$gmt_offset(){var self=this;return-self.getTimezoneOffset()*60},TMP_Time_gmt_offset_31.$$arity=0);Opal.defn(self,"$strftime",TMP_Time_strftime_32=function $$strftime(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,function(full,flags,width,_,conv){var result="",zero=flags.indexOf("0")!==-1,pad=flags.indexOf("-")===-1,blank=flags.indexOf("_")!==-1,upcase=flags.indexOf("^")!==-1,invert=flags.indexOf("#")!==-1,colons=(flags.match(":")||[]).length;width=parseInt(width,10);if(zero&&blank){if(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank;result+=self.$min();break;case"S":zero=!blank;result+=self.$sec();break;case"L":zero=!blank;width=isNaN(width)?3:width;result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width;result+=self.getMilliseconds().toString().$rjust(3,"0");result=result.$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-";result+=hours<10?"0":"";result+=hours;if(colons>0){result+=":"}result+=minutes<10?"0":"";result+=minutes;if(colons>1){result+=":00"}break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,false));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}if(upcase){result=result.toUpperCase()}if(invert){result=result.replace(/[A-Z]/,function(c){c.toLowerCase()}).replace(/[a-z]/,function(c){c.toUpperCase()})}if(pad&&(zero||blank)){result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")}return result})},TMP_Time_strftime_32.$$arity=1);Opal.defn(self,"$sunday?",TMP_Time_sunday$q_33=function(){var self=this;return self.$wday()==0},TMP_Time_sunday$q_33.$$arity=0);Opal.defn(self,"$thursday?",TMP_Time_thursday$q_34=function(){var self=this;return self.$wday()==4},TMP_Time_thursday$q_34.$$arity=0);Opal.defn(self,"$to_a",TMP_Time_to_a_35=function $$to_a(){var self=this;return[self.$sec(),self.$min(),self.$hour(),self.$day(),self.$month(),self.$year(),self.$wday(),self.$yday(),self.$isdst(),self.$zone()]},TMP_Time_to_a_35.$$arity=0);Opal.defn(self,"$to_f",TMP_Time_to_f_36=function $$to_f(){var self=this;return self.getTime()/1e3},TMP_Time_to_f_36.$$arity=0);Opal.defn(self,"$to_i",TMP_Time_to_i_37=function $$to_i(){var self=this;return parseInt(self.getTime()/1e3,10)},TMP_Time_to_i_37.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$tuesday?",TMP_Time_tuesday$q_38=function(){var self=this;return self.$wday()==2},TMP_Time_tuesday$q_38.$$arity=0);Opal.alias(self,"tv_sec","to_i");Opal.alias(self,"tv_usec","usec");Opal.alias(self,"utc?","gmt?");Opal.alias(self,"gmtoff","gmt_offset");Opal.alias(self,"utc_offset","gmt_offset");Opal.defn(self,"$wday",TMP_Time_wday_39=function $$wday(){var self=this;return self.is_utc?self.getUTCDay():self.getDay()},TMP_Time_wday_39.$$arity=0);Opal.defn(self,"$wednesday?",TMP_Time_wednesday$q_40=function(){var self=this;return self.$wday()==3},TMP_Time_wednesday$q_40.$$arity=0);Opal.defn(self,"$year",TMP_Time_year_41=function $$year(){var self=this;return self.is_utc?self.getUTCFullYear():self.getFullYear()},TMP_Time_year_41.$$arity=0);return(Opal.defn(self,"$cweek_cyear",TMP_Time_cweek_cyear_42=function $$cweek_cyear(){var $a,self=this,jan01=nil,jan01_wday=nil,first_monday=nil,year=nil,offset=nil,week=nil,dec31=nil,dec31_wday=nil;jan01=Opal.const_get_relative($nesting,"Time").$new(self.$year(),1,1);jan01_wday=jan01.$wday();first_monday=0;year=self.$year();if($truthy($truthy($a=$rb_le(jan01_wday,4))?jan01_wday["$!="](0):$a)){offset=$rb_minus(jan01_wday,1)}else{offset=$rb_minus($rb_minus(jan01_wday,7),1);if(offset["$=="](-8)){offset=-1}}week=$rb_divide($rb_plus(self.$yday(),offset),7).$ceil();if($truthy($rb_le(week,0))){return Opal.const_get_relative($nesting,"Time").$new($rb_minus(self.$year(),1),12,31).$cweek_cyear()}else if(week["$=="](53)){dec31=Opal.const_get_relative($nesting,"Time").$new(self.$year(),12,31);dec31_wday=dec31.$wday();if($truthy($truthy($a=$rb_le(dec31_wday,3))?dec31_wday["$!="](0):$a)){week=1;year=$rb_plus(year,1)}}return[week,year]},TMP_Time_cweek_cyear_42.$$arity=0),nil)&&"cweek_cyear"}($nesting[0],Date,$nesting)};Opal.modules["corelib/struct"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$hash2=Opal.hash2;Opal.add_stubs(["$require","$include","$const_name!","$unshift","$map","$coerce_to!","$new","$each","$define_struct_attribute","$allocate","$initialize","$module_eval","$to_proc","$const_set","$==","$raise","$<<","$members","$define_method","$instance_eval","$>","$length","$class","$each_with_index","$[]","$[]=","$-","$hash","$===","$<","$-@","$size","$>=","$include?","$to_sym","$instance_of?","$__id__","$eql?","$enum_for","$name","$+","$join","$each_pair","$inspect","$inject","$flatten","$to_a","$respond_to?","$dig"]);self.$require("corelib/enumerable");return function($base,$super,$parent_nesting){function $Struct(){}var self=$Struct=$klass($base,$super,"Struct",$Struct);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Struct_new_1,TMP_Struct_define_struct_attribute_8,TMP_Struct_members_9,TMP_Struct_inherited_11,TMP_Struct_initialize_13,TMP_Struct_members_14,TMP_Struct_hash_15,TMP_Struct_$$_16,TMP_Struct_$$$eq_17,TMP_Struct_$eq$eq_18,TMP_Struct_eql$q_19,TMP_Struct_each_20,TMP_Struct_each_pair_23,TMP_Struct_length_26,TMP_Struct_to_a_28,TMP_Struct_inspect_30,TMP_Struct_to_h_32,TMP_Struct_values_at_34,TMP_Struct_dig_35;self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defs(self,"$new",TMP_Struct_new_1=function(const_name,$a_rest){var TMP_2,TMP_3,self=this,args,$iter=TMP_Struct_new_1.$$p,block=$iter||nil,klass=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Struct_new_1.$$p=null;if($truthy(const_name)){try{const_name=Opal.const_get_relative($nesting,"Opal")["$const_name!"](const_name)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"TypeError"),Opal.const_get_relative($nesting,"NameError")])){try{args.$unshift(const_name);const_name=nil}finally{Opal.pop_exception()}}else{throw $err}}}$send(args,"map",[],(TMP_2=function(arg){var self=TMP_2.$$s||this;if(arg==null)arg=nil;return Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](arg,Opal.const_get_relative($nesting,"String"),"to_str")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));klass=$send(Opal.const_get_relative($nesting,"Class"),"new",[self],(TMP_3=function(){var self=TMP_3.$$s||this,TMP_4;$send(args,"each",[],(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$define_struct_attribute(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_new_5;Opal.defn(self,"$new",TMP_new_5=function($a_rest){var self=this,args,instance=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}instance=self.$allocate();instance.$$data={};$send(instance,"initialize",Opal.to_a(args));return instance},TMP_new_5.$$arity=-1);return Opal.alias(self,"[]","new")}(Opal.get_singleton_class(self),$nesting)},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));if($truthy(block)){$send(klass,"module_eval",[],block.$to_proc())}if($truthy(const_name)){Opal.const_get_relative($nesting,"Struct").$const_set(const_name,klass)}return klass},TMP_Struct_new_1.$$arity=-2);Opal.defs(self,"$define_struct_attribute",TMP_Struct_define_struct_attribute_8=function $$define_struct_attribute(name){var TMP_6,TMP_7,self=this;if(self["$=="](Opal.const_get_relative($nesting,"Struct"))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"you cannot define attributes to the Struct class")}self.$members()["$<<"](name);$send(self,"define_method",[name],(TMP_6=function(){var self=TMP_6.$$s||this;return self.$$data[name]},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6));return $send(self,"define_method",[""+name+"="],(TMP_7=function(value){var self=TMP_7.$$s||this;if(value==null)value=nil;return self.$$data[name]=value},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_Struct_define_struct_attribute_8.$$arity=1);Opal.defs(self,"$members",TMP_Struct_members_9=function $$members(){var $a,self=this;if(self.members==null)self.members=nil;if(self["$=="](Opal.const_get_relative($nesting,"Struct"))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the Struct class has no members")}return self.members=$truthy($a=self.members)?$a:[]},TMP_Struct_members_9.$$arity=0);Opal.defs(self,"$inherited",TMP_Struct_inherited_11=function $$inherited(klass){var TMP_10,self=this,members=nil;if(self.members==null)self.members=nil;members=self.members;return $send(klass,"instance_eval",[],(TMP_10=function(){var self=TMP_10.$$s||this;return self.members=members},TMP_10.$$s=self,TMP_10.$$arity=0,TMP_10))},TMP_Struct_inherited_11.$$arity=1);Opal.defn(self,"$initialize",TMP_Struct_initialize_13=function $$initialize($a_rest){var TMP_12,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy($rb_gt(args.$length(),self.$class().$members().$length()))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"struct size differs")}return $send(self.$class().$members(),"each_with_index",[],(TMP_12=function(name,index){var self=TMP_12.$$s||this,$writer=nil;if(name==null)name=nil;if(index==null)index=nil;$writer=[name,args["$[]"](index)];$send(self,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12))},TMP_Struct_initialize_13.$$arity=-1);Opal.defn(self,"$members",TMP_Struct_members_14=function $$members(){var self=this;return self.$class().$members()},TMP_Struct_members_14.$$arity=0);Opal.defn(self,"$hash",TMP_Struct_hash_15=function $$hash(){var self=this;return Opal.const_get_relative($nesting,"Hash").$new(self.$$data).$hash()},TMP_Struct_hash_15.$$arity=0);Opal.defn(self,"$[]",TMP_Struct_$$_16=function(name){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy(Opal.const_get_relative($nesting,"String")["$==="](name))){if(!self.$$data.hasOwnProperty(name)){self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](name,Opal.const_get_relative($nesting,"String"),"to_str");return self.$$data[name]},TMP_Struct_$$_16.$$arity=1);Opal.defn(self,"$[]=",TMP_Struct_$$$eq_17=function(name,value){var self=this;if($truthy(Opal.const_get_relative($nesting,"Integer")["$==="](name))){if($truthy($rb_lt(name,self.$class().$members().$size()["$-@"]()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too small for struct(size:"+self.$class().$members().$size()+")")}if($truthy($rb_ge(name,self.$class().$members().$size()))){self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"offset "+name+" too large for struct(size:"+self.$class().$members().$size()+")")}name=self.$class().$members()["$[]"](name)}else if($truthy(Opal.const_get_relative($nesting,"String")["$==="](name))){if($truthy(self.$class().$members()["$include?"](name.$to_sym()))){}else{self.$raise(Opal.const_get_relative($nesting,"NameError").$new(""+"no member '"+name+"' in struct",name))}}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+name.$class()+" into Integer")}name=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](name,Opal.const_get_relative($nesting,"String"),"to_str");return self.$$data[name]=value},TMP_Struct_$$$eq_17.$$arity=2);Opal.defn(self,"$==",TMP_Struct_$eq$eq_18=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if(Opal.const_get_relative($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$=="](b)){return false}}}return true}return _eqeq(self,other)},TMP_Struct_$eq$eq_18.$$arity=1);Opal.defn(self,"$eql?",TMP_Struct_eql$q_19=function(other){var self=this;if($truthy(other["$instance_of?"](self.$class()))){}else{return false}var recursed1={},recursed2={};function _eqeq(struct,other){var key,a,b;recursed1[struct.$__id__()]=true;recursed2[other.$__id__()]=true;for(key in struct.$$data){a=struct.$$data[key];b=other.$$data[key];if(Opal.const_get_relative($nesting,"Struct")["$==="](a)){if(!recursed1.hasOwnProperty(a.$__id__())||!recursed2.hasOwnProperty(b.$__id__())){if(!_eqeq(a,b)){return false}}}else{if(!a["$eql?"](b)){return false}}}return true}return _eqeq(self,other)},TMP_Struct_eql$q_19.$$arity=1);Opal.defn(self,"$each",TMP_Struct_each_20=function $$each(){var TMP_21,TMP_22,self=this,$iter=TMP_Struct_each_20.$$p,$yield=$iter||nil;if($iter)TMP_Struct_each_20.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each"],(TMP_21=function(){var self=TMP_21.$$s||this;return self.$size()},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21))}$send(self.$class().$members(),"each",[],(TMP_22=function(name){var self=TMP_22.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,self["$[]"](name))},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22));return self},TMP_Struct_each_20.$$arity=0);Opal.defn(self,"$each_pair",TMP_Struct_each_pair_23=function $$each_pair(){var TMP_24,TMP_25,self=this,$iter=TMP_Struct_each_pair_23.$$p,$yield=$iter||nil;if($iter)TMP_Struct_each_pair_23.$$p=null;if($yield!==nil){}else{return $send(self,"enum_for",["each_pair"],(TMP_24=function(){var self=TMP_24.$$s||this;return self.$size()},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24))}$send(self.$class().$members(),"each",[],(TMP_25=function(name){var self=TMP_25.$$s||this;if(name==null)name=nil;return Opal.yield1($yield,[name,self["$[]"](name)])},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25));return self},TMP_Struct_each_pair_23.$$arity=0);Opal.defn(self,"$length",TMP_Struct_length_26=function $$length(){var self=this;return self.$class().$members().$length()},TMP_Struct_length_26.$$arity=0);Opal.alias(self,"size","length");Opal.defn(self,"$to_a",TMP_Struct_to_a_28=function $$to_a(){var TMP_27,self=this;return $send(self.$class().$members(),"map",[],(TMP_27=function(name){var self=TMP_27.$$s||this;if(name==null)name=nil;return self["$[]"](name)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27))},TMP_Struct_to_a_28.$$arity=0);Opal.alias(self,"values","to_a");Opal.defn(self,"$inspect",TMP_Struct_inspect_30=function $$inspect(){var $a,TMP_29,self=this,result=nil;result="#");return result},TMP_Struct_inspect_30.$$arity=0);Opal.alias(self,"to_s","inspect");Opal.defn(self,"$to_h",TMP_Struct_to_h_32=function $$to_h(){var TMP_31,self=this;return $send(self.$class().$members(),"inject",[$hash2([],{})],(TMP_31=function(h,name){var self=TMP_31.$$s||this,$writer=nil;if(h==null)h=nil;if(name==null)name=nil;$writer=[name,self["$[]"](name)];$send(h,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return h},TMP_31.$$s=self,TMP_31.$$arity=2,TMP_31))},TMP_Struct_to_h_32.$$arity=0);Opal.defn(self,"$values_at",TMP_Struct_values_at_34=function $$values_at($a_rest){var TMP_33,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}args=$send(args,"map",[],(TMP_33=function(arg){var self=TMP_33.$$s||this;if(arg==null)arg=nil;return arg.$$is_range?arg.$to_a():arg},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33)).$flatten();var result=[];for(var i=0,len=args.length;i=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range,$hash2=Opal.hash2,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$try_convert","$native?","$respond_to?","$to_n","$raise","$inspect","$Native","$proc","$map!","$end_with?","$define_method","$[]","$convert","$call","$to_proc","$new","$each","$native_reader","$native_writer","$extend","$is_a?","$map","$alias_method","$to_a","$_Array","$include","$method_missing","$bind","$instance_method","$slice","$-","$length","$[]=","$enum_for","$===","$>=","$<<","$each_pair","$_initialize","$name","$exiting_mid","$native_module"]);(function($base,$parent_nesting){var $Native,self=$Native=$module($base,"Native");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Native_is_a$q_1,TMP_Native_try_convert_2,TMP_Native_convert_3,TMP_Native_call_4,TMP_Native_proc_5,TMP_Native_included_19,TMP_Native_initialize_20,TMP_Native_to_n_21;Opal.defs(self,"$is_a?",TMP_Native_is_a$q_1=function(object,klass){var self=this;try{return object instanceof self.$try_convert(klass)}catch(e){return false}},TMP_Native_is_a$q_1.$$arity=2);Opal.defs(self,"$try_convert",TMP_Native_try_convert_2=function $$try_convert(value,default$){var self=this;if(default$==null){default$=nil}if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{return default$}},TMP_Native_try_convert_2.$$arity=-2);Opal.defs(self,"$convert",TMP_Native_convert_3=function $$convert(value){var self=this;if(self["$native?"](value)){return value}else if(value["$respond_to?"]("to_n")){return value.$to_n()}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+value.$inspect()+" isn't native")}},TMP_Native_convert_3.$$arity=1);Opal.defs(self,"$call",TMP_Native_call_4=function $$call(obj,key,$a_rest){var self=this,args,$iter=TMP_Native_call_4.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-2;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=2;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-2]=arguments[$arg_idx]}if($iter)TMP_Native_call_4.$$p=null;var prop=obj[key];if(prop instanceof Function){var converted=new Array(args.length);for(var i=0,l=args.length;i"},TMP_Object_inspect_41.$$arity=0),nil)&&"inspect"})(Opal.const_get_relative($nesting,"Native"),Opal.const_get_relative($nesting,"BasicObject"),$nesting);(function($base,$super,$parent_nesting){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Array_initialize_42,TMP_Array_each_43,TMP_Array_$$_44,TMP_Array_$$$eq_45,TMP_Array_last_46,TMP_Array_length_47,TMP_Array_inspect_48;def.named=def["native"]=def.get=def.block=def.set=def.length=nil;self.$include(Opal.const_get_relative($nesting,"Native"));self.$include(Opal.const_get_relative($nesting,"Enumerable"));Opal.defn(self,"$initialize",TMP_Array_initialize_42=function $$initialize(native$,options){var $a,self=this,$iter=TMP_Array_initialize_42.$$p,block=$iter||nil;if(options==null){options=$hash2([],{})}if($iter)TMP_Array_initialize_42.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Array_initialize_42,false),[native$],null);self.get=$truthy($a=options["$[]"]("get"))?$a:options["$[]"]("access");self.named=options["$[]"]("named");self.set=$truthy($a=options["$[]"]("set"))?$a:options["$[]"]("access");self.length=$truthy($a=options["$[]"]("length"))?$a:"length";self.block=block;if($truthy(self.$length()==null)){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no length found on the array-like object")}else{return nil}},TMP_Array_initialize_42.$$arity=-2);Opal.defn(self,"$each",TMP_Array_each_43=function $$each(){var self=this,$iter=TMP_Array_each_43.$$p,block=$iter||nil;if($iter)TMP_Array_each_43.$$p=null;if($truthy(block)){}else{return self.$enum_for("each")}for(var i=0,length=self.$length();i0},TMP_Input_key_down$q_6.$$arity=1);Opal.defs(self,"$key_push?",TMP_Input_key_push$q_7=function(code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_keys"])==null?nil:$a)[code]==(($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1},TMP_Input_key_push$q_7.$$arity=1);Opal.defs(self,"$key_release?",TMP_Input_key_release$q_8=function(code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_keys"])==null?nil:$a)[code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_key_release$q_8.$$arity=1);Opal.const_set($nesting[0],"ON_KEYDOWN_",function(ev){Opal.const_get_relative($nesting,"Input").$_pressing_keys()[ev.code]=($a=$Input.$$cvars["@@tick"])==null?nil:$a;ev.preventDefault();ev.stopPropagation()});Opal.const_set($nesting[0],"ON_KEYUP_",function(ev){Opal.const_get_relative($nesting,"Input").$_pressing_keys()[ev.code]=-(($a=$Input.$$cvars["@@tick"])==null?nil:$a);ev.preventDefault();ev.stopPropagation()});Opal.defs(self,"$keyevent_target=",TMP_Input_keyevent_target$eq_9=function(target){var $a,self=this;if($truthy(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a)){(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keydown",Opal.const_get_relative($nesting,"ON_KEYDOWN_"));(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).removeEventListener("keyup",Opal.const_get_relative($nesting,"ON_KEYUP_"))}Opal.class_variable_set($Input,"@@keyevent_target",target);if((($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).tagName=="CANVAS"){(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).setAttribute("tabindex",0)}(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keydown",Opal.const_get_relative($nesting,"ON_KEYDOWN_"));(($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a).addEventListener("keyup",Opal.const_get_relative($nesting,"ON_KEYUP_"))},TMP_Input_keyevent_target$eq_9.$$arity=1);Opal.defs(self,"$keyevent_target",TMP_Input_keyevent_target_10=function $$keyevent_target(){var $a,self=this;return($a=$Input.$$cvars["@@keyevent_target"])==null?nil:$a},TMP_Input_keyevent_target_10.$$arity=0);Opal.defs(self,"$_init_mouse_events",TMP_Input__init_mouse_events_11=function $$_init_mouse_events(){var $a,self=this;document.addEventListener("mousemove",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a)});document.addEventListener("mousedown",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if(ev.buttons&k){(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=($a=$Input.$$cvars["@@tick"])==null?nil:$a}}});document.addEventListener("mouseup",function(ev){(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x=ev.pageX-(($a=$Input.$$cvars["@@canvas_x"])==null?nil:$a);(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y=ev.pageY-(($a=$Input.$$cvars["@@canvas_y"])==null?nil:$a);for(var k=1;k<=16;k<<=1){if((ev.buttons&k)==0&&(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]){(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[k]=-(($a=$Input.$$cvars["@@tick"])==null?nil:$a)}}})},TMP_Input__init_mouse_events_11.$$arity=0);Opal.defs(self,"$mouse_x",TMP_Input_mouse_x_12=function $$mouse_x(){var $a,self=this;return(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).x},TMP_Input_mouse_x_12.$$arity=0);Opal.defs(self,"$mouse_y",TMP_Input_mouse_y_13=function $$mouse_y(){var $a,self=this;return(($a=$Input.$$cvars["@@mouse_info"])==null?nil:$a).y},TMP_Input_mouse_y_13.$$arity=0);(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.alias(self,"mouse_pos_x","mouse_x");return Opal.alias(self,"mouse_pos_y","mouse_y")})(Opal.get_singleton_class(self),$nesting);Opal.defs(self,"$mouse_down?",TMP_Input_mouse_down$q_14=function(mouse_code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]>0},TMP_Input_mouse_down$q_14.$$arity=1);Opal.defs(self,"$mouse_push?",TMP_Input_mouse_push$q_15=function(mouse_code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_mouse_push$q_15.$$arity=1);Opal.defs(self,"$mouse_release?",TMP_Input_mouse_release$q_16=function(mouse_code){var $a,self=this;return(($a=$Input.$$cvars["@@pressing_mouse_buttons"])==null?nil:$a)[mouse_code]==-((($a=$Input.$$cvars["@@tick"])==null?nil:$a)-1)},TMP_Input_mouse_release$q_16.$$arity=1)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/input/key_codes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Input,self=$Input=$module($base,"Input");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $KeyCodes,self=$KeyCodes=$module($base,"KeyCodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"K_ESCAPE","Escape");Opal.const_set($nesting[0],"K_1","Digit1");Opal.const_set($nesting[0],"K_2","Digit2");Opal.const_set($nesting[0],"K_3","Digit3");Opal.const_set($nesting[0],"K_4","Digit4");Opal.const_set($nesting[0],"K_5","Digit5");Opal.const_set($nesting[0],"K_6","Digit6");Opal.const_set($nesting[0],"K_7","Digit7");Opal.const_set($nesting[0],"K_8","Digit8");Opal.const_set($nesting[0],"K_9","Digit9");Opal.const_set($nesting[0],"K_0","Digit0");Opal.const_set($nesting[0],"K_MINUS","Minus");Opal.const_set($nesting[0],"K_EQUALS","Equal");Opal.const_set($nesting[0],"K_BACK","Backspace");Opal.const_set($nesting[0],"K_TAB","Tab");Opal.const_set($nesting[0],"K_Q","KeyQ");Opal.const_set($nesting[0],"K_W","KeyW");Opal.const_set($nesting[0],"K_E","KeyE");Opal.const_set($nesting[0],"K_R","KeyR");Opal.const_set($nesting[0],"K_T","KeyT");Opal.const_set($nesting[0],"K_Y","KeyY");Opal.const_set($nesting[0],"K_U","KeyU");Opal.const_set($nesting[0],"K_I","KeyI");Opal.const_set($nesting[0],"K_O","KeyO");Opal.const_set($nesting[0],"K_P","KeyP");Opal.const_set($nesting[0],"K_LBRACKET","BracketLeft");Opal.const_set($nesting[0],"K_RBRACKET","BracketRight");Opal.const_set($nesting[0],"K_RETURN","Enter");Opal.const_set($nesting[0],"K_ENTER","Enter");Opal.const_set($nesting[0],"K_LCONTROL","ControlLeft");Opal.const_set($nesting[0],"K_A","KeyA");Opal.const_set($nesting[0],"K_S","KeyS");Opal.const_set($nesting[0],"K_D","KeyD");Opal.const_set($nesting[0],"K_F","KeyF");Opal.const_set($nesting[0],"K_G","KeyG");Opal.const_set($nesting[0],"K_H","KeyH");Opal.const_set($nesting[0],"K_J","KeyJ");Opal.const_set($nesting[0],"K_K","KeyK");Opal.const_set($nesting[0],"K_L","KeyL");Opal.const_set($nesting[0],"K_SEMICOLON","Semicolon");Opal.const_set($nesting[0],"K_APOSTROPHE","Quote");Opal.const_set($nesting[0],"K_LSHIFT","ShiftLeft");Opal.const_set($nesting[0],"K_BACKSLASH","BackSlash");Opal.const_set($nesting[0],"K_Z","KeyZ");Opal.const_set($nesting[0],"K_X","KeyX");Opal.const_set($nesting[0],"K_C","KeyC");Opal.const_set($nesting[0],"K_V","KeyV");Opal.const_set($nesting[0],"K_B","KeyB");Opal.const_set($nesting[0],"K_N","KeyN");Opal.const_set($nesting[0],"K_M","KeyM");Opal.const_set($nesting[0],"K_COMMA","Comma");Opal.const_set($nesting[0],"K_PERIOD","Period");Opal.const_set($nesting[0],"K_SLASH","Slash");Opal.const_set($nesting[0],"K_RSHIFT","ShiftRight");Opal.const_set($nesting[0],"K_SPACE","Space");Opal.const_set($nesting[0],"K_F1",112);Opal.const_set($nesting[0],"K_F2",113);Opal.const_set($nesting[0],"K_F3",114);Opal.const_set($nesting[0],"K_F4",115);Opal.const_set($nesting[0],"K_F5",116);Opal.const_set($nesting[0],"K_F6",117);Opal.const_set($nesting[0],"K_F7",118);Opal.const_set($nesting[0],"K_F8",119);Opal.const_set($nesting[0],"K_F9",120);Opal.const_set($nesting[0],"K_F10",121);Opal.const_set($nesting[0],"K_F11",122);Opal.const_set($nesting[0],"K_F12",123);Opal.const_set($nesting[0],"K_F13",124);Opal.const_set($nesting[0],"K_F14",125);Opal.const_set($nesting[0],"K_F15",126);Opal.const_set($nesting[0],"K_YEN","IntlYen");Opal.const_set($nesting[0],"K_COLON","Colon");Opal.const_set($nesting[0],"K_UNDERLINE","IntlRo");Opal.const_set($nesting[0],"K_RCONTROL","ControlRight");Opal.const_set($nesting[0],"K_UP","ArrowUp");Opal.const_set($nesting[0],"K_LEFT","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHT","ArrowRight");Opal.const_set($nesting[0],"K_DOWN","ArrowDown");Opal.const_set($nesting[0],"K_BACKSPACE","Backspace");Opal.const_set($nesting[0],"K_CAPSLOCK","CapsLock");Opal.const_set($nesting[0],"K_UPARROW","ArrowUp");Opal.const_set($nesting[0],"K_LEFTARROW","ArrowLeft");Opal.const_set($nesting[0],"K_RIGHTARROW","ArrowRight");Opal.const_set($nesting[0],"K_DOWNARROW","ArrowDown")})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/remote_resource"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$new","$[]=","$-","$_klass_name","$[]","$raise","$inspect","$each","$!","$_load","$to_proc","$flat_map","$values","$call","$last","$split","$name"]);return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RemoteResource(){}var self=$RemoteResource=$klass($base,$super,"RemoteResource",$RemoteResource);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RemoteResource_1,TMP_RemoteResource_2,TMP_RemoteResource_3,TMP_RemoteResource_add_class_4,TMP_RemoteResource_register_5,TMP_RemoteResource_$$_6,TMP_RemoteResource__load_resources_7,TMP_RemoteResource__load_10,TMP_RemoteResource__klass_name_11;Opal.class_variable_set($RemoteResource,"@@resources",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_1=function(h,k){var self=TMP_RemoteResource_1.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_1.$$s=self,TMP_RemoteResource_1.$$arity=2,TMP_RemoteResource_1)));Opal.class_variable_set($RemoteResource,"@@promises",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_2=function(h,k){var self=TMP_RemoteResource_2.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_2.$$s=self,TMP_RemoteResource_2.$$arity=2,TMP_RemoteResource_2)));Opal.class_variable_set($RemoteResource,"@@instances",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_RemoteResource_3=function(h,k){var self=TMP_RemoteResource_3.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,$hash2([],{})];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_3.$$s=self,TMP_RemoteResource_3.$$arity=2,TMP_RemoteResource_3)));Opal.class_variable_set($RemoteResource,"@@klasses",$hash2([],{}));Opal.defs(self,"$add_class",TMP_RemoteResource_add_class_4=function $$add_class(subklass){var $a,self=this,$writer=nil;$writer=[subklass.$_klass_name(),subklass];$send(($a=$RemoteResource.$$cvars["@@klasses"])==null?nil:$a,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_add_class_4.$$arity=1);Opal.defs(self,"$register",TMP_RemoteResource_register_5=function $$register(name,$a_rest){var $b,$c,self=this,args,$iter=TMP_RemoteResource_register_5.$$p,block=$iter||nil,$writer=nil;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_RemoteResource_register_5.$$p=null;$truthy($b=(($c=$RemoteResource.$$cvars["@@resources"])==null?nil:$c)["$[]"](self.$_klass_name()))?$b:($writer=[self.$_klass_name(),$hash2([],{})],$send(($c=$RemoteResource.$$cvars["@@resources"])==null?nil:$c,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]);$writer=[name,[block,args]];$send((($b=$RemoteResource.$$cvars["@@resources"])==null?nil:$b)["$[]"](self.$_klass_name()),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RemoteResource_register_5.$$arity=-2);Opal.defs(self,"$[]",TMP_RemoteResource_$$_6=function(name){var $a,self=this,ret=nil;if($truthy(ret=(($a=$RemoteResource.$$cvars["@@instances"])==null?nil:$a)["$[]"](self.$_klass_name())["$[]"](name))){return ret}else{return self.$raise(""+self.$_klass_name()+" "+name.$inspect()+" is not registered")}},TMP_RemoteResource_$$_6.$$arity=1);Opal.defs(self,"$_load_resources",TMP_RemoteResource__load_resources_7=function $$_load_resources(){var $a,TMP_8,self=this,$iter=TMP_RemoteResource__load_resources_7.$$p,block=$iter||nil,promises=nil;if($iter)TMP_RemoteResource__load_resources_7.$$p=null;$send(($a=$RemoteResource.$$cvars["@@resources"])==null?nil:$a,"each",[],(TMP_8=function(klass_name,items){var self=TMP_8.$$s||this,$b,TMP_9,klass=nil;if(klass_name==null)klass_name=nil;if(items==null)items=nil;klass=(($b=$RemoteResource.$$cvars["@@klasses"])==null?nil:$b)["$[]"](klass_name);return $send(items,"each",[],(TMP_9=function(name,$c){var self=TMP_9.$$s||this,$c_args,block,args,$d,$e,instance=nil,promise=nil,$writer=nil;if($c==null){$c=nil}$c=Opal.to_ary($c);$c_args=Opal.slice.call($c,0,$c.length);block=$c_args.splice(0,1)[0];if(block==null){block=nil}args=$c_args.splice(0,1)[0];if(args==null){args=nil}if(name==null)name=nil;if($truthy((($d=$RemoteResource.$$cvars["@@promises"])==null?nil:$d)["$[]"](klass_name)["$[]"](name)["$!"]())){$e=$send(klass,"_load",Opal.to_a(args),block.$to_proc()),$d=Opal.to_ary($e),instance=$d[0]==null?nil:$d[0],promise=$d[1]==null?nil:$d[1],$e;$writer=[name,instance];$send((($d=$RemoteResource.$$cvars["@@instances"])==null?nil:$d)["$[]"](klass_name),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[name,promise];$send((($d=$RemoteResource.$$cvars["@@promises"])==null?nil:$d)["$[]"](klass_name),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_9.$$s=self,TMP_9.$$arity=2,TMP_9.$$has_top_level_mlhs_arg=true,TMP_9))},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8));promises=$send((($a=$RemoteResource.$$cvars["@@promises"])==null?nil:$a).$values(),"flat_map",[],"values".$to_proc());Promise.all(promises).then(function(){block.$call()})},TMP_RemoteResource__load_resources_7.$$arity=0);Opal.defs(self,"$_load",TMP_RemoteResource__load_10=function $$_load($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return self.$raise("override me")},TMP_RemoteResource__load_10.$$arity=-1);return Opal.defs(self,"$_klass_name",TMP_RemoteResource__klass_name_11=function $$_klass_name(){var self=this;return self.$name().$split(/::/).$last()},TMP_RemoteResource__klass_name_11.$$arity=0)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/image"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$add_class","$new","$_resize","$box_fill","$attr_reader","$canvas","$draw_ex","$[]","$/","$width","$height","$+","$_spec_str","$_rgba","$_rgba_ary","$-","$fill","$_image_data","$_put_image_data","$flat_map","$map","$slice","$*","$length","$===","$raise","$inspect","$join"]);self.$require("dxopal/remote_resource");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Image(){}var self=$Image=$klass($base,$super,"Image",$Image);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Image__load_1,TMP_Image_initialize_2,TMP_Image__resize_3,TMP_Image_draw_4,TMP_Image_draw_scale_5,TMP_Image_draw_rot_6,TMP_Image_draw_ex_7,TMP_Image_draw_font_8,TMP_Image_$$_9,TMP_Image_$$$eq_10,TMP_Image_compare_11,TMP_Image_line_12,TMP_Image_box_13,TMP_Image_box_fill_14,TMP_Image_circle_15,TMP_Image_circle_fill_16,TMP_Image_triangle_17,TMP_Image_triangle_fill_18,TMP_Image_fill_19,TMP_Image_clear_20,TMP_Image_slice_21,TMP_Image_slice_tiles_24,TMP_Image_set_color_key_25,TMP_Image__draw_raw_image_26,TMP_Image__image_data_27,TMP_Image__put_image_data_28,TMP_Image__rgb_29,TMP_Image__rgba_30,TMP_Image__rgba_ary_31;def.canvas=def.width=def.height=def.ctx=nil;Opal.const_get_relative($nesting,"RemoteResource").$add_class(Opal.const_get_relative($nesting,"Image"));Opal.defs(self,"$_load",TMP_Image__load_1=function $$_load(path_or_url){var self=this,raw_img=nil,img_promise=nil,img=nil;raw_img=new Image;img_promise=new Promise(function(resolve,reject){raw_img.onload=function(){resolve(raw_img)};raw_img.src=path_or_url});img=self.$new(0,0);img_promise.then(function(raw_img){img.$_resize(raw_img.width,raw_img.height);img.$_draw_raw_image(0,0,raw_img)});return[img,img_promise]},TMP_Image__load_1.$$arity=1);Opal.defn(self,"$initialize",TMP_Image_initialize_2=function $$initialize(width,height,$color,$kwargs){var $a,self=this,$post_args,canvas,color;$post_args=Opal.slice.call(arguments,2,arguments.length);$kwargs=Opal.extract_kwargs($post_args);if($kwargs==null||!$kwargs.$$is_hash){if($kwargs==null){$kwargs=$hash2([],{})}else{throw Opal.ArgumentError.$new("expected kwargs")}}canvas=$kwargs.$$smap["canvas"];if(canvas==null){canvas=nil}if(0<$post_args.length){color=$post_args.splice(0,1)[0]}if(color==null){color=Opal.const_get_relative($nesting,"C_DEFAULT")}$a=[width,height],self.width=$a[0],self.height=$a[1],$a;self.canvas=$truthy($a=canvas)?$a:document.createElement("canvas");self.ctx=self.canvas.getContext("2d");self.$_resize(self.width,self.height);return self.$box_fill(0,0,self.width,self.height,color)},TMP_Image_initialize_2.$$arity=-3);self.$attr_reader("ctx","canvas","width","height");Opal.defn(self,"$_resize",TMP_Image__resize_3=function $$_resize(w,h){var $a,self=this;$a=[w,h],self.width=$a[0],self.height=$a[1],$a;self.canvas.width=w;self.canvas.height=h},TMP_Image__resize_3.$$arity=2);Opal.defn(self,"$draw",TMP_Image_draw_4=function $$draw(x,y,image){var self=this;self.ctx.drawImage(image.$canvas(),x,y);return self},TMP_Image_draw_4.$$arity=3);Opal.defn(self,"$draw_scale",TMP_Image_draw_scale_5=function $$draw_scale(x,y,image,scale_x,scale_y,center_x,center_y){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}return self.$draw_ex(x,y,image,$hash2(["scale_x","scale_y","center_x","center_y"],{scale_x:scale_x,scale_y:scale_y,center_x:center_x,center_y:center_y}))},TMP_Image_draw_scale_5.$$arity=-6);Opal.defn(self,"$draw_rot",TMP_Image_draw_rot_6=function $$draw_rot(x,y,image,angle,center_x,center_y){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}return self.$draw_ex(x,y,image,$hash2(["angle","center_x","center_y"],{angle:angle,center_x:center_x,center_y:center_y}))},TMP_Image_draw_rot_6.$$arity=-5);Opal.defn(self,"$draw_ex",TMP_Image_draw_ex_7=function $$draw_ex(x,y,image,options){var $a,self=this,scale_x=nil,scale_y=nil,center_x=nil,center_y=nil,angle=nil,cx=nil,cy=nil;if(options==null){options=$hash2([],{})}scale_x=$truthy($a=options["$[]"]("scale_x"))?$a:1;scale_y=$truthy($a=options["$[]"]("scale_y"))?$a:1;center_x=$truthy($a=options["$[]"]("center_x"))?$a:$rb_divide(image.$width(),2);center_y=$truthy($a=options["$[]"]("center_y"))?$a:$rb_divide(image.$height(),2);angle=$truthy($a=options["$[]"]("angle"))?$a:0;cx=$rb_plus(x,center_x);cy=$rb_plus(y,center_y);self.ctx.translate(cx,cy);self.ctx.rotate(angle*Math.PI/180);self.ctx.scale(scale_x,scale_y);self.ctx.drawImage(image.$canvas(),x-cx,y-cy);self.ctx.setTransform(1,0,0,1,0,0);return self},TMP_Image_draw_ex_7.$$arity=-4);Opal.defn(self,"$draw_font",TMP_Image_draw_font_8=function $$draw_font(x,y,string,font,color){var self=this,ctx=nil;if(color==null){color=[255,255,255]}ctx=self.ctx;ctx.font=font.$_spec_str();ctx.textBaseline="top";ctx.fillStyle=self.$_rgba(color);ctx.fillText(string,x,y);return self},TMP_Image_draw_font_8.$$arity=-5);Opal.defn(self,"$[]",TMP_Image_$$_9=function(x,y){var self=this,ctx=nil,ret=nil;ctx=self.ctx;ret=nil;var pixel=ctx.getImageData(x,y,1,1);var rgba=pixel.data;ret=[rgba[3],rgba[0],rgba[1],rgba[2]];return ret},TMP_Image_$$_9.$$arity=2);Opal.defn(self,"$[]=",TMP_Image_$$$eq_10=function(x,y,color){var self=this;return self.$box_fill(x,y,x,y,color)},TMP_Image_$$$eq_10.$$arity=3);Opal.defn(self,"$compare",TMP_Image_compare_11=function $$compare(x,y,color){var self=this,ctx=nil,rgba1=nil,rgba2=nil,ret=nil;ctx=self.ctx;rgba1=self.$_rgba_ary(color);rgba2=nil;ret=nil;var pixel=ctx.getImageData(x,y,1,1);rgba2=pixel.data;ret=rgba1[0]==rgba2[0]&&rgba1[1]==rgba2[1]&&rgba1[2]==rgba2[2]&&rgba1[3]==rgba2[3];return ret},TMP_Image_compare_11.$$arity=3);Opal.defn(self,"$line",TMP_Image_line_12=function $$line(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();return self},TMP_Image_line_12.$$arity=5);Opal.defn(self,"$box",TMP_Image_box_13=function $$box(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.rect(x1,y1,x2-x1+1,y2-y1+1);ctx.stroke();return self},TMP_Image_box_13.$$arity=5);Opal.defn(self,"$box_fill",TMP_Image_box_fill_14=function $$box_fill(x1,y1,x2,y2,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.fillRect(x1,y1,x2-x1+1,y2-y1+1);return self},TMP_Image_box_fill_14.$$arity=5);Opal.defn(self,"$circle",TMP_Image_circle_15=function $$circle(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.arc(x,y,r,0,Math.PI*2,false);ctx.stroke();return self},TMP_Image_circle_15.$$arity=4);Opal.defn(self,"$circle_fill",TMP_Image_circle_fill_16=function $$circle_fill(x,y,r,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.arc(x,y,r,0,Math.PI*2,false);ctx.fill();return self},TMP_Image_circle_fill_16.$$arity=4);Opal.defn(self,"$triangle",TMP_Image_triangle_17=function $$triangle(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.strokeStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.lineTo(x1,y1);ctx.stroke();return self},TMP_Image_triangle_17.$$arity=7);Opal.defn(self,"$triangle_fill",TMP_Image_triangle_fill_18=function $$triangle_fill(x1,y1,x2,y2,x3,y3,color){var self=this,ctx=nil;ctx=self.ctx;ctx.beginPath();ctx.fillStyle=self.$_rgba(color);ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.fill();return self},TMP_Image_triangle_fill_18.$$arity=7);Opal.defn(self,"$fill",TMP_Image_fill_19=function $$fill(color){var self=this;return self.$box_fill(0,0,$rb_minus(self.width,1),$rb_minus(self.height,1),color)},TMP_Image_fill_19.$$arity=1);Opal.defn(self,"$clear",TMP_Image_clear_20=function $$clear(){var self=this;return self.$fill([0,0,0,0])},TMP_Image_clear_20.$$arity=0);Opal.defn(self,"$slice",TMP_Image_slice_21=function $$slice(x,y,width,height){var self=this,newimg=nil,data=nil;newimg=Opal.const_get_relative($nesting,"Image").$new(width,height);data=self.$_image_data(x,y,width,height);newimg.$_put_image_data(data);return newimg},TMP_Image_slice_21.$$arity=4);Opal.defn(self,"$slice_tiles",TMP_Image_slice_tiles_24=function $$slice_tiles(xcount,ycount){var TMP_22,self=this,tile_w=nil,tile_h=nil;tile_w=$rb_divide(self.width,xcount);tile_h=$rb_divide(self.height,ycount);return $send(Opal.Range.$new(0,ycount,true),"flat_map",[],(TMP_22=function(v){var self=TMP_22.$$s||this,TMP_23;if(v==null)v=nil;return $send(Opal.Range.$new(0,xcount,true),"map",[],(TMP_23=function(u){var self=TMP_23.$$s||this;if(u==null)u=nil;return self.$slice($rb_times(tile_w,u),$rb_times(tile_h,v),tile_w,tile_h)},TMP_23.$$s=self,TMP_23.$$arity=1,TMP_23))},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))},TMP_Image_slice_tiles_24.$$arity=2);Opal.defn(self,"$set_color_key",TMP_Image_set_color_key_25=function $$set_color_key(color){var $a,$b,self=this,r=nil,g=nil,b=nil,_=nil,data=nil;$b=self.$_rgba_ary(color),$a=Opal.to_ary($b),r=$a[0]==null?nil:$a[0],g=$a[1]==null?nil:$a[1],b=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],$b;data=self.$_image_data();var buf=data.data;for(var i=0;i44100)freq=44100;if(volume<0)volume=0;if(volume>255)volume=255;var vol=volume/255;var period=valuesPerSecond*1/freq;for(;n<(i+1)/n_ticks*n_values;n++){var phase=n%period/period;var value;switch(wave_type){case"sine":value=Math.sin(2*Math.PI*phase)*2-1;break;case"sawtooth":value=phase*2-1;break;case"triangle":value=phase<.25?0+phase*4:phase<.5?1-(phase-.25)*4:phase<.75?0-(phase-.5)*4:-1+(phase-.75)*4;break;case"square":value=phase<.5?1:-1;break;default:self.$raise($rb_plus("unknown wave_type: ",wave_type.$inspect()))}values[n]=value*vol}}snd["$decoded="](myArrayBuffer);resolve()});return[snd,snd_promise]},TMP_SoundEffect__load_1.$$arity=-2);return(Opal.defn(self,"$add",TMP_SoundEffect_add_2=function $$add(wave_type,resolution){var self=this;if(wave_type==null){wave_type=Opal.const_get_relative($nesting,"WAVE_RECT")}if(resolution==null){resolution=1e3}return Opal.const_get_relative($nesting,"TODO")},TMP_SoundEffect_add_2.$$arity=-1),nil)&&"add"})($nesting[0],Opal.const_get_relative($nesting,"Sound"),$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_checker"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;(function(){var intersect=function(x1,y1,x2,y2,x3,y3,x4,y4){return((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))};var check_line_line=function(x1,y1,x2,y2,x3,y3,x4,y4){return!(((x1-x2)*(y3-y1)+(y1-y2)*(x1-x3))*((x1-x2)*(y4-y1)+(y1-y2)*(x1-x4))>0||((x3-x4)*(y1-y3)+(y3-y4)*(x3-x1))*((x3-x4)*(y2-y3)+(y3-y4)*(x3-x2))>0)};var check_circle_line=function(x,y,r,x1,y1,x2,y2){var vx=x2-x1,vy=y2-y1;var cx=x-x1,cy=y-y1;if(vx==0&&vy==0)return CCk.check_point_circle(x,y,r,x1,y1);var n1=vx*cx+vy*cy;if(n1<0)return cx*cx+cy*cyn2){var len=(x2-x)*(x2-x)+(y2-y)*(y2-y);return len=(cx-px)*(cx-px)+(cy-py)*(cy-py)},check_point_straight_rect:function(x,y,x1,y1,x2,y2){return x>=x1&&y>=y1&&x=(ox-dx)*(ox-dx)+(oy-dy)*(oy-dy)},check_ellipse_ellipse:function(E1,E2){var DefAng=E1.fAngle-E2.fAngle;var Cos=Math.cos(DefAng);var Sin=Math.sin(DefAng);var nx=E2.fRad_X*Cos;var ny=-E2.fRad_X*Sin;var px=E2.fRad_Y*Sin;var py=E2.fRad_Y*Cos;var ox=Math.cos(E1.fAngle)*(E2.fCx-E1.fCx)+Math.sin(E1.fAngle)*(E2.fCy-E1.fCy);var oy=-Math.sin(E1.fAngle)*(E2.fCx-E1.fCx)+Math.cos(E1.fAngle)*(E2.fCy-E1.fCy);var rx_pow2=1/(E1.fRad_X*E1.fRad_X);var ry_pow2=1/(E1.fRad_Y*E1.fRad_Y);var A=rx_pow2*nx*nx+ry_pow2*ny*ny;var B=rx_pow2*px*px+ry_pow2*py*py;var D=2*rx_pow2*nx*px+2*ry_pow2*ny*py;var E=2*rx_pow2*nx*ox+2*ry_pow2*ny*oy;var F=2*rx_pow2*px*ox+2*ry_pow2*py*oy;var G=ox/E1.fRad_X*(ox/E1.fRad_X)+oy/E1.fRad_Y*(oy/E1.fRad_Y)-1;var tmp1=1/(D*D-4*A*B);var h=(F*D-2*E*B)*tmp1;var k=(E*D-2*A*F)*tmp1;var Th=B-A==0?0:Math.atan(D/(B-A))*.5;var CosTh=Math.cos(Th);var SinTh=Math.sin(Th);var A_tt=A*CosTh*CosTh+B*SinTh*SinTh-D*CosTh*SinTh;var B_tt=A*SinTh*SinTh+B*CosTh*CosTh+D*CosTh*SinTh;var KK=A*h*h+B*k*k+D*h*k-E*h-F*k+G>0?0:A*h*h+B*k*k+D*h*k-E*h-F*k+G;var Rx_tt=1+Math.sqrt(-KK/A_tt);var Ry_tt=1+Math.sqrt(-KK/B_tt);var x_tt=CosTh*h-SinTh*k;var y_tt=SinTh*h+CosTh*k;var JudgeValue=x_tt*x_tt/(Rx_tt*Rx_tt)+y_tt*y_tt/(Ry_tt*Ry_tt);return JudgeValue<=1},check_circle_tilted_rect:function(cx,cy,cr,x1,y1,x2,y2,x3,y3,x4,y4){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||CCk.check_point_triangle(cx,cy,x1,y1,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x4,y4)||check_circle_line(cx,cy,cr,x4,y4,x1,y1)},check_circle_triangle:function(cx,cy,cr,x1,y1,x2,y2,x3,y3){return CCk.check_point_triangle(cx,cy,x1,y1,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x1,y1,x2,y2)||check_circle_line(cx,cy,cr,x2,y2,x3,y3)||check_circle_line(cx,cy,cr,x3,y3,x1,y1)},check_rect_rect:function(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2){return ax1x2)x2=poss[i][0];if(poss[i][1]>y2)y2=poss[i][1]}return[[x1,y1],[x2,y2]]},TMP_Base_aabb_7.$$arity=1),nil)&&"aabb"})($nesting[0],null,$nesting);(function($base,$super,$parent_nesting){function $Point(){}var self=$Point=$klass($base,$super,"Point",$Point);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Point_initialize_8,TMP_Point_type_9,TMP_Point_collides$q_10,TMP_Point_absolute_pos_11;def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_Point_initialize_8=function $$initialize(sprite,x,y){var $a,self=this,$iter=TMP_Point_initialize_8.$$p,$yield=$iter||nil;if($iter)TMP_Point_initialize_8.$$p=null;$a=[sprite,x,y],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Point_initialize_8,false),[],null)},TMP_Point_initialize_8.$$arity=3);Opal.defn(self,"$type",TMP_Point_type_9=function $$type(){var self=this;return"Point"},TMP_Point_type_9.$$arity=0);Opal.defn(self,"$collides?",TMP_Point_collides$q_10=function(other){var $a,$b,self=this,$case=nil,x=nil,y=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return self.$absolute_pos()["$=="](other.$absolute_pos())}else if("Circle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;return Opal.DXOpal.CCk.check_point_circle(x,y,cx,cy,other.$r())}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$transback1(self.$absolute_pos(),other.$sprite()))),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_norot_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_straight_rect(x,y,x1,y1,x2,y2)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_pos())),x=$a[0]==null?nil:$a[0],y=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_point_triangle(x,y,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_Point_collides$q_10.$$arity=1);return(Opal.defn(self,"$absolute_pos",TMP_Point_absolute_pos_11=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_Point_absolute_pos_11.$$arity=0),nil)&&"absolute_pos"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Circle(){}var self=$Circle=$klass($base,$super,"Circle",$Circle);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Circle_initialize_12,TMP_Circle_type_13,TMP_Circle_circle$q_14,TMP_Circle_collides$q_15,TMP_Circle_absolute_pos_16,TMP_Circle_absolute_norot_pos_17,TMP_Circle_collides_circle$q_18;def.sprite=def.r=def.x=def.y=nil;Opal.defn(self,"$initialize",TMP_Circle_initialize_12=function $$initialize(sprite,x,y,r){var $a,self=this,$iter=TMP_Circle_initialize_12.$$p,$yield=$iter||nil;if($iter)TMP_Circle_initialize_12.$$p=null;$a=[sprite,x,y,r],self.sprite=$a[0],self.x=$a[1],self.y=$a[2],self.r=$a[3],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Circle_initialize_12,false),[],null)},TMP_Circle_initialize_12.$$arity=4);self.$attr_reader("r");Opal.defn(self,"$type",TMP_Circle_type_13=function $$type(){var self=this;return"Circle"},TMP_Circle_type_13.$$arity=0);Opal.defn(self,"$circle?",TMP_Circle_circle$q_14=function(){var self=this;return self.sprite.$scale_x()["$=="](self.sprite.$scale_y())},TMP_Circle_circle$q_14.$$arity=0);Opal.defn(self,"$collides?",TMP_Circle_collides$q_15=function(other){var $a,$b,self=this,$case=nil,cx=nil,cy=nil,x1=nil,y1=nil,x2=nil,y2=nil,x3=nil,y3=nil,x4=nil,y4=nil;return function(){$case=other.$type();if("Point"["$==="]($case)){return other["$collides?"](self)}else if("Circle"["$==="]($case)){return self["$collides_circle?"](other)}else if("Rect"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),x4=$b[0]==null?nil:$b[0],y4=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_tilted_rect(cx,cy,self.r,x1,y1,x2,y2,x3,y3,x4,y4)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_norot_pos())),cx=$a[0]==null?nil:$a[0],cy=$a[1]==null?nil:$a[1],$a;$a=[].concat(Opal.to_a(self.$transback(other.$absolute_poss(),self.sprite))),$b=Opal.to_ary($a[0]==null?nil:$a[0]),x1=$b[0]==null?nil:$b[0],y1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),x2=$b[0]==null?nil:$b[0],y2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),x3=$b[0]==null?nil:$b[0],y3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_circle_triangle(cx,cy,self.r,x1,y1,x2,y2,x3,y3)}else{return self.$raise()}}()},TMP_Circle_collides$q_15.$$arity=1);Opal.defn(self,"$absolute_pos",TMP_Circle_absolute_pos_16=function $$absolute_pos(){var self=this;return self.$absolute1([self.x,self.y])},TMP_Circle_absolute_pos_16.$$arity=0);Opal.defn(self,"$absolute_norot_pos",TMP_Circle_absolute_norot_pos_17=function $$absolute_norot_pos(){var self=this;return[$rb_plus(self.x,self.sprite.$x()),$rb_plus(self.y,self.sprite.$y())]},TMP_Circle_absolute_norot_pos_17.$$arity=0);self.$private();return(Opal.defn(self,"$collides_circle?",TMP_Circle_collides_circle$q_18=function(other){var $a,self=this,x1=nil,y1=nil,r1=nil,x2=nil,y2=nil,r2=nil,scale_x1=nil,scale_y1=nil,angle1=nil,scale_x2=nil,scale_y2=nil,angle2=nil,ret=nil;$a=[].concat(Opal.to_a(self.$absolute_pos())),x1=$a[0]==null?nil:$a[0],y1=$a[1]==null?nil:$a[1],$a;r1=self.r;$a=[].concat(Opal.to_a(other.$absolute_pos())),x2=$a[0]==null?nil:$a[0],y2=$a[1]==null?nil:$a[1],$a;r2=other.$r();if($truthy($truthy($a=self["$circle?"]())?other["$circle?"]():$a)){return Opal.DXOpal.CCk.check_circle_circle(x1,y1,self.r,x2,y2,other.$r())}else{if($truthy(self.sprite.$collision_sync())){scale_x1=self.sprite.$scale_x();scale_y1=self.sprite.$scale_y();angle1=$rb_divide($rb_times(self.sprite.$angle(),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")),180)}else{scale_x1=1;scale_y1=1;angle1=0}if($truthy(other.$sprite().$collision_sync())){scale_x2=other.$sprite().$scale_x();scale_y2=other.$sprite().$scale_y();angle2=$rb_divide($rb_times(other.$sprite().$angle(),Opal.const_get_qualified(Opal.const_get_relative($nesting,"Math"),"PI")),180)}else{scale_x2=1;scale_y2=1;angle2=0}ret=nil;var e1={fRad_X:scale_x1*r1,fRad_Y:scale_y1*r1,fAngle:angle1,fCx:x1,fCy:y1};var e2={fRad_X:scale_x2*r2,fRad_Y:scale_y2*r2,fAngle:angle2,fCx:x2,fCy:y2};ret=Opal.DXOpal.CCk.check_ellipse_ellipse(e1,e2);return ret}},TMP_Circle_collides_circle$q_18.$$arity=1),nil)&&"collides_circle?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Rect(){}var self=$Rect=$klass($base,$super,"Rect",$Rect);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rect_initialize_19,TMP_Rect_type_20,TMP_Rect_inspect_21,TMP_Rect_collides$q_22,TMP_Rect_absolute_poss_23,TMP_Rect_absolute_norot_poss_24;def.x1=def.y1=def.x2=def.y2=def.sprite=def.poss=nil;Opal.defn(self,"$initialize",TMP_Rect_initialize_19=function $$initialize(sprite,x1,y1,x2,y2){var $a,self=this,$iter=TMP_Rect_initialize_19.$$p,$yield=$iter||nil;if($iter)TMP_Rect_initialize_19.$$p=null;$a=[sprite,x1,y1,x2,y2],self.sprite=$a[0],self.x1=$a[1],self.y1=$a[2],self.x2=$a[3],self.y2=$a[4],$a;self.poss=[[x1,y1],[x2,y1],[x2,y2],[x1,y2]];return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Rect_initialize_19,false),[],null)},TMP_Rect_initialize_19.$$arity=5);Opal.defn(self,"$type",TMP_Rect_type_20=function $$type(){var self=this;return"Rect"},TMP_Rect_type_20.$$arity=0);Opal.defn(self,"$inspect",TMP_Rect_inspect_21=function $$inspect(){var self=this;return""+"#"},TMP_Rect_inspect_21.$$arity=0);Opal.defn(self,"$collides?",TMP_Rect_collides$q_22=function(other){var $a,$b,$c,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,ox3=nil,oy3=nil,ox4=nil,oy4=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)){return other["$collides?"](self)}else if("Rect"["$==="]($case)){$b=self.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(other.$absolute_poss(),self.sprite)),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}$b=other.$absolute_norot_poss(),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$c[0]==null?nil:$c[0],oy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$c[0]==null?nil:$c[0],oy2=$c[1]==null?nil:$c[1],$b;$b=self.$aabb(self.$transback(self.$absolute_poss(),other.$sprite())),$a=Opal.to_ary($b),$c=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$c[0]==null?nil:$c[0],dy1=$c[1]==null?nil:$c[1],$c=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$c[0]==null?nil:$c[0],dy2=$c[1]==null?nil:$c[1],$b;if($truthy(Opal.DXOpal.CCk.check_rect_rect(ox1,oy1,ox2,oy2,dx1,dy1,dx2,dy2))){}else{return false}return true}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[3]==null?nil:$a[3]),ox4=$b[0]==null?nil:$b[0],oy4=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_tilted_rect_triangle(ox1,oy1,ox2,oy2,ox3,oy3,ox4,oy4,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_Rect_collides$q_22.$$arity=1);Opal.defn(self,"$absolute_poss",TMP_Rect_absolute_poss_23=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_Rect_absolute_poss_23.$$arity=0);return(Opal.defn(self,"$absolute_norot_poss",TMP_Rect_absolute_norot_poss_24=function $$absolute_norot_poss(){var self=this;return[[$rb_plus(self.x1,self.sprite.$x()),$rb_plus(self.y1,self.sprite.$y())],[$rb_plus(self.x2,self.sprite.$x()),$rb_plus(self.y2,self.sprite.$y())]]},TMP_Rect_absolute_norot_poss_24.$$arity=0),nil)&&"absolute_norot_poss"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $Triangle(){}var self=$Triangle=$klass($base,$super,"Triangle",$Triangle);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Triangle_initialize_25,TMP_Triangle_type_26,TMP_Triangle_collides$q_27,TMP_Triangle_absolute_poss_28;def.poss=nil;Opal.defn(self,"$initialize",TMP_Triangle_initialize_25=function $$initialize(sprite,x1,y1,x2,y2,x3,y3){var self=this,$iter=TMP_Triangle_initialize_25.$$p,$yield=$iter||nil;if($iter)TMP_Triangle_initialize_25.$$p=null;self.sprite=sprite;self.poss=[[x1,y1],[x2,y2],[x3,y3]];return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Triangle_initialize_25,false),[],null)},TMP_Triangle_initialize_25.$$arity=7);Opal.defn(self,"$type",TMP_Triangle_type_26=function $$type(){var self=this;return"Triangle"},TMP_Triangle_type_26.$$arity=0);Opal.defn(self,"$collides?",TMP_Triangle_collides$q_27=function(other){var $a,$b,self=this,$case=nil,ox1=nil,oy1=nil,ox2=nil,oy2=nil,ox3=nil,oy3=nil,dx1=nil,dy1=nil,dx2=nil,dy2=nil,dx3=nil,dy3=nil;return function(){$case=other.$type();if("Point"["$==="]($case)||"Circle"["$==="]($case)||"Rect"["$==="]($case)){return other["$collides?"](self)}else if("Triangle"["$==="]($case)){$a=[].concat(Opal.to_a(self.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),ox1=$b[0]==null?nil:$b[0],oy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),ox2=$b[0]==null?nil:$b[0],oy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),ox3=$b[0]==null?nil:$b[0],oy3=$b[1]==null?nil:$b[1],$a;$a=[].concat(Opal.to_a(other.$absolute_poss())),$b=Opal.to_ary($a[0]==null?nil:$a[0]),dx1=$b[0]==null?nil:$b[0],dy1=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[1]==null?nil:$a[1]),dx2=$b[0]==null?nil:$b[0],dy2=$b[1]==null?nil:$b[1],$b=Opal.to_ary($a[2]==null?nil:$a[2]),dx3=$b[0]==null?nil:$b[0],dy3=$b[1]==null?nil:$b[1],$a;return Opal.DXOpal.CCk.check_triangle_triangle(ox1,oy1,ox2,oy2,ox3,oy3,dx1,dy1,dx2,dy2,dx3,dy3)}else{return self.$raise()}}()},TMP_Triangle_collides$q_27.$$arity=1);return(Opal.defn(self,"$absolute_poss",TMP_Triangle_absolute_poss_28=function $$absolute_poss(){var self=this;return self.$absolute(self.poss)},TMP_Triangle_absolute_poss_28.$$arity=0),nil)&&"absolute_poss"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite/collision_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$Array","$equal?","$select","$is_a?","$length","$===","$[]","$__send__","$nil?","$new","$width","$height","$attr_accessor","$attr_reader","$raise","$inspect","$x","$any?","$check","$_collides?","$_collision_area","$!","$_collidable?","$collides?"]);self.$require("dxopal/sprite/collision_area");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var $CollisionCheck,self=$CollisionCheck=$module($base,"CollisionCheck");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CollisionCheck_shot_3,TMP_CollisionCheck_hit_4,TMP_CollisionCheck__init_collision_info_5,TMP_CollisionCheck_collision$eq_6,TMP_CollisionCheck_$eq$eq$eq_7,TMP_CollisionCheck_check_9,TMP_CollisionCheck__collides$q_10,TMP_CollisionCheck__collidable$q_11;(function($base,$parent_nesting){var $ClassMethods,self=$ClassMethods=$module($base,"ClassMethods");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassMethods_check_2;Opal.defn(self,"$check",TMP_ClassMethods_check_2=function $$check(offences,defences,shot,hit){var TMP_1,self=this,i=nil,j=nil,sprites=nil,n=nil;if(shot==null){shot="shot"}if(hit==null){hit="hit"}offences=self.$Array(offences);defences=self.$Array(defences);i=j=0;if($truthy(offences["$equal?"](defences))){sprites=$send(offences,"select",[],(TMP_1=function(x){var self=TMP_1.$$s||this;if(x==null)x=nil;return x["$is_a?"](Opal.const_get_relative($nesting,"Sprite"))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));n=sprites.$length();for(var i=0;i{var[type,sprite,info]=Opal.const_get_relative($nesting,"Sprite").$_matter_sprites()["$[]"](body.id);switch(type){case"rectangle":var[width,height]=info;sprite["$_move_to_matter_body"](body.position.x,body.position.y);sprite["$angle="](body.angle/Math.PI*180);break;default:`self.$raise("" + "unknown type: " + (self.$type()))`}})},TMP_Sprite_matter_tick_9.$$arity=1)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/sprite"]=function(Opal){function $rb_divide(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs/rhs:lhs["$/"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$extend","$include","$each","$!","$respond_to?","$vanished?","$update","$reject!","$nil?","$sort_by","$flatten","$to_proc","$draw","$/","$width","$height","$_init_collision_info","$attr_accessor","$attr_reader","$_move_matter_body","$-","$collision=","$raise","$draw_ex"]);self.$require("dxopal/sprite/collision_check");self.$require("dxopal/sprite/physics");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Sprite(){}var self=$Sprite=$klass($base,$super,"Sprite",$Sprite);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Sprite_update_2,TMP_Sprite_clean_4,TMP_Sprite_draw_6,TMP_Sprite_initialize_7,TMP_Sprite_x$eq_8,TMP_Sprite_y$eq_9,TMP_Sprite_image_10,TMP_Sprite_image$eq_11,TMP_Sprite_vanish_12,TMP_Sprite_vanished$q_13,TMP_Sprite_draw_14;def.image=def._matter_body=def.collision=def.center_x=def.vanished=def.visible=def.x=def.y=def.scale_x=def.scale_y=def.angle=def.center_y=nil;self.$extend(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"CollisionCheck"),"ClassMethods"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"CollisionCheck"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Sprite"),"Physics"));Opal.defs(self,"$update",TMP_Sprite_update_2=function $$update(sprites){var TMP_1,self=this;return $send(sprites,"each",[],(TMP_1=function(sprite){var self=TMP_1.$$s||this,$a;if(sprite==null)sprite=nil;if($truthy(sprite["$respond_to?"]("update")["$!"]())){return nil}if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$update()},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_Sprite_update_2.$$arity=1);Opal.defs(self,"$clean",TMP_Sprite_clean_4=function $$clean(sprites){var TMP_3,self=this;return $send(sprites,"reject!",[],(TMP_3=function(sprite){var self=TMP_3.$$s||this,$a;if(sprite==null)sprite=nil;return $truthy($a=sprite["$nil?"]())?$a:sprite["$vanished?"]()},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_Sprite_clean_4.$$arity=1);Opal.defs(self,"$draw",TMP_Sprite_draw_6=function $$draw(sprites){var TMP_5,self=this;return $send($send(sprites.$flatten(),"sort_by",[],"z".$to_proc()),"each",[],(TMP_5=function(sprite){var self=TMP_5.$$s||this,$a;if(sprite==null)sprite=nil;if($truthy($truthy($a=sprite["$respond_to?"]("vanished?"))?sprite["$vanished?"]():$a)){return nil}return sprite.$draw()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_Sprite_draw_6.$$arity=1);Opal.defn(self,"$initialize",TMP_Sprite_initialize_7=function $$initialize(x,y,image){var $a,self=this;if(x==null){x=0}if(y==null){y=0}if(image==null){image=nil}$a=[x,y,image],self.x=$a[0],self.y=$a[1],self.image=$a[2],$a;self.z=0;self.angle=0;self.scale_x=self.scale_y=1;if($truthy(image)){self.center_x=$rb_divide(image.$width(),2);self.center_y=$rb_divide(image.$height(),2)}self.visible=true;self.vanished=false;return self.$_init_collision_info(self.image)},TMP_Sprite_initialize_7.$$arity=-1);self.$attr_accessor("z","visible");self.$attr_accessor("angle");self.$attr_accessor("scale_x","scale_y");self.$attr_accessor("center_x","center_y");self.$attr_reader("x","y");Opal.defn(self,"$x=",TMP_Sprite_x$eq_8=function(newx){var self=this;self.x=newx;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},TMP_Sprite_x$eq_8.$$arity=1);Opal.defn(self,"$y=",TMP_Sprite_y$eq_9=function(newy){var self=this;self.y=newy;if($truthy(self._matter_body)){return self.$_move_matter_body()}else{return nil}},TMP_Sprite_y$eq_9.$$arity=1);Opal.defn(self,"$image",TMP_Sprite_image_10=function $$image(){var self=this;return self.image},TMP_Sprite_image_10.$$arity=0);Opal.defn(self,"$image=",TMP_Sprite_image$eq_11=function(img){var self=this,$writer=nil;self.image=img;if($truthy(self.collision["$nil?"]())){$writer=[[0,0,$rb_minus(img.$width(),1),$rb_minus(img.$height(),1)]];$send(self,"collision=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(self.center_x["$nil?"]())){self.center_x=$rb_divide(img.$width(),2);return self.center_y=$rb_divide(img.$height(),2)}else{return nil}},TMP_Sprite_image$eq_11.$$arity=1);Opal.defn(self,"$vanish",TMP_Sprite_vanish_12=function $$vanish(){var self=this;return self.vanished=true},TMP_Sprite_vanish_12.$$arity=0);Opal.defn(self,"$vanished?",TMP_Sprite_vanished$q_13=function(){var self=this;return self.vanished},TMP_Sprite_vanished$q_13.$$arity=0);return(Opal.defn(self,"$draw",TMP_Sprite_draw_14=function $$draw(){var self=this;if($truthy(self.image["$nil?"]())){self.$raise("image not set to Sprite")}if($truthy(self.visible["$!"]())){return nil}return Opal.const_get_relative($nesting,"Window").$draw_ex(self.x,self.y,self.image,$hash2(["scale_x","scale_y","angle","center_x","center_y"],{scale_x:self.scale_x,scale_y:self.scale_y,angle:self.angle,center_x:self.center_x,center_y:self.center_y}))},TMP_Sprite_draw_14.$$arity=0),nil)&&"draw"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/window"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$now","$_load_resources","$dump_error","$to_proc","$!","$_loop","$clear","$draw_pause_screen","$nil?","$raise","$loop","$draw_box_fill","$width","$height","$draw_font","$default","$_init","$>=","$-","$+","$matter_enabled?","$matter_tick","$_on_tick","$box_fill","$sort","$==","$[]","$<=>","$each","$===","$draw","$drop","$draw_rot","$draw_scale","$draw_ex","$[]=","$line","$box","$circle","$circle_fill","$triangle","$triangle_fill","$new","$enqueue_draw","$push","$length"]);self.$require("dxopal/constants/colors");return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Window,self=$Window=$module($base,"Window");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Window_load_resources_1,TMP_Window_loop_3,TMP_Window_pause_4,TMP_Window_paused$q_5,TMP_Window_resume_6,TMP_Window_draw_pause_screen_7,TMP_Window__loop_11,TMP_Window__init_12,TMP_Window__img_13,TMP_Window_fps_14,TMP_Window_fps$eq_15,TMP_Window_real_fps_16,TMP_Window_width_17,TMP_Window_width$eq_18,TMP_Window_height_19,TMP_Window_height$eq_20,TMP_Window_bgcolor_21,TMP_Window_bgcolor$eq_22,TMP_Window_draw_23,TMP_Window_draw_scale_24,TMP_Window_draw_rot_25,TMP_Window_draw_ex_26,TMP_Window_draw_font_27,TMP_Window_draw_pixel_28,TMP_Window_draw_line_29,TMP_Window_draw_box_30,TMP_Window_draw_box_fill_31,TMP_Window_draw_circle_32,TMP_Window_draw_circle_fill_33,TMP_Window_draw_triangle_34,TMP_Window_draw_triangle_fill_35,TMP_Window_enqueue_draw_36;Opal.class_variable_set($Window,"@@fps",60);Opal.class_variable_set($Window,"@@real_fps",0);Opal.class_variable_set($Window,"@@real_fps_ct",1);Opal.class_variable_set($Window,"@@real_fps_t",Opal.const_get_relative($nesting,"Time").$now());Opal.class_variable_set($Window,"@@width",640);Opal.class_variable_set($Window,"@@height",480);Opal.class_variable_set($Window,"@@block",nil);Opal.class_variable_set($Window,"@@paused",false);Opal.defs(self,"$load_resources",TMP_Window_load_resources_1=function $$load_resources(){var TMP_2,self=this,$iter=TMP_Window_load_resources_1.$$p,block=$iter||nil;if($iter)TMP_Window_load_resources_1.$$p=null;return $send(Opal.const_get_relative($nesting,"RemoteResource"),"_load_resources",[],(TMP_2=function(){var self=TMP_2.$$s||this;return $send(Opal.const_get_relative($nesting,"DXOpal"),"dump_error",[],block.$to_proc())},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_Window_load_resources_1.$$arity=0);Opal.defs(self,"$loop",TMP_Window_loop_3=function $$loop(){var $a,self=this,$iter=TMP_Window_loop_3.$$p,block=$iter||nil,already_running=nil;if($iter)TMP_Window_loop_3.$$p=null;already_running=(($a=$Window.$$cvars["@@block"])==null?nil:$a)["$!"]()["$!"]();Opal.class_variable_set($Window,"@@block",block);if($truthy(already_running)){return nil}else{return self.$_loop()}},TMP_Window_loop_3.$$arity=0);Opal.defs(self,"$pause",TMP_Window_pause_4=function $$pause(){var $a,self=this;Opal.class_variable_set($Window,"@@paused",true);(($a=$Window.$$cvars["@@draw_queue"])==null?nil:$a).$clear();return self.$draw_pause_screen()},TMP_Window_pause_4.$$arity=0);Opal.defs(self,"$paused?",TMP_Window_paused$q_5=function(){var $a,self=this;return($a=$Window.$$cvars["@@paused"])==null?nil:$a},TMP_Window_paused$q_5.$$arity=0);Opal.defs(self,"$resume",TMP_Window_resume_6=function $$resume(){var $a,self=this;if($truthy((($a=$Window.$$cvars["@@block"])==null?nil:$a)["$nil?"]())){self.$raise("Window.resume is called before Window.loop")}Opal.class_variable_set($Window,"@@paused",false);return $send(Opal.const_get_relative($nesting,"Window"),"loop",[],(($a=$Window.$$cvars["@@block"])==null?nil:$a).$to_proc())},TMP_Window_resume_6.$$arity=0);Opal.defs(self,"$draw_pause_screen",TMP_Window_draw_pause_screen_7=function $$draw_pause_screen(){var self=this;Opal.const_get_relative($nesting,"Window").$draw_box_fill(0,0,Opal.const_get_relative($nesting,"Window").$width(),Opal.const_get_relative($nesting,"Window").$height(),Opal.const_get_relative($nesting,"C_BLACK"));return Opal.const_get_relative($nesting,"Window").$draw_font(0,0,"...PAUSE...",Opal.const_get_relative($nesting,"Font").$default(),$hash2(["color"],{color:Opal.const_get_relative($nesting,"C_WHITE")}))},TMP_Window_draw_pause_screen_7.$$arity=0);Opal.defs(self,"$_loop",TMP_Window__loop_11=function $$_loop(time){var $a,$b,TMP_8,TMP_9,TMP_10,self=this,t0=nil,sorted=nil;if(time==null){time=0}Opal.class_variable_set($Window,"@@img",$truthy($a=($b=$Window.$$cvars["@@img"])==null?nil:$b)?$a:self.$_init(($b=$Window.$$cvars["@@width"])==null?nil:$b,($b=$Window.$$cvars["@@height"])==null?nil:$b));t0=Opal.const_get_relative($nesting,"Time").$now();if($truthy($rb_ge($rb_minus(t0,($a=$Window.$$cvars["@@real_fps_t"])==null?nil:$a),1))){Opal.class_variable_set($Window,"@@real_fps",($a=$Window.$$cvars["@@real_fps_ct"])==null?nil:$a);Opal.class_variable_set($Window,"@@real_fps_ct",1);Opal.class_variable_set($Window,"@@real_fps_t",t0)}else{Opal.class_variable_set($Window,"@@real_fps_ct",$rb_plus(($a=$Window.$$cvars["@@real_fps_ct"])==null?nil:$a,1))}if($truthy(Opal.const_get_relative($nesting,"Sprite")["$matter_enabled?"]())){Opal.const_get_relative($nesting,"Sprite").$matter_tick(time)}Opal.const_get_relative($nesting,"Input").$_on_tick();Opal.class_variable_set($Window,"@@draw_queue",[]);if($truthy(($a=$Window.$$cvars["@@paused"])==null?nil:$a)){Opal.const_get_relative($nesting,"Window").$draw_pause_screen()}else{$send(Opal.const_get_relative($nesting,"DXOpal"),"dump_error",[],(($a=$Window.$$cvars["@@block"])==null?nil:$a).$to_proc())}(($a=$Window.$$cvars["@@img"])==null?nil:$a).$box_fill(0,0,($a=$Window.$$cvars["@@width"])==null?nil:$a,($a=$Window.$$cvars["@@height"])==null?nil:$a,($a=$Window.$$cvars["@@bgcolor"])==null?nil:$a);sorted=$send(($a=$Window.$$cvars["@@draw_queue"])==null?nil:$a,"sort",[],(TMP_8=function(a,b){var self=TMP_8.$$s||this;if(a==null)a=nil;if(b==null)b=nil;if(a["$[]"](0)["$=="](b["$[]"](0))){return a["$[]"](1)["$<=>"](b["$[]"](1))}else{return a["$[]"](0)["$<=>"](b["$[]"](0))}},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8));$send(sorted,"each",[],(TMP_9=function(item){var self=TMP_9.$$s||this,$c,$case=nil,$writer=nil;if(item==null)item=nil;return function(){$case=item["$[]"](2);if("image"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw",Opal.to_a(item.$drop(3)))}else if("image_rot"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_rot",Opal.to_a(item.$drop(3)))}else if("image_scale"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_scale",Opal.to_a(item.$drop(3)))}else if("draw_ex"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_ex",Opal.to_a(item.$drop(3)))}else if("font"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"draw_font",Opal.to_a(item.$drop(3)))}else if("pixel"["$==="]($case)){$writer=[].concat(Opal.to_a(item.$drop(3)));$send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if("line"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"line",Opal.to_a(item.$drop(3)))}else if("box"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"box",Opal.to_a(item.$drop(3)))}else if("box_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"box_fill",Opal.to_a(item.$drop(3)))}else if("circle"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"circle",Opal.to_a(item.$drop(3)))}else if("circle_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"circle_fill",Opal.to_a(item.$drop(3)))}else if("triangle"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"triangle",Opal.to_a(item.$drop(3)))}else if("triangle_fill"["$==="]($case)){return $send(($c=$Window.$$cvars["@@img"])==null?nil:$c,"triangle_fill",Opal.to_a(item.$drop(3)))}else{return nil}}()},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));return window.requestAnimationFrame((TMP_10=function(time){var self=TMP_10.$$s||this;if(time==null)time=nil;return self.$_loop(time)},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10))},TMP_Window__loop_11.$$arity=-1);Opal.defs(self,"$_init",TMP_Window__init_12=function $$_init(w,h){var self=this,canvas=nil,img=nil;canvas=document.getElementById("dxopal-canvas");canvas.width=w;canvas.height=h;img=Opal.const_get_relative($nesting,"Image").$new(w,h,$hash2(["canvas"],{canvas:canvas}));Opal.const_get_relative($nesting,"Input").$_init(canvas);return img},TMP_Window__init_12.$$arity=2);Opal.defs(self,"$_img",TMP_Window__img_13=function $$_img(){var $a,self=this;return($a=$Window.$$cvars["@@img"])==null?nil:$a},TMP_Window__img_13.$$arity=0);Opal.defs(self,"$fps",TMP_Window_fps_14=function $$fps(){var $a,self=this;return($a=$Window.$$cvars["@@fps"])==null?nil:$a},TMP_Window_fps_14.$$arity=0);Opal.defs(self,"$fps=",TMP_Window_fps$eq_15=function(w){var self=this;return Opal.class_variable_set($Window,"@@fps",w)},TMP_Window_fps$eq_15.$$arity=1);Opal.defs(self,"$real_fps",TMP_Window_real_fps_16=function $$real_fps(){var $a,self=this;return($a=$Window.$$cvars["@@real_fps"])==null?nil:$a},TMP_Window_real_fps_16.$$arity=0);Opal.defs(self,"$width",TMP_Window_width_17=function $$width(){var $a,self=this;return($a=$Window.$$cvars["@@width"])==null?nil:$a},TMP_Window_width_17.$$arity=0);Opal.defs(self,"$width=",TMP_Window_width$eq_18=function(w){var self=this;return Opal.class_variable_set($Window,"@@width",w)},TMP_Window_width$eq_18.$$arity=1);Opal.defs(self,"$height",TMP_Window_height_19=function $$height(){var $a,self=this;return($a=$Window.$$cvars["@@height"])==null?nil:$a},TMP_Window_height_19.$$arity=0);Opal.defs(self,"$height=",TMP_Window_height$eq_20=function(h){var self=this;return Opal.class_variable_set($Window,"@@height",h)},TMP_Window_height$eq_20.$$arity=1);Opal.class_variable_set($Window,"@@bgcolor",Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Constants"),"Colors"),"C_BLACK"));Opal.defs(self,"$bgcolor",TMP_Window_bgcolor_21=function $$bgcolor(){var $a,self=this;return($a=$Window.$$cvars["@@bgcolor"])==null?nil:$a},TMP_Window_bgcolor_21.$$arity=0);Opal.defs(self,"$bgcolor=",TMP_Window_bgcolor$eq_22=function(col){var self=this;return Opal.class_variable_set($Window,"@@bgcolor",col)},TMP_Window_bgcolor$eq_22.$$arity=1);Opal.defs(self,"$draw",TMP_Window_draw_23=function $$draw(x,y,image,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"image",x,y,image)},TMP_Window_draw_23.$$arity=-4);Opal.defs(self,"$draw_scale",TMP_Window_draw_scale_24=function $$draw_scale(x,y,image,scale_x,scale_y,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_scale",x,y,image,scale_x,scale_y,center_x,center_y)},TMP_Window_draw_scale_24.$$arity=-6);Opal.defs(self,"$draw_rot",TMP_Window_draw_rot_25=function $$draw_rot(x,y,image,angle,center_x,center_y,z){var self=this;if(center_x==null){center_x=nil}if(center_y==null){center_y=nil}if(z==null){z=0}return self.$enqueue_draw(z,"image_rot",x,y,image,angle,center_x,center_y)},TMP_Window_draw_rot_25.$$arity=-5);Opal.defs(self,"$draw_ex",TMP_Window_draw_ex_26=function $$draw_ex(x,y,image,options){var $a,self=this;if(options==null){options=$hash2([],{})}return self.$enqueue_draw($truthy($a=options["$[]"]("z"))?$a:0,"draw_ex",x,y,image,options)},TMP_Window_draw_ex_26.$$arity=-4);Opal.defs(self,"$draw_font",TMP_Window_draw_font_27=function $$draw_font(x,y,string,font,option){var $a,self=this,z=nil,color=nil;if(option==null){option=$hash2([],{})}z=$truthy($a=option["$[]"]("z"))?$a:0;color=$truthy($a=option["$[]"]("color"))?$a:[255,255,255];return self.$enqueue_draw(z,"font",x,y,string,font,color)},TMP_Window_draw_font_27.$$arity=-5);Opal.defs(self,"$draw_pixel",TMP_Window_draw_pixel_28=function $$draw_pixel(x,y,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"pixel",x,y,color)},TMP_Window_draw_pixel_28.$$arity=-4);Opal.defs(self,"$draw_line",TMP_Window_draw_line_29=function $$draw_line(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"line",x1,y1,x2,y2,color)},TMP_Window_draw_line_29.$$arity=-6);Opal.defs(self,"$draw_box",TMP_Window_draw_box_30=function $$draw_box(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box",x1,y1,x2,y2,color)},TMP_Window_draw_box_30.$$arity=-6);Opal.defs(self,"$draw_box_fill",TMP_Window_draw_box_fill_31=function $$draw_box_fill(x1,y1,x2,y2,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"box_fill",x1,y1,x2,y2,color)},TMP_Window_draw_box_fill_31.$$arity=-6);Opal.defs(self,"$draw_circle",TMP_Window_draw_circle_32=function $$draw_circle(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle",x,y,r,color)},TMP_Window_draw_circle_32.$$arity=-5);Opal.defs(self,"$draw_circle_fill",TMP_Window_draw_circle_fill_33=function $$draw_circle_fill(x,y,r,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"circle_fill",x,y,r,color)},TMP_Window_draw_circle_fill_33.$$arity=-5);Opal.defs(self,"$draw_triangle",TMP_Window_draw_triangle_34=function $$draw_triangle(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle",x1,y1,x2,y2,x3,y3,color)},TMP_Window_draw_triangle_34.$$arity=-8);Opal.defs(self,"$draw_triangle_fill",TMP_Window_draw_triangle_fill_35=function $$draw_triangle_fill(x1,y1,x2,y2,x3,y3,color,z){var self=this;if(z==null){z=0}return self.$enqueue_draw(z,"triangle_fill",x1,y1,x2,y2,x3,y3,color)},TMP_Window_draw_triangle_fill_35.$$arity=-8);Opal.defs(self,"$enqueue_draw",TMP_Window_enqueue_draw_36=function $$enqueue_draw(z,$a_rest){var $b,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}return(($b=$Window.$$cvars["@@draw_queue"])==null?nil:$b).$push([z,(($b=$Window.$$cvars["@@draw_queue"])==null?nil:$b).$length()].concat(Opal.to_a(args)))},TMP_Window_enqueue_draw_36.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["dxopal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","1.2.0")}($nesting[0],$nesting)};Opal.modules["set"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs"},TMP_Set_inspect_6.$$arity=0);Opal.defn(self,"$==",TMP_Set_$eq$eq_8=function(other){var $a,TMP_7,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$instance_of?"](self.$class()))){return self.hash["$=="](other.$instance_variable_get("@hash"))}else if($truthy($truthy($a=other["$is_a?"](Opal.const_get_relative($nesting,"Set")))?self.$size()["$=="](other.$size()):$a)){return $send(other,"all?",[],(TMP_7=function(o){var self=TMP_7.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash["$include?"](o)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))}else{return false}},TMP_Set_$eq$eq_8.$$arity=1);Opal.defn(self,"$add",TMP_Set_add_9=function $$add(o){var self=this,$writer=nil;$writer=[o,true];$send(self.hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self},TMP_Set_add_9.$$arity=1);Opal.alias(self,"<<","add");Opal.defn(self,"$classify",TMP_Set_classify_10=function $$classify(){var TMP_11,TMP_12,self=this,$iter=TMP_Set_classify_10.$$p,block=$iter||nil,result=nil;if($iter)TMP_Set_classify_10.$$p=null;if(block!==nil){}else{return self.$enum_for("classify")}result=$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_11=function(h,k){var self=TMP_11.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,self.$class().$new()];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11));$send(self,"each",[],(TMP_12=function(item){var self=TMP_12.$$s||this;if(item==null)item=nil;return result["$[]"](Opal.yield1(block,item)).$add(item)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));return result},TMP_Set_classify_10.$$arity=0);Opal.defn(self,"$collect!",TMP_Set_collect$B_13=function(){var TMP_14,self=this,$iter=TMP_Set_collect$B_13.$$p,block=$iter||nil,result=nil;if($iter)TMP_Set_collect$B_13.$$p=null;if(block!==nil){}else{return self.$enum_for("collect!")}result=self.$class().$new();$send(self,"each",[],(TMP_14=function(item){var self=TMP_14.$$s||this;if(item==null)item=nil;return result["$<<"](Opal.yield1(block,item))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));return self.$replace(result)},TMP_Set_collect$B_13.$$arity=0);Opal.alias(self,"map!","collect!");Opal.defn(self,"$delete",TMP_Set_delete_15=function(o){var self=this;self.hash.$delete(o);return self},TMP_Set_delete_15.$$arity=1);Opal.defn(self,"$delete?",TMP_Set_delete$q_16=function(o){var self=this;if($truthy(self["$include?"](o))){self.$delete(o);return self}else{return nil}},TMP_Set_delete$q_16.$$arity=1);Opal.defn(self,"$delete_if",TMP_Set_delete_if_17=function $$delete_if(){try{var $a,TMP_18,TMP_19,self=this,$iter=TMP_Set_delete_if_17.$$p,$yield=$iter||nil;if($iter)TMP_Set_delete_if_17.$$p=null;$truthy($a=$yield!==nil)?$a:Opal.ret(self.$enum_for("delete_if"));$send($send(self,"select",[],(TMP_18=function(o){var self=TMP_18.$$s||this;if(o==null)o=nil;return Opal.yield1($yield,o)},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18)),"each",[],(TMP_19=function(o){var self=TMP_19.$$s||this;if(self.hash==null)self.hash=nil;if(o==null)o=nil;return self.hash.$delete(o)},TMP_19.$$s=self,TMP_19.$$arity=1,TMP_19));return self}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Set_delete_if_17.$$arity=0);Opal.defn(self,"$add?",TMP_Set_add$q_20=function(o){var self=this;if($truthy(self["$include?"](o))){return nil}else{return self.$add(o)}},TMP_Set_add$q_20.$$arity=1);Opal.defn(self,"$each",TMP_Set_each_21=function $$each(){var self=this,$iter=TMP_Set_each_21.$$p,block=$iter||nil;if($iter)TMP_Set_each_21.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}$send(self.hash,"each_key",[],block.$to_proc());return self},TMP_Set_each_21.$$arity=0);Opal.defn(self,"$empty?",TMP_Set_empty$q_22=function(){var self=this;return self.hash["$empty?"]()},TMP_Set_empty$q_22.$$arity=0);Opal.defn(self,"$eql?",TMP_Set_eql$q_24=function(other){var TMP_23,self=this;return self.hash["$eql?"]($send(other,"instance_eval",[],(TMP_23=function(){var self=TMP_23.$$s||this;if(self.hash==null)self.hash=nil;return self.hash},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23)))},TMP_Set_eql$q_24.$$arity=1);Opal.defn(self,"$clear",TMP_Set_clear_25=function $$clear(){var self=this;self.hash.$clear();return self},TMP_Set_clear_25.$$arity=0);Opal.defn(self,"$include?",TMP_Set_include$q_26=function(o){var self=this;return self.hash["$include?"](o)},TMP_Set_include$q_26.$$arity=1);Opal.alias(self,"member?","include?");Opal.defn(self,"$merge",TMP_Set_merge_28=function $$merge(enum$){var TMP_27,self=this;$send(enum$,"each",[],(TMP_27=function(item){var self=TMP_27.$$s||this;if(item==null)item=nil;return self.$add(item)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));return self},TMP_Set_merge_28.$$arity=1);Opal.defn(self,"$replace",TMP_Set_replace_29=function $$replace(enum$){var self=this;self.$clear();self.$merge(enum$);return self},TMP_Set_replace_29.$$arity=1);Opal.defn(self,"$size",TMP_Set_size_30=function $$size(){var self=this;return self.hash.$size()},TMP_Set_size_30.$$arity=0);Opal.alias(self,"length","size");Opal.defn(self,"$subtract",TMP_Set_subtract_32=function $$subtract(enum$){var TMP_31,self=this;$send(enum$,"each",[],(TMP_31=function(item){var self=TMP_31.$$s||this;if(item==null)item=nil;return self.$delete(item)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));return self},TMP_Set_subtract_32.$$arity=1);Opal.defn(self,"$|",TMP_Set_$_33=function(enum$){var self=this;if($truthy(enum$["$respond_to?"]("each"))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be enumerable")}return self.$dup().$merge(enum$)},TMP_Set_$_33.$$arity=1);Opal.defn(self,"$superset?",TMP_Set_superset$q_35=function(set){var $a,TMP_34,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(self.$size(),set.$size()))){return false}return $send(set,"all?",[],(TMP_34=function(o){var self=TMP_34.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34))},TMP_Set_superset$q_35.$$arity=1);Opal.alias(self,">=","superset?");Opal.defn(self,"$proper_superset?",TMP_Set_proper_superset$q_37=function(set){var $a,TMP_36,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(self.$size(),set.$size()))){return false}return $send(set,"all?",[],(TMP_36=function(o){var self=TMP_36.$$s||this;if(o==null)o=nil;return self["$include?"](o)},TMP_36.$$s=self,TMP_36.$$arity=1,TMP_36))},TMP_Set_proper_superset$q_37.$$arity=1);Opal.alias(self,">","proper_superset?");Opal.defn(self,"$subset?",TMP_Set_subset$q_39=function(set){var $a,TMP_38,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_lt(set.$size(),self.$size()))){return false}return $send(self,"all?",[],(TMP_38=function(o){var self=TMP_38.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_38.$$s=self,TMP_38.$$arity=1,TMP_38))},TMP_Set_subset$q_39.$$arity=1);Opal.alias(self,"<=","subset?");Opal.defn(self,"$proper_subset?",TMP_Set_proper_subset$q_41=function(set){var $a,TMP_40,self=this;$truthy($a=set["$is_a?"](Opal.const_get_relative($nesting,"Set")))?$a:self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"value must be a set");if($truthy($rb_le(set.$size(),self.$size()))){return false}return $send(self,"all?",[],(TMP_40=function(o){var self=TMP_40.$$s||this;if(o==null)o=nil;return set["$include?"](o)},TMP_40.$$s=self,TMP_40.$$arity=1,TMP_40))},TMP_Set_proper_subset$q_41.$$arity=1);Opal.alias(self,"<","proper_subset?");Opal.alias(self,"+","|");Opal.alias(self,"union","|");return(Opal.defn(self,"$to_a",TMP_Set_to_a_42=function $$to_a(){var self=this;return self.hash.$keys()},TMP_Set_to_a_42.$$arity=0),nil)&&"to_a"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $Enumerable,self=$Enumerable=$module($base,"Enumerable");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Enumerable_to_set_43;Opal.defn(self,"$to_set",TMP_Enumerable_to_set_43=function $$to_set(klass,$a_rest){var self=this,args,$iter=TMP_Enumerable_to_set_43.$$p,block=$iter||nil;if(klass==null){klass=Opal.const_get_relative($nesting,"Set")}var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($iter)TMP_Enumerable_to_set_43.$$p=null;return $send(klass,"new",[self].concat(Opal.to_a(args)),block.$to_proc())},TMP_Enumerable_to_set_43.$$arity=-1)}($nesting[0],$nesting)};Opal.modules["ast/node"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$to_sym","$freeze","$to_a","$assign_properties","$hash","$class","$eql?","$type","$children","$each","$instance_variable_set","$protected","$private","$==","$nil?","$send","$original_dup","$equal?","$respond_to?","$to_ast","$updated","$+","$*","$fancy_type","$is_a?","$to_sexp","$inspect","$map","$to_sexp_array","$gsub","$to_s"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_initialize_1,TMP_Node_eql$q_2,TMP_Node_assign_properties_4,TMP_Node_dup_5,TMP_Node_updated_6,TMP_Node_$eq$eq_7,TMP_Node_concat_8,TMP_Node_append_9,TMP_Node_to_sexp_11,TMP_Node_inspect_13,TMP_Node_to_ast_14,TMP_Node_to_sexp_array_16,TMP_Node_fancy_type_17;def.type=def.children=nil;self.$attr_reader("type");self.$attr_reader("children");Opal.alias(self,"to_a","children");self.$attr_reader("hash");Opal.defn(self,"$initialize",TMP_Node_initialize_1=function $$initialize(type,children,properties){var $a,self=this;if(children==null){children=[]}if(properties==null){properties=$hash2([],{})}$a=[type.$to_sym(),children.$to_a().$freeze()],self.type=$a[0],self.children=$a[1],$a;self.$assign_properties(properties);self.hash=[self.type,self.children,self.$class()].$hash();return self.$freeze()},TMP_Node_initialize_1.$$arity=-2);Opal.defn(self,"$eql?",TMP_Node_eql$q_2=function(other){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$class()["$eql?"](other.$class()))?self.type["$eql?"](other.$type()):$b)?self.children["$eql?"](other.$children()):$a},TMP_Node_eql$q_2.$$arity=1);Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_4=function $$assign_properties(properties){var TMP_3,self=this;$send(properties,"each",[],(TMP_3=function(name,value){var self=TMP_3.$$s||this;if(name==null)name=nil;if(value==null)value=nil;return self.$instance_variable_set(""+"@"+name,value)},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3));return nil},TMP_Node_assign_properties_4.$$arity=1);self.$protected("assign_properties");Opal.alias(self,"original_dup","dup");self.$private("original_dup");Opal.defn(self,"$dup",TMP_Node_dup_5=function $$dup(){var self=this;return self},TMP_Node_dup_5.$$arity=0);Opal.alias(self,"clone","dup");Opal.defn(self,"$updated",TMP_Node_updated_6=function $$updated(type,children,properties){var $a,$b,self=this,new_type=nil,new_children=nil,new_properties=nil;if(type==null){type=nil}if(children==null){children=nil}if(properties==null){properties=nil}new_type=$truthy($a=type)?$a:self.type;new_children=$truthy($a=children)?$a:self.children;new_properties=$truthy($a=properties)?$a:$hash2([],{});if($truthy($truthy($a=($b=self.type["$=="](new_type))?self.children["$=="](new_children):self.type["$=="](new_type))?properties["$nil?"]():$a)){return self}else{return self.$original_dup().$send("initialize",new_type,new_children,new_properties)}},TMP_Node_updated_6.$$arity=-1);Opal.defn(self,"$==",TMP_Node_$eq$eq_7=function(other){var $a,self=this;if($truthy(self["$equal?"](other))){return true}else if($truthy(other["$respond_to?"]("to_ast"))){other=other.$to_ast();return($a=other.$type()["$=="](self.$type()))?other.$children()["$=="](self.$children()):other.$type()["$=="](self.$type())}else{return false}},TMP_Node_$eq$eq_7.$$arity=1);Opal.defn(self,"$concat",TMP_Node_concat_8=function $$concat(array){var self=this;return self.$updated(nil,$rb_plus(self.children,array.$to_a()))},TMP_Node_concat_8.$$arity=1);Opal.alias(self,"+","concat");Opal.defn(self,"$append",TMP_Node_append_9=function $$append(element){var self=this;return self.$updated(nil,$rb_plus(self.children,[element]))},TMP_Node_append_9.$$arity=1);Opal.alias(self,"<<","append");Opal.defn(self,"$to_sexp",TMP_Node_to_sexp_11=function $$to_sexp(indent){var TMP_10,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"("+self.$fancy_type();$send(self.$children(),"each",[],(TMP_10=function(child){var self=TMP_10.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return sexp=$rb_plus(sexp,""+"\n"+child.$to_sexp($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+" "+child.$inspect())}},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10));sexp=$rb_plus(sexp,")");return sexp},TMP_Node_to_sexp_11.$$arity=-1);Opal.alias(self,"to_s","to_sexp");Opal.defn(self,"$inspect",TMP_Node_inspect_13=function $$inspect(indent){var TMP_12,self=this,indented=nil,sexp=nil;if(indent==null){indent=0}indented=$rb_times(" ",indent);sexp=""+indented+"s(:"+self.type;$send(self.$children(),"each",[],(TMP_12=function(child){var self=TMP_12.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return sexp=$rb_plus(sexp,""+",\n"+child.$inspect($rb_plus(indent,1)))}else{return sexp=$rb_plus(sexp,""+", "+child.$inspect())}},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));sexp=$rb_plus(sexp,")");return sexp},TMP_Node_inspect_13.$$arity=-1);Opal.defn(self,"$to_ast",TMP_Node_to_ast_14=function $$to_ast(){var self=this;return self},TMP_Node_to_ast_14.$$arity=0);Opal.defn(self,"$to_sexp_array",TMP_Node_to_sexp_array_16=function $$to_sexp_array(){var TMP_15,self=this,children_sexp_arrs=nil;children_sexp_arrs=$send(self.$children(),"map",[],(TMP_15=function(child){var self=TMP_15.$$s||this;if(child==null)child=nil;if($truthy(child["$is_a?"](Opal.const_get_relative($nesting,"Node")))){return child.$to_sexp_array()}else{return child}},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));return[self.$type()].concat(Opal.to_a(children_sexp_arrs))},TMP_Node_to_sexp_array_16.$$arity=0);self.$protected();return(Opal.defn(self,"$fancy_type",TMP_Node_fancy_type_17=function $$fancy_type(){var self=this;return self.type.$to_s().$gsub("_","-")},TMP_Node_fancy_type_17.$$arity=0),nil)&&"fancy_type"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor/mixin"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$nil?","$to_ast","$type","$respond_to?","$send","$handler_missing","$map","$to_a","$process"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var $Mixin,self=$Mixin=$module($base,"Mixin");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Mixin_process_1,TMP_Mixin_process_all_3,TMP_Mixin_handler_missing_4;Opal.defn(self,"$process",TMP_Mixin_process_1=function $$process(node){var self=this,on_handler=nil,new_node=nil;if($truthy(node["$nil?"]())){return nil}node=node.$to_ast();on_handler=""+"on_"+node.$type();if($truthy(self["$respond_to?"](on_handler))){new_node=self.$send(on_handler,node)}else{new_node=self.$handler_missing(node)}if($truthy(new_node)){node=new_node}return node},TMP_Mixin_process_1.$$arity=1);Opal.defn(self,"$process_all",TMP_Mixin_process_all_3=function $$process_all(nodes){var TMP_2,self=this;return $send(nodes.$to_a(),"map",[],(TMP_2=function(node){var self=TMP_2.$$s||this;if(node==null)node=nil;return self.$process(node)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Mixin_process_all_3.$$arity=1);Opal.defn(self,"$handler_missing",TMP_Mixin_handler_missing_4=function $$handler_missing(node){var self=this;return nil},TMP_Mixin_handler_missing_4.$$arity=1)}($nesting[0],$nesting)})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$include"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$require("ast/processor/mixin");return self.$include(Opal.const_get_relative($nesting,"Mixin"))})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["ast/sexp"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Sexp,self=$Sexp=$module($base,"Sexp");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Sexp_s_1;Opal.defn(self,"$s",TMP_Sexp_s_1=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Node").$new(type,children)},TMP_Sexp_s_1.$$arity=-2)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["ast"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$require"]);return function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$require("ast/node");self.$require("ast/processor");self.$require("ast/sexp")}($nesting[0],$nesting)};Opal.modules["parser/ast/node"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$[]","$frozen?","$dup","$node=","$-"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_assign_properties_1;self.$attr_reader("location");Opal.alias(self,"loc","location");return(Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_1=function $$assign_properties(properties){var self=this,location=nil,$writer=nil;if($truthy(location=properties["$[]"]("location"))){if($truthy(location["$frozen?"]())){location=location.$dup()}$writer=[self];$send(location,"node=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.location=location}else{return nil}},TMP_Node_assign_properties_1.$$arity=1),nil)&&"assign_properties"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified("::","AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$attr_reader","$[]","$frozen?","$dup","$merge!","$loc","$line","$column"]);self.$require("ast");self.$require("parser/ast/node");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Node(){}var self=$Node=$klass($base,$super,"Node",$Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Node_assign_properties_1,TMP_Node_line_2,TMP_Node_column_3;def.meta=nil;self.$attr_reader("meta");Opal.defn(self,"$assign_properties",TMP_Node_assign_properties_1=function $$assign_properties(properties){var $a,self=this,$iter=TMP_Node_assign_properties_1.$$p,$yield=$iter||nil,meta=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Node_assign_properties_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}if($truthy(meta=properties["$[]"]("meta"))){if($truthy(meta["$frozen?"]())){meta=meta.$dup()}self.meta["$merge!"](meta)}else{self.meta=$truthy($a=self.meta)?$a:$hash2([],{})}return $send(self,Opal.find_super_dispatcher(self,"assign_properties",TMP_Node_assign_properties_1,false),$zuper,$iter)},TMP_Node_assign_properties_1.$$arity=1);Opal.defn(self,"$line",TMP_Node_line_2=function $$line(){var self=this;if($truthy(self.$loc())){return self.$loc().$line()}else{return nil}},TMP_Node_line_2.$$arity=0);return(Opal.defn(self,"$column",TMP_Node_column_3=function $$column(){var self=this;if($truthy(self.$loc())){return self.$loc().$column()}else{return nil}},TMP_Node_column_3.$$arity=0),nil)&&"column"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"AST"),"Node"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["racc/parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}var $a,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$send=Opal.send;Opal.add_stubs(["$[]","$class","$<","$size","$[]=","$-","$__send__","$_racc_setup","$raise","$_racc_init_sysvars","$catch","$!=","$next_token","$racc_read_token","$+","$>=","$==","$_racc_evalact","$!","$>","$push","$racc_shift","$-@","$_racc_do_reduce","$===","$racc_accept","$throw","$on_error","$<=","$pop","$racc_e_pop","$inspect","$racc_next_state","$*","$racc_reduce","$sprintf","$token_to_str","$print","$racc_token2str","$puts","$racc_print_stacks","$empty?","$each","$racc_print_states","$each_index"]);(function($base,$parent_nesting){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ParseError(){}var self=$ParseError=$klass($base,$super,"ParseError",$ParseError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting)})($nesting[0],$nesting);if($truthy(($a=Opal.const_get_qualified("::","ParseError","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"ParseError",Opal.const_get_qualified(Opal.const_get_relative($nesting,"Racc"),"ParseError"))}return function($base,$parent_nesting){var $Racc,self=$Racc=$module($base,"Racc");var def=self.$$proto,$nesting=[self].concat($parent_nesting),$a;if($truthy(($a=Opal.const_get_relative($nesting,"Racc_No_Extensions","skip_raise"))?"constant":nil)){}else{Opal.const_set($nesting[0],"Racc_No_Extensions",false)}(function($base,$super,$parent_nesting){function $Parser(){}var self=$Parser=$klass($base,$super,"Parser",$Parser);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Parser_racc_runtime_type_1,TMP_Parser__racc_setup_2,TMP_Parser__racc_init_sysvars_3,TMP_Parser_do_parse_4,TMP_Parser_next_token_5,TMP_Parser__racc_do_parse_rb_7,TMP_Parser_yyparse_8,TMP_Parser__racc_yyparse_rb_11,TMP_Parser__racc_evalact_13,TMP_Parser__racc_do_reduce_14,TMP_Parser_on_error_15,TMP_Parser_yyerror_16,TMP_Parser_yyaccept_17,TMP_Parser_yyerrok_18,TMP_Parser_racc_read_token_19,TMP_Parser_racc_shift_20,TMP_Parser_racc_reduce_22,TMP_Parser_racc_accept_23,TMP_Parser_racc_e_pop_24,TMP_Parser_racc_next_state_25,TMP_Parser_racc_print_stacks_27,TMP_Parser_racc_print_states_29,TMP_Parser_racc_token2str_30,TMP_Parser_token_to_str_31;def.yydebug=def.racc_debug_out=def.racc_error_status=def.racc_t=def.racc_vstack=def.racc_val=def.racc_state=def.racc_tstack=nil;Opal.const_set($nesting[0],"Racc_Runtime_Version","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6");Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1));Opal.const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb");Opal.const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb");Opal.const_set($nesting[0],"Racc_Runtime_Core_Version",Opal.const_get_relative($nesting,"Racc_Runtime_Core_Version_R"));Opal.const_set($nesting[0],"Racc_Runtime_Core_Revision",Opal.const_get_relative($nesting,"Racc_Runtime_Core_Revision_R"));Opal.const_set($nesting[0],"Racc_Runtime_Type","ruby");Opal.defs(Opal.const_get_relative($nesting,"Parser"),"$racc_runtime_type",TMP_Parser_racc_runtime_type_1=function $$racc_runtime_type(){var self=this;return Opal.const_get_relative($nesting,"Racc_Runtime_Type")},TMP_Parser_racc_runtime_type_1.$$arity=0);Opal.defn(self,"$_racc_setup",TMP_Parser__racc_setup_2=function $$_racc_setup(){var $a,$b,$c,self=this,arg=nil,$writer=nil;if($gvars.stderr==null)$gvars.stderr=nil;if($truthy(Opal.const_get_qualified(self.$class(),"Racc_debug_parser"))){}else{self.yydebug=false}if($truthy(($a=self["yydebug"],$a!=null&&$a!==nil)?"instance-variable":nil)){}else{self.yydebug=false}if($truthy(self.yydebug)){if($truthy(($b=self["racc_debug_out"],$b!=null&&$b!==nil)?"instance-variable":nil)){}else{self.racc_debug_out=$gvars.stderr}self.racc_debug_out=$truthy($c=self.racc_debug_out)?$c:$gvars.stderr}arg=Opal.const_get_qualified(self.$class(),"Racc_arg");if($truthy($rb_lt(arg.$size(),14))){$writer=[13,true];$send(arg,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return arg},TMP_Parser__racc_setup_2.$$arity=0);Opal.defn(self,"$_racc_init_sysvars",TMP_Parser__racc_init_sysvars_3=function $$_racc_init_sysvars(){var self=this;self.racc_state=[0];self.racc_tstack=[];self.racc_vstack=[];self.racc_t=nil;self.racc_val=nil;self.racc_read_next=true;self.racc_user_yyerror=false;return self.racc_error_status=0},TMP_Parser__racc_init_sysvars_3.$$arity=0);Opal.defn(self,"$do_parse",TMP_Parser_do_parse_4=function $$do_parse(){var self=this;return self.$__send__(Opal.const_get_relative($nesting,"Racc_Main_Parsing_Routine"),self.$_racc_setup(),false)},TMP_Parser_do_parse_4.$$arity=0);Opal.defn(self,"$next_token",TMP_Parser_next_token_5=function $$next_token(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"),""+self.$class()+"#next_token is not defined")},TMP_Parser_next_token_5.$$arity=0);Opal.defn(self,"$_racc_do_parse_rb",TMP_Parser__racc_do_parse_rb_7=function $$_racc_do_parse_rb(arg,in_debug){var $a,$b,TMP_6,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,tok=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();tok=act=i=nil;return $send(self,"catch",["racc_end_parse"],(TMP_6=function(){var self=TMP_6.$$s||this,$c,$d,$e;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(self.racc_t==null)self.racc_t=nil;if(self.yydebug==null)self.yydebug=nil;if(self.racc_val==null)self.racc_val=nil;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){if($truthy(self.racc_read_next)){if($truthy(self.racc_t["$!="](0))){$e=self.$next_token(),$d=Opal.to_ary($e),tok=$d[0]==null?nil:$d[0],self.racc_val=$d[1]==null?nil:$d[1],$e;if($truthy(tok)){self.racc_t=$truthy($d=token_table["$[]"](tok))?$d:1}else{self.racc_t=0}if($truthy(self.yydebug)){self.$racc_read_token(self.racc_t,tok,self.racc_val)}self.racc_read_next=false}}i=$rb_plus(i,self.racc_t);if($truthy($truthy($d=$truthy($e=$rb_ge(i,0))?act=action_table["$[]"](i):$e)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$d)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},TMP_6.$$s=self,TMP_6.$$arity=0,TMP_6))},TMP_Parser__racc_do_parse_rb_7.$$arity=2);Opal.defn(self,"$yyparse",TMP_Parser_yyparse_8=function $$yyparse(recv,mid){var self=this;return self.$__send__(Opal.const_get_relative($nesting,"Racc_YY_Parse_Method"),recv,mid,self.$_racc_setup(),true)},TMP_Parser_yyparse_8.$$arity=2);Opal.defn(self,"$_racc_yyparse_rb",TMP_Parser__racc_yyparse_rb_11=function $$_racc_yyparse_rb(recv,mid,arg,c_debug){var $a,$b,TMP_9,self=this,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,_=nil,token_table=nil,act=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],action_default=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],token_table=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],$b;self.$_racc_init_sysvars();act=nil;i=nil;return $send(self,"catch",["racc_end_parse"],(TMP_9=function(){var self=TMP_9.$$s||this,$c,$d,TMP_10;if(self.racc_state==null)self.racc_state=nil;while(!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){while($truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg))){}}return $send(recv,"__send__",[mid],(TMP_10=function(tok,val){var self=TMP_10.$$s||this,$e,$f,$g,$h,$i;if(self.racc_t==null)self.racc_t=nil;if(self.racc_state==null)self.racc_state=nil;if(self.racc_read_next==null)self.racc_read_next=nil;if(tok==null)tok=nil;if(val==null)val=nil;if($truthy(tok)){self.racc_t=$truthy($e=token_table["$[]"](tok))?$e:1}else{self.racc_t=0}self.racc_val=val;self.racc_read_next=false;i=$rb_plus(i,self.racc_t);if($truthy($truthy($e=$truthy($f=$rb_ge(i,0))?act=action_table["$[]"](i):$f)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$e)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}while($truthy($truthy($f=$truthy($g=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$g:self.racc_read_next["$!"]())?$f:self.racc_t["$=="](0))){if($truthy($truthy($f=$truthy($g=$truthy($h=$truthy($i=i)?i=$rb_plus(i,self.racc_t):$i)?$rb_ge(i,0):$h)?act=action_table["$[]"](i):$g)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$f)){}else{act=action_default["$[]"](self.racc_state["$[]"](-1))}while($truthy(act=self.$_racc_evalact(act,arg))){}}},TMP_10.$$s=self,TMP_10.$$arity=2,TMP_10))},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))},TMP_Parser__racc_yyparse_rb_11.$$arity=4);Opal.defn(self,"$_racc_evalact",TMP_Parser__racc_evalact_13=function $$_racc_evalact(act,arg){var $a,$b,TMP_12,$c,self=this,action_table=nil,action_check=nil,_=nil,action_pointer=nil,shift_n=nil,reduce_n=nil,code=nil,$case=nil,i=nil;$b=arg,$a=Opal.to_ary($b),action_table=$a[0]==null?nil:$a[0],action_check=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],action_pointer=$a[3]==null?nil:$a[3],_=$a[4]==null?nil:$a[4],_=$a[5]==null?nil:$a[5],_=$a[6]==null?nil:$a[6],_=$a[7]==null?nil:$a[7],_=$a[8]==null?nil:$a[8],_=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],shift_n=$a[11]==null?nil:$a[11],reduce_n=$a[12]==null?nil:$a[12],_=$a[13]==null?nil:$a[13],_=$a[14]==null?nil:$a[14],$b;if($truthy($truthy($a=$rb_gt(act,0))?$rb_lt(act,shift_n):$a)){if($truthy($rb_gt(self.racc_error_status,0))){if(self.racc_t["$=="](1)){}else{self.racc_error_status=$rb_minus(self.racc_error_status,1)}}self.racc_vstack.$push(self.racc_val);self.racc_state.$push(act);self.racc_read_next=true;if($truthy(self.yydebug)){self.racc_tstack.$push(self.racc_t);self.$racc_shift(self.racc_t,self.racc_tstack,self.racc_vstack)}}else if($truthy($truthy($a=$rb_lt(act,0))?$rb_gt(act,reduce_n["$-@"]()):$a)){code=$send(self,"catch",["racc_jump"],(TMP_12=function(){var self=TMP_12.$$s||this;if(self.racc_state==null)self.racc_state=nil;self.racc_state.$push(self.$_racc_do_reduce(arg,act));return false},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));if($truthy(code)){$case=code;if(1["$==="]($case)){self.racc_user_yyerror=true;return reduce_n["$-@"]()}else if(2["$==="]($case)){return shift_n}else{self.$raise("[Racc Bug] unknown jump code")}}}else if(act["$=="](shift_n)){if($truthy(self.yydebug)){self.$racc_accept()}self.$throw("racc_end_parse",self.racc_vstack["$[]"](0))}else if(act["$=="](reduce_n["$-@"]())){$case=self.racc_error_status;if((0)["$==="]($case)){if($truthy(arg["$[]"](21))){}else{self.$on_error(self.racc_t,self.racc_val,self.racc_vstack)}}else if(3["$==="]($case)){if(self.racc_t["$=="](0)){self.$throw("racc_end_parse",nil)}self.racc_read_next=true}self.racc_user_yyerror=false;self.racc_error_status=3;while($truthy(true)){if($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))){i=$rb_plus(i,1);if($truthy($truthy($b=$truthy($c=$rb_ge(i,0))?act=action_table["$[]"](i):$c)?action_check["$[]"](i)["$=="](self.racc_state["$[]"](-1)):$b)){break}}if($truthy($rb_le(self.racc_state.$size(),1))){self.$throw("racc_end_parse",nil)}self.racc_state.$pop();self.racc_vstack.$pop();if($truthy(self.yydebug)){self.racc_tstack.$pop();self.$racc_e_pop(self.racc_state,self.racc_tstack,self.racc_vstack)}}return act}else{self.$raise(""+"[Racc Bug] unknown action "+act.$inspect())}if($truthy(self.yydebug)){self.$racc_next_state(self.racc_state["$[]"](-1),self.racc_state)}return nil},TMP_Parser__racc_evalact_13.$$arity=2);Opal.defn(self,"$_racc_do_reduce",TMP_Parser__racc_do_reduce_14=function $$_racc_do_reduce(arg,act){var $a,$b,self=this,_=nil,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,nt_base=nil,reduce_table=nil,use_result=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,reduce_to=nil,method_id=nil,void_array=nil,tmp_t=nil,tmp_v=nil,$writer=nil,k1=nil,curstate=nil;$b=arg,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],_=$a[2]==null?nil:$a[2],_=$a[3]==null?nil:$a[3],goto_table=$a[4]==null?nil:$a[4],goto_check=$a[5]==null?nil:$a[5],goto_default=$a[6]==null?nil:$a[6],goto_pointer=$a[7]==null?nil:$a[7],nt_base=$a[8]==null?nil:$a[8],reduce_table=$a[9]==null?nil:$a[9],_=$a[10]==null?nil:$a[10],_=$a[11]==null?nil:$a[11],_=$a[12]==null?nil:$a[12],use_result=$a[13]==null?nil:$a[13],$b;state=self.racc_state;vstack=self.racc_vstack;tstack=self.racc_tstack;i=$rb_times(act,-3);len=reduce_table["$[]"](i);reduce_to=reduce_table["$[]"]($rb_plus(i,1));method_id=reduce_table["$[]"]($rb_plus(i,2));void_array=[];if($truthy(self.yydebug)){tmp_t=tstack["$[]"](len["$-@"](),len)}tmp_v=vstack["$[]"](len["$-@"](),len);if($truthy(self.yydebug)){$writer=[len["$-@"](),len,void_array];$send(tstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=[len["$-@"](),len,void_array];$send(vstack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[len["$-@"](),len,void_array];$send(state,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy(use_result)){vstack.$push(self.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0)))}else{vstack.$push(self.$__send__(method_id,tmp_v,vstack))}tstack.$push(reduce_to);if($truthy(self.yydebug)){self.$racc_reduce(tmp_t,reduce_to,tstack,vstack)}k1=$rb_minus(reduce_to,nt_base);if($truthy(i=goto_pointer["$[]"](k1))){i=$rb_plus(i,state["$[]"](-1));if($truthy($truthy($a=$truthy($b=$rb_ge(i,0))?curstate=goto_table["$[]"](i):$b)?goto_check["$[]"](i)["$=="](k1):$a)){return curstate}}return goto_default["$[]"](k1)},TMP_Parser__racc_do_reduce_14.$$arity=2);Opal.defn(self,"$on_error",TMP_Parser_on_error_15=function $$on_error(t,val,vstack){var $a,self=this;return self.$raise(Opal.const_get_relative($nesting,"ParseError"),self.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($a=self.$token_to_str(t))?$a:"?"))},TMP_Parser_on_error_15.$$arity=3);Opal.defn(self,"$yyerror",TMP_Parser_yyerror_16=function $$yyerror(){var self=this;return self.$throw("racc_jump",1)},TMP_Parser_yyerror_16.$$arity=0);Opal.defn(self,"$yyaccept",TMP_Parser_yyaccept_17=function $$yyaccept(){var self=this;return self.$throw("racc_jump",2)},TMP_Parser_yyaccept_17.$$arity=0);Opal.defn(self,"$yyerrok",TMP_Parser_yyerrok_18=function $$yyerrok(){var self=this;return self.racc_error_status=0},TMP_Parser_yyerrok_18.$$arity=0);Opal.defn(self,"$racc_read_token",TMP_Parser_racc_read_token_19=function $$racc_read_token(t,tok,val){var self=this;self.racc_debug_out.$print("read ");self.racc_debug_out.$print(tok.$inspect(),"(",self.$racc_token2str(t),") ");self.racc_debug_out.$puts(val.$inspect());return self.racc_debug_out.$puts()},TMP_Parser_racc_read_token_19.$$arity=3);Opal.defn(self,"$racc_shift",TMP_Parser_racc_shift_20=function $$racc_shift(tok,tstack,vstack){var self=this;self.racc_debug_out.$puts(""+"shift "+self.$racc_token2str(tok));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_shift_20.$$arity=3);Opal.defn(self,"$racc_reduce",TMP_Parser_racc_reduce_22=function $$racc_reduce(toks,sim,tstack,vstack){var TMP_21,self=this,out=nil;out=self.racc_debug_out;out.$print("reduce ");if($truthy(toks["$empty?"]())){out.$print(" ")}else{$send(toks,"each",[],(TMP_21=function(t){var self=TMP_21.$$s||this;if(t==null)t=nil;return out.$print(" ",self.$racc_token2str(t))},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}out.$puts(""+" --\x3e "+self.$racc_token2str(sim));self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_reduce_22.$$arity=4);Opal.defn(self,"$racc_accept",TMP_Parser_racc_accept_23=function $$racc_accept(){var self=this;self.racc_debug_out.$puts("accept");return self.racc_debug_out.$puts()},TMP_Parser_racc_accept_23.$$arity=0);Opal.defn(self,"$racc_e_pop",TMP_Parser_racc_e_pop_24=function $$racc_e_pop(state,tstack,vstack){var self=this;self.racc_debug_out.$puts("error recovering mode: pop token");self.$racc_print_states(state);self.$racc_print_stacks(tstack,vstack);return self.racc_debug_out.$puts()},TMP_Parser_racc_e_pop_24.$$arity=3);Opal.defn(self,"$racc_next_state",TMP_Parser_racc_next_state_25=function $$racc_next_state(curstate,state){var self=this;self.racc_debug_out.$puts(""+"goto "+curstate);self.$racc_print_states(state);return self.racc_debug_out.$puts()},TMP_Parser_racc_next_state_25.$$arity=2);Opal.defn(self,"$racc_print_stacks",TMP_Parser_racc_print_stacks_27=function $$racc_print_stacks(t,v){var TMP_26,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(t,"each_index",[],(TMP_26=function(i){var self=TMP_26.$$s||this;if(i==null)i=nil;return out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26));return out.$puts(" ]")},TMP_Parser_racc_print_stacks_27.$$arity=2);Opal.defn(self,"$racc_print_states",TMP_Parser_racc_print_states_29=function $$racc_print_states(s){var TMP_28,self=this,out=nil;out=self.racc_debug_out;out.$print(" [");$send(s,"each",[],(TMP_28=function(st){var self=TMP_28.$$s||this;if(st==null)st=nil;return out.$print(" ",st)},TMP_28.$$s=self,TMP_28.$$arity=1,TMP_28));return out.$puts(" ]")},TMP_Parser_racc_print_states_29.$$arity=1);Opal.defn(self,"$racc_token2str",TMP_Parser_racc_token2str_30=function $$racc_token2str(tok){var $a,self=this;return $truthy($a=Opal.const_get_qualified(self.$class(),"Racc_token_to_s_table")["$[]"](tok))?$a:self.$raise(""+"[Racc Bug] can't convert token "+tok+" to string")},TMP_Parser_racc_token2str_30.$$arity=1);return(Opal.defn(self,"$token_to_str",TMP_Parser_token_to_str_31=function $$token_to_str(t){var self=this;return Opal.const_get_qualified(self.$class(),"Racc_token_to_s_table")["$[]"](t)},TMP_Parser_token_to_str_31.$$arity=1),nil)&&"token_to_str"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/compatibility/ruby1_8"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$is_a?","$gsub","$[]","$to_sym","$original_percent"]);return function($base,$super,$parent_nesting){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_String_$_2;Opal.alias(self,"original_percent","%");return(Opal.defn(self,"$%",TMP_String_$_2=function(arg,$a_rest){var TMP_1,self=this,args;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-1]=arguments[$arg_idx]}if($truthy(arg["$is_a?"](Opal.const_get_relative($nesting,"Hash")))){return $send(self,"gsub",[/%\{(\w+)\}/],(TMP_1=function(){var self=TMP_1.$$s||this,$a;return arg["$[]"]((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$to_sym())},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))}else{return $send(self,"original_percent",[arg].concat(Opal.to_a(args)))}},TMP_String_$_2.$$arity=-2),nil)&&"%"}($nesting[0],null,$nesting)};Opal.modules["parser/compatibility/ruby1_9"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",useless_else:"else without rescue is useless",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}"}).$freeze())}($nesting[0],$nesting)};Opal.modules["parser/ast/processor"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$updated","$process_all","$on_var","$!","$nil?","$process","$on_vasgn","$on_argument","$warn"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $AST,self=$AST=$module($base,"AST");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Processor(){}var self=$Processor=$klass($base,$super,"Processor",$Processor);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Processor_process_regular_node_1,TMP_Processor_on_var_2,TMP_Processor_process_variable_node_3,TMP_Processor_on_vasgn_4,TMP_Processor_process_var_asgn_node_5,TMP_Processor_on_op_asgn_6,TMP_Processor_on_const_7,TMP_Processor_on_casgn_8,TMP_Processor_on_argument_9,TMP_Processor_process_argument_node_10,TMP_Processor_on_def_11,TMP_Processor_on_defs_12,TMP_Processor_on_send_13,TMP_Processor_process_variable_node_14,TMP_Processor_process_var_asgn_node_15,TMP_Processor_process_argument_node_16;Opal.defn(self,"$process_regular_node",TMP_Processor_process_regular_node_1=function $$process_regular_node(node){var self=this;return node.$updated(nil,self.$process_all(node))},TMP_Processor_process_regular_node_1.$$arity=1);Opal.alias(self,"on_dstr","process_regular_node");Opal.alias(self,"on_dsym","process_regular_node");Opal.alias(self,"on_regexp","process_regular_node");Opal.alias(self,"on_xstr","process_regular_node");Opal.alias(self,"on_splat","process_regular_node");Opal.alias(self,"on_array","process_regular_node");Opal.alias(self,"on_pair","process_regular_node");Opal.alias(self,"on_hash","process_regular_node");Opal.alias(self,"on_irange","process_regular_node");Opal.alias(self,"on_erange","process_regular_node");Opal.defn(self,"$on_var",TMP_Processor_on_var_2=function $$on_var(node){var self=this;return node},TMP_Processor_on_var_2.$$arity=1);Opal.defn(self,"$process_variable_node",TMP_Processor_process_variable_node_3=function $$process_variable_node(node){var self=this;return self.$on_var(node)},TMP_Processor_process_variable_node_3.$$arity=1);Opal.alias(self,"on_lvar","process_variable_node");Opal.alias(self,"on_ivar","process_variable_node");Opal.alias(self,"on_gvar","process_variable_node");Opal.alias(self,"on_cvar","process_variable_node");Opal.alias(self,"on_back_ref","process_variable_node");Opal.alias(self,"on_nth_ref","process_variable_node");Opal.defn(self,"$on_vasgn",TMP_Processor_on_vasgn_4=function $$on_vasgn(node){var $a,self=this,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[name,self.$process(value_node)])}else{return node}},TMP_Processor_on_vasgn_4.$$arity=1);Opal.defn(self,"$process_var_asgn_node",TMP_Processor_process_var_asgn_node_5=function $$process_var_asgn_node(node){var self=this;return self.$on_vasgn(node)},TMP_Processor_process_var_asgn_node_5.$$arity=1);Opal.alias(self,"on_lvasgn","process_var_asgn_node");Opal.alias(self,"on_ivasgn","process_var_asgn_node");Opal.alias(self,"on_gvasgn","process_var_asgn_node");Opal.alias(self,"on_cvasgn","process_var_asgn_node");Opal.alias(self,"on_and_asgn","process_regular_node");Opal.alias(self,"on_or_asgn","process_regular_node");Opal.defn(self,"$on_op_asgn",TMP_Processor_on_op_asgn_6=function $$on_op_asgn(node){var $a,self=this,var_node=nil,method_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),var_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[self.$process(var_node),method_name,self.$process(value_node)])},TMP_Processor_on_op_asgn_6.$$arity=1);Opal.alias(self,"on_mlhs","process_regular_node");Opal.alias(self,"on_masgn","process_regular_node");Opal.defn(self,"$on_const",TMP_Processor_on_const_7=function $$on_const(node){var $a,self=this,scope_node=nil,name=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$a;return node.$updated(nil,[self.$process(scope_node),name])},TMP_Processor_on_const_7.$$arity=1);Opal.defn(self,"$on_casgn",TMP_Processor_on_casgn_8=function $$on_casgn(node){var $a,self=this,scope_node=nil,name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),scope_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],value_node=$a[2]==null?nil:$a[2],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[self.$process(scope_node),name,self.$process(value_node)])}else{return node.$updated(nil,[self.$process(scope_node),name])}},TMP_Processor_on_casgn_8.$$arity=1);Opal.alias(self,"on_args","process_regular_node");Opal.defn(self,"$on_argument",TMP_Processor_on_argument_9=function $$on_argument(node){var $a,self=this,arg_name=nil,value_node=nil;$a=[].concat(Opal.to_a(node)),arg_name=$a[0]==null?nil:$a[0],value_node=$a[1]==null?nil:$a[1],$a;if($truthy(value_node["$nil?"]()["$!"]())){return node.$updated(nil,[arg_name,self.$process(value_node)])}else{return node}},TMP_Processor_on_argument_9.$$arity=1);Opal.defn(self,"$process_argument_node",TMP_Processor_process_argument_node_10=function $$process_argument_node(node){var self=this;return self.$on_argument(node)},TMP_Processor_process_argument_node_10.$$arity=1);Opal.alias(self,"on_arg","process_argument_node");Opal.alias(self,"on_optarg","process_argument_node");Opal.alias(self,"on_restarg","process_argument_node");Opal.alias(self,"on_blockarg","process_argument_node");Opal.alias(self,"on_shadowarg","process_argument_node");Opal.alias(self,"on_kwarg","process_argument_node");Opal.alias(self,"on_kwoptarg","process_argument_node");Opal.alias(self,"on_kwrestarg","process_argument_node");Opal.alias(self,"on_procarg0","process_argument_node");Opal.alias(self,"on_arg_expr","process_regular_node");Opal.alias(self,"on_restarg_expr","process_regular_node");Opal.alias(self,"on_blockarg_expr","process_regular_node");Opal.alias(self,"on_block_pass","process_regular_node");Opal.alias(self,"on_module","process_regular_node");Opal.alias(self,"on_class","process_regular_node");Opal.alias(self,"on_sclass","process_regular_node");Opal.defn(self,"$on_def",TMP_Processor_on_def_11=function $$on_def(node){var $a,self=this,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],args_node=$a[1]==null?nil:$a[1],body_node=$a[2]==null?nil:$a[2],$a;return node.$updated(nil,[name,self.$process(args_node),self.$process(body_node)])},TMP_Processor_on_def_11.$$arity=1);Opal.defn(self,"$on_defs",TMP_Processor_on_defs_12=function $$on_defs(node){var $a,self=this,definee_node=nil,name=nil,args_node=nil,body_node=nil;$a=[].concat(Opal.to_a(node)),definee_node=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],args_node=$a[2]==null?nil:$a[2],body_node=$a[3]==null?nil:$a[3],$a;return node.$updated(nil,[self.$process(definee_node),name,self.$process(args_node),self.$process(body_node)])},TMP_Processor_on_defs_12.$$arity=1);Opal.alias(self,"on_undef","process_regular_node");Opal.alias(self,"on_alias","process_regular_node");Opal.defn(self,"$on_send",TMP_Processor_on_send_13=function $$on_send(node){var $a,self=this,receiver_node=nil,method_name=nil,arg_nodes=nil;$a=[].concat(Opal.to_a(node)),receiver_node=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],arg_nodes=$slice.call($a,2),$a;if($truthy(receiver_node)){receiver_node=self.$process(receiver_node)}return node.$updated(nil,[receiver_node,method_name].concat(Opal.to_a(self.$process_all(arg_nodes))))},TMP_Processor_on_send_13.$$arity=1);Opal.alias(self,"on_csend","on_send");Opal.alias(self,"on_block","process_regular_node");Opal.alias(self,"on_while","process_regular_node");Opal.alias(self,"on_while_post","process_regular_node");Opal.alias(self,"on_until","process_regular_node");Opal.alias(self,"on_until_post","process_regular_node");Opal.alias(self,"on_for","process_regular_node");Opal.alias(self,"on_return","process_regular_node");Opal.alias(self,"on_break","process_regular_node");Opal.alias(self,"on_next","process_regular_node");Opal.alias(self,"on_redo","process_regular_node");Opal.alias(self,"on_retry","process_regular_node");Opal.alias(self,"on_super","process_regular_node");Opal.alias(self,"on_yield","process_regular_node");Opal.alias(self,"on_defined?","process_regular_node");Opal.alias(self,"on_not","process_regular_node");Opal.alias(self,"on_and","process_regular_node");Opal.alias(self,"on_or","process_regular_node");Opal.alias(self,"on_if","process_regular_node");Opal.alias(self,"on_when","process_regular_node");Opal.alias(self,"on_case","process_regular_node");Opal.alias(self,"on_iflipflop","process_regular_node");Opal.alias(self,"on_eflipflop","process_regular_node");Opal.alias(self,"on_match_current_line","process_regular_node");Opal.alias(self,"on_match_with_lvasgn","process_regular_node");Opal.alias(self,"on_resbody","process_regular_node");Opal.alias(self,"on_rescue","process_regular_node");Opal.alias(self,"on_ensure","process_regular_node");Opal.alias(self,"on_begin","process_regular_node");Opal.alias(self,"on_kwbegin","process_regular_node");Opal.alias(self,"on_preexe","process_regular_node");Opal.alias(self,"on_postexe","process_regular_node");Opal.defn(self,"$process_variable_node",TMP_Processor_process_variable_node_14=function $$process_variable_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_variable_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_var instead.");return self.$on_var(node)},TMP_Processor_process_variable_node_14.$$arity=1);Opal.defn(self,"$process_var_asgn_node",TMP_Processor_process_var_asgn_node_15=function $$process_var_asgn_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_var_asgn_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_vasgn instead.");return self.$on_vasgn(node)},TMP_Processor_process_var_asgn_node_15.$$arity=1);return(Opal.defn(self,"$process_argument_node",TMP_Processor_process_argument_node_16=function $$process_argument_node(node){var self=this;self.$warn(""+"Parser::AST::Processor#process_argument_node is deprecated as a"+" public API and will be removed. Please use "+"Parser::AST::Processor#on_argument instead.");return self.$on_argument(node)},TMP_Processor_process_argument_node_16.$$arity=1),nil)&&"process_argument_node"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified("::","AST"),"Processor"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/meta"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$send=Opal.send;Opal.add_stubs(["$freeze","$to_set","$map","$to_proc"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Meta,self=$Meta=$module($base,"Meta");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"NODE_TYPES",$send(["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","array","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","and_asgn","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","args","def","kwarg","kwoptarg","kwrestarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__"],"map",[],"to_sym".$to_proc()).$to_set().$freeze())})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/buffer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$attr_reader","$empty?","$=~","$==","$[]","$freeze","$match","$find","$encoding","$recognize_encoding","$force_encoding","$nil?","$encode","$open","$read","$source=","$-","$raise","$frozen?","$dup","$reencode_string","$class","$valid_encoding?","$name","$raw_source=","$gsub","$!","$ascii_only?","$!=","$line_for","$+","$[]=","$to_a","$lines","$end_with?","$<<","$each","$chomp!","$fetch","$source_lines","$<=","$>","$size","$line_begins","$new","$-@","$private","$index","$unshift","$length","$respond_to?","$bsearch"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Buffer(){}var self=$Buffer=$klass($base,$super,"Buffer",$Buffer);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Buffer_recognize_encoding_1,TMP_Buffer_reencode_string_2,TMP_Buffer_initialize_3,TMP_Buffer_read_5,TMP_Buffer_source_6,TMP_Buffer_source$eq_7,TMP_Buffer_raw_source$eq_8,TMP_Buffer_slice_9,TMP_Buffer_decompose_position_10,TMP_Buffer_line_for_position_11,TMP_Buffer_column_for_position_12,TMP_Buffer_source_lines_14,TMP_Buffer_source_line_15,TMP_Buffer_line_range_16,TMP_Buffer_last_line_17,TMP_Buffer_line_begins_18,TMP_Buffer_line_for_20,TMP_Buffer_line_for_22;def.name=def.source=def.slice_source=def.first_line=def.line_for_position=def.column_for_position=def.lines=def.line_begins=nil;self.$attr_reader("name","first_line");Opal.const_set($nesting[0],"ENCODING_RE",new RegExp(""+"\\#.*coding\\s*[:=]\\s*"+"("+""+"(utf8-mac)"+"|"+""+"([A-Za-z0-9_-]+?)(-unix|-dos|-mac)"+"|"+"([A-Za-z0-9_-]+)"+")"+""));Opal.defs(self,"$recognize_encoding",TMP_Buffer_recognize_encoding_1=function $$recognize_encoding(string){var $a,$b,self=this,first_line=nil,second_line=nil,encoding_line=nil,result=nil;if($truthy(string["$empty?"]())){return nil}string["$=~"](/^(.*)\n?(.*\n)?/);$a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)],first_line=$a[0],second_line=$a[1],$a;if($truthy(first_line["$=~"](/^\xef\xbb\xbf/))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")}else if(first_line["$[]"](0,2)["$=="]("#!".$force_encoding("ASCII-8BIT").$freeze())){encoding_line=second_line}else{encoding_line=first_line}if($truthy(result=Opal.const_get_relative($nesting,"ENCODING_RE").$match(encoding_line))){return Opal.const_get_relative($nesting,"Encoding").$find($truthy($a=$truthy($b=result["$[]"](2))?$b:result["$[]"](3))?$a:result["$[]"](5))}else{return nil}},TMP_Buffer_recognize_encoding_1.$$arity=1);Opal.defs(self,"$reencode_string",TMP_Buffer_reencode_string_2=function $$reencode_string(input){var self=this,original_encoding=nil,detected_encoding=nil;original_encoding=input.$encoding();detected_encoding=self.$recognize_encoding(input.$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY")));if($truthy(detected_encoding["$nil?"]())){return input.$force_encoding(original_encoding)}else if(detected_encoding["$=="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))){return input}else{return input.$force_encoding(detected_encoding).$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"))}},TMP_Buffer_reencode_string_2.$$arity=1);Opal.defn(self,"$initialize",TMP_Buffer_initialize_3=function $$initialize(name,first_line){var self=this;if(first_line==null){first_line=1}self.name=name;self.source=nil;self.first_line=first_line;self.lines=nil;self.line_begins=nil;self.slice_source=nil;self.line_for_position=$hash2([],{});return self.column_for_position=$hash2([],{})},TMP_Buffer_initialize_3.$$arity=-2);Opal.defn(self,"$read",TMP_Buffer_read_5=function $$read(){var TMP_4,self=this;$send(Opal.const_get_relative($nesting,"File"),"open",[self.name,"rb".$force_encoding("ASCII-8BIT")],(TMP_4=function(io){var self=TMP_4.$$s||this,$writer=nil;if(io==null)io=nil;$writer=[io.$read()];$send(self,"source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return self},TMP_Buffer_read_5.$$arity=0);Opal.defn(self,"$source",TMP_Buffer_source_6=function $$source(){var self=this;if($truthy(self.source["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"RuntimeError"),"Cannot extract source from uninitialized Source::Buffer".$force_encoding("ASCII-8BIT"))}return self.source},TMP_Buffer_source_6.$$arity=0);Opal.defn(self,"$source=",TMP_Buffer_source$eq_7=function(input){var $a,self=this,$writer=nil;if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){if($truthy(input["$frozen?"]())){input=input.$dup()}input=self.$class().$reencode_string(input);if($truthy(input["$valid_encoding?"]())){}else{self.$raise(Opal.const_get_relative($nesting,"EncodingError"),""+"invalid byte sequence in "+input.$encoding().$name())}}$writer=[input];$send(self,"raw_source=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Buffer_source$eq_7.$$arity=1);Opal.defn(self,"$raw_source=",TMP_Buffer_raw_source$eq_8=function(input){var $a,$b,$c,$d,self=this;if($truthy(self.source)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Source::Buffer is immutable".$force_encoding("ASCII-8BIT"))}self.source=input.$gsub("\r\n".$force_encoding("ASCII-8BIT").$freeze(),"\n".$force_encoding("ASCII-8BIT").$freeze()).$freeze();if($truthy($truthy($a=$truthy($b=$truthy($c=($d=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)?self.source["$ascii_only?"]()["$!"]():$c)?self.source.$encoding()["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_32LE")):$b)?self.source.$encoding()["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY")):$a)){return self.slice_source=self.source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_32LE"))}else{return nil}},TMP_Buffer_raw_source$eq_8.$$arity=1);Opal.defn(self,"$slice",TMP_Buffer_slice_9=function $$slice(range){var self=this;if($truthy(self.slice_source["$nil?"]())){return self.source["$[]"](range)}else{return self.slice_source["$[]"](range).$encode(self.source.$encoding())}},TMP_Buffer_slice_9.$$arity=1);Opal.defn(self,"$decompose_position",TMP_Buffer_decompose_position_10=function $$decompose_position(position){var $a,$b,self=this,line_no=nil,line_begin=nil;$b=self.$line_for(position),$a=Opal.to_ary($b),line_no=$a[0]==null?nil:$a[0],line_begin=$a[1]==null?nil:$a[1],$b;return[$rb_plus(self.first_line,line_no),$rb_minus(position,line_begin)]},TMP_Buffer_decompose_position_10.$$arity=1);Opal.defn(self,"$line_for_position",TMP_Buffer_line_for_position_11=function $$line_for_position(position){var $a,$b,$c,self=this,$writer=nil,line_no=nil,_=nil;return $truthy($a=self.line_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),line_no=$b[0]==null?nil:$b[0],_=$b[1]==null?nil:$b[1],$c,$rb_plus(self.first_line,line_no))],$send(self.line_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},TMP_Buffer_line_for_position_11.$$arity=1);Opal.defn(self,"$column_for_position",TMP_Buffer_column_for_position_12=function $$column_for_position(position){var $a,$b,$c,self=this,$writer=nil,_=nil,line_begin=nil;return $truthy($a=self.column_for_position["$[]"](position))?$a:($writer=[position,($c=self.$line_for(position),$b=Opal.to_ary($c),_=$b[0]==null?nil:$b[0],line_begin=$b[1]==null?nil:$b[1],$c,$rb_minus(position,line_begin))],$send(self.column_for_position,"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])},TMP_Buffer_column_for_position_12.$$arity=1);Opal.defn(self,"$source_lines",TMP_Buffer_source_lines_14=function $$source_lines(){var $a,TMP_13,self=this,lines=nil;return self.lines=$truthy($a=self.lines)?$a:(lines=self.source.$lines().$to_a(),function(){if($truthy(self.source["$end_with?"]("\n".$force_encoding("ASCII-8BIT").$freeze()))){return lines["$<<"]("".$force_encoding("ASCII-8BIT"))}else{return nil}return nil}(),$send(lines,"each",[],(TMP_13=function(line){var self=TMP_13.$$s||this;if(line==null)line=nil;line["$chomp!"]("\n".$force_encoding("ASCII-8BIT").$freeze());return line.$freeze()},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13)),lines.$freeze())},TMP_Buffer_source_lines_14.$$arity=0);Opal.defn(self,"$source_line",TMP_Buffer_source_line_15=function $$source_line(lineno){var self=this;return self.$source_lines().$fetch($rb_minus(lineno,self.first_line)).$dup()},TMP_Buffer_source_line_15.$$arity=1);Opal.defn(self,"$line_range",TMP_Buffer_line_range_16=function $$line_range(lineno){var $a,self=this,index=nil;index=$rb_plus($rb_minus(lineno,self.first_line),1);if($truthy($truthy($a=$rb_le(index,0))?$a:$rb_gt(index,self.$line_begins().$size()))){return self.$raise(Opal.const_get_relative($nesting,"IndexError"),""+"Parser::Source::Buffer: range for line "+(""+lineno+" requested, valid line numbers are "+self.first_line+"..")+(""+$rb_minus($rb_plus(self.first_line,self.$line_begins().$size()),1)))}else if(index["$=="](self.$line_begins().$size())){return Opal.const_get_relative($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),self.source.$size())}else{return Opal.const_get_relative($nesting,"Range").$new(self,self.$line_begins()["$[]"](index["$-@"]())["$[]"](1),$rb_minus(self.$line_begins()["$[]"]($rb_minus(index["$-@"](),1))["$[]"](1),1))}},TMP_Buffer_line_range_16.$$arity=1);Opal.defn(self,"$last_line",TMP_Buffer_last_line_17=function $$last_line(){var self=this;return $rb_minus($rb_plus(self.$line_begins().$size(),self.first_line),1)},TMP_Buffer_last_line_17.$$arity=0);self.$private();Opal.defn(self,"$line_begins",TMP_Buffer_line_begins_18=function $$line_begins(){var $a,self=this,index=nil;if($truthy(self.line_begins)){}else{$a=[[[0,0]],0],self.line_begins=$a[0],index=$a[1],$a;while($truthy(index=self.source.$index("\n".$force_encoding("ASCII-8BIT").$freeze(),index))){index=$rb_plus(index,1);self.line_begins.$unshift([self.line_begins.$length(),index])}}return self.line_begins},TMP_Buffer_line_begins_18.$$arity=0);if($truthy([]["$respond_to?"]("bsearch"))){return(Opal.defn(self,"$line_for",TMP_Buffer_line_for_20=function $$line_for(position){var TMP_19,self=this;return $send(self.$line_begins(),"bsearch",[],(TMP_19=function(line,line_begin){var self=TMP_19.$$s||this;if(line==null)line=nil;if(line_begin==null)line_begin=nil;return $rb_le(line_begin,position)},TMP_19.$$s=self,TMP_19.$$arity=2,TMP_19))},TMP_Buffer_line_for_20.$$arity=1),nil)&&"line_for"}else{return(Opal.defn(self,"$line_for",TMP_Buffer_line_for_22=function $$line_for(position){var TMP_21,self=this;return $send(self.$line_begins(),"find",[],(TMP_21=function(line,line_begin){var self=TMP_21.$$s||this;if(line==null)line=nil;if(line_begin==null)line_begin=nil;return $rb_le(line_begin,position)},TMP_21.$$s=self,TMP_21.$$arity=2,TMP_21))},TMP_Buffer_line_for_22.$$arity=1),nil)&&"line_for"}})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/range"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$<","$raise","$nil?","$freeze","$new","$-","$line_for_position","$alias_method","$column_for_position","$!=","$line","$begin","$end","$inspect","$column","$source_line","$slice","$begin_pos","$end_pos","$include?","$source","$to_a","$decompose_position","$join","$name","$+","$min","$max","$disjoint?","$>=","$==","$is_a?","$source_buffer"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Range_initialize_1,TMP_Range_begin_2,TMP_Range_end_3,TMP_Range_size_4,TMP_Range_line_5,TMP_Range_column_6,TMP_Range_last_line_7,TMP_Range_last_column_8,TMP_Range_column_range_9,TMP_Range_source_line_10,TMP_Range_source_11,TMP_Range_is$q_12,TMP_Range_to_a_13,TMP_Range_to_s_14,TMP_Range_resize_15,TMP_Range_join_16,TMP_Range_intersect_17,TMP_Range_disjoint$q_18,TMP_Range_overlaps$q_19,TMP_Range_empty$q_20,TMP_Range_$eq$eq_21,TMP_Range_inspect_22;def.source_buffer=def.begin_pos=def.end_pos=nil;self.$attr_reader("source_buffer");self.$attr_reader("begin_pos","end_pos");Opal.defn(self,"$initialize",TMP_Range_initialize_1=function $$initialize(source_buffer,begin_pos,end_pos){var $a,self=this;if($truthy($rb_lt(end_pos,begin_pos))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos")}if($truthy(source_buffer["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"Parser::Source::Range: source_buffer must not be nil")}self.source_buffer=source_buffer;$a=[begin_pos,end_pos],self.begin_pos=$a[0],self.end_pos=$a[1],$a;return self.$freeze()},TMP_Range_initialize_1.$$arity=3);Opal.defn(self,"$begin",TMP_Range_begin_2=function $$begin(){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.begin_pos,self.begin_pos)},TMP_Range_begin_2.$$arity=0);Opal.defn(self,"$end",TMP_Range_end_3=function $$end(){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.end_pos,self.end_pos)},TMP_Range_end_3.$$arity=0);Opal.defn(self,"$size",TMP_Range_size_4=function $$size(){var self=this;return $rb_minus(self.end_pos,self.begin_pos)},TMP_Range_size_4.$$arity=0);Opal.alias(self,"length","size");Opal.defn(self,"$line",TMP_Range_line_5=function $$line(){var self=this;return self.source_buffer.$line_for_position(self.begin_pos)},TMP_Range_line_5.$$arity=0);self.$alias_method("first_line","line");Opal.defn(self,"$column",TMP_Range_column_6=function $$column(){var self=this;return self.source_buffer.$column_for_position(self.begin_pos)},TMP_Range_column_6.$$arity=0);Opal.defn(self,"$last_line",TMP_Range_last_line_7=function $$last_line(){var self=this;return self.source_buffer.$line_for_position(self.end_pos)},TMP_Range_last_line_7.$$arity=0);Opal.defn(self,"$last_column",TMP_Range_last_column_8=function $$last_column(){var self=this;return self.source_buffer.$column_for_position(self.end_pos)},TMP_Range_last_column_8.$$arity=0);Opal.defn(self,"$column_range",TMP_Range_column_range_9=function $$column_range(){var self=this;if($truthy(self.$begin().$line()["$!="](self.$end().$line()))){self.$raise(Opal.const_get_relative($nesting,"RangeError"),""+self.$inspect()+" spans more than one line")}return Opal.Range.$new(self.$begin().$column(),self.$end().$column(),true)},TMP_Range_column_range_9.$$arity=0);Opal.defn(self,"$source_line",TMP_Range_source_line_10=function $$source_line(){var self=this;return self.source_buffer.$source_line(self.$line())},TMP_Range_source_line_10.$$arity=0);Opal.defn(self,"$source",TMP_Range_source_11=function $$source(){var self=this;return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(),true))},TMP_Range_source_11.$$arity=0);Opal.defn(self,"$is?",TMP_Range_is$q_12=function($a_rest){var self=this,what;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}what=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){what[$arg_idx-0]=arguments[$arg_idx]}return what["$include?"](self.$source())},TMP_Range_is$q_12.$$arity=-1);Opal.defn(self,"$to_a",TMP_Range_to_a_13=function $$to_a(){var self=this;return Opal.Range.$new(self.begin_pos,self.end_pos,true).$to_a()},TMP_Range_to_a_13.$$arity=0);Opal.defn(self,"$to_s",TMP_Range_to_s_14=function $$to_s(){var $a,$b,self=this,line=nil,column=nil;$b=self.source_buffer.$decompose_position(self.begin_pos),$a=Opal.to_ary($b),line=$a[0]==null?nil:$a[0],column=$a[1]==null?nil:$a[1],$b;return[self.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")},TMP_Range_to_s_14.$$arity=0);Opal.defn(self,"$resize",TMP_Range_resize_15=function $$resize(new_size){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,self.begin_pos,$rb_plus(self.begin_pos,new_size))},TMP_Range_resize_15.$$arity=1);Opal.defn(self,"$join",TMP_Range_join_16=function $$join(other){var self=this;return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$min(),[self.end_pos,other.$end_pos()].$max())},TMP_Range_join_16.$$arity=1);Opal.defn(self,"$intersect",TMP_Range_intersect_17=function $$intersect(other){var self=this;if($truthy(self["$disjoint?"](other))){return nil}else{return Opal.const_get_relative($nesting,"Range").$new(self.source_buffer,[self.begin_pos,other.$begin_pos()].$max(),[self.end_pos,other.$end_pos()].$min())}},TMP_Range_intersect_17.$$arity=1);Opal.defn(self,"$disjoint?",TMP_Range_disjoint$q_18=function(other){var $a,self=this;return $truthy($a=$rb_ge(self.begin_pos,other.$end_pos()))?$a:$rb_ge(other.$begin_pos(),self.end_pos)},TMP_Range_disjoint$q_18.$$arity=1);Opal.defn(self,"$overlaps?",TMP_Range_overlaps$q_19=function(other){var $a,self=this;return $truthy($a=$rb_lt(self.begin_pos,other.$end_pos()))?$rb_lt(other.$begin_pos(),self.end_pos):$a},TMP_Range_overlaps$q_19.$$arity=1);Opal.defn(self,"$empty?",TMP_Range_empty$q_20=function(){var self=this;return self.begin_pos["$=="](self.end_pos)},TMP_Range_empty$q_20.$$arity=0);Opal.defn(self,"$==",TMP_Range_$eq$eq_21=function(other){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=other["$is_a?"](Opal.const_get_relative($nesting,"Range")))?self.source_buffer["$=="](other.$source_buffer()):$c)?self.begin_pos["$=="](other.$begin_pos()):$b)?self.end_pos["$=="](other.$end_pos()):$a},TMP_Range_$eq$eq_21.$$arity=1);return(Opal.defn(self,"$inspect",TMP_Range_inspect_22=function $$inspect(){var self=this;return""+"#"},TMP_Range_inspect_22.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_reader","$alias_method","$new","$associate","$associate_locations","$freeze","$source","$text","$===","$==","$type","$is_a?","$location","$to_s","$expression","$inspect"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Comment(){}var self=$Comment=$klass($base,$super,"Comment",$Comment);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Comment_associate_1,TMP_Comment_associate_locations_2,TMP_Comment_initialize_3,TMP_Comment_type_4,TMP_Comment_inline$q_5,TMP_Comment_document$q_6,TMP_Comment_$eq$eq_7,TMP_Comment_inspect_8;def.location=nil;self.$attr_reader("text");self.$attr_reader("location");self.$alias_method("loc","location");Opal.defs(self,"$associate",TMP_Comment_associate_1=function $$associate(ast,comments){var self=this,associator=nil;associator=Opal.const_get_relative($nesting,"Associator").$new(ast,comments);return associator.$associate()},TMP_Comment_associate_1.$$arity=2);Opal.defs(self,"$associate_locations",TMP_Comment_associate_locations_2=function $$associate_locations(ast,comments){var self=this,associator=nil;associator=Opal.const_get_relative($nesting,"Associator").$new(ast,comments);return associator.$associate_locations()},TMP_Comment_associate_locations_2.$$arity=2);Opal.defn(self,"$initialize",TMP_Comment_initialize_3=function $$initialize(range){var self=this;self.location=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Map").$new(range);self.text=range.$source().$freeze();return self.$freeze()},TMP_Comment_initialize_3.$$arity=1);Opal.defn(self,"$type",TMP_Comment_type_4=function $$type(){var self=this,$case=nil;return function(){$case=self.$text();if(/^#/["$==="]($case)){return"inline"}else if(/^=begin/["$==="]($case)){return"document"}else{return nil}}()},TMP_Comment_type_4.$$arity=0);Opal.defn(self,"$inline?",TMP_Comment_inline$q_5=function(){var self=this;return self.$type()["$=="]("inline")},TMP_Comment_inline$q_5.$$arity=0);Opal.defn(self,"$document?",TMP_Comment_document$q_6=function(){var self=this;return self.$type()["$=="]("document")},TMP_Comment_document$q_6.$$arity=0);Opal.defn(self,"$==",TMP_Comment_$eq$eq_7=function(other){var $a,self=this;return $truthy($a=other["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Comment")))?self.location["$=="](other.$location()):$a},TMP_Comment_$eq$eq_7.$$arity=1);return(Opal.defn(self,"$inspect",TMP_Comment_inspect_8=function $$inspect(){var self=this;return""+"#"},TMP_Comment_inspect_8.$$arity=0),nil)&&"inspect"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/comment/associator"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$do_associate","$private","$new","$[]=","$-","$advance_comment","$advance_through_directives","$visit","$process_leading_comments","$location","$<=","$line","$last_line","$is_a?","$each","$children","$loc","$expression","$process_trailing_comments","$==","$type","$current_comment_before?","$associate_and_advance_comment","$current_comment_before_end?","$current_comment_decorates?","$+","$[]","$!","$end_pos","$begin_pos","$<<","$=~","$text"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Associator(){}var self=$Associator=$klass($base,$super,"Associator",$Associator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Associator_initialize_1,TMP_Associator_associate_2,TMP_Associator_associate_locations_3,TMP_Associator_do_associate_5,TMP_Associator_visit_7,TMP_Associator_process_leading_comments_8,TMP_Associator_process_trailing_comments_9,TMP_Associator_advance_comment_10,TMP_Associator_current_comment_before$q_11,TMP_Associator_current_comment_before_end$q_12,TMP_Associator_current_comment_decorates$q_13,TMP_Associator_associate_and_advance_comment_14,TMP_Associator_advance_through_directives_15;def.skip_directives=def.ast=def.mapping=def.current_comment=def.comment_num=def.comments=def.map_using_locations=nil;self.$attr_accessor("skip_directives");Opal.defn(self,"$initialize",TMP_Associator_initialize_1=function $$initialize(ast,comments){var self=this;self.ast=ast;self.comments=comments;return self.skip_directives=true},TMP_Associator_initialize_1.$$arity=2);Opal.defn(self,"$associate",TMP_Associator_associate_2=function $$associate(){var self=this;self.map_using_locations=false;return self.$do_associate()},TMP_Associator_associate_2.$$arity=0);Opal.defn(self,"$associate_locations",TMP_Associator_associate_locations_3=function $$associate_locations(){var self=this;self.map_using_locations=true;return self.$do_associate()},TMP_Associator_associate_locations_3.$$arity=0);self.$private();Opal.defn(self,"$do_associate",TMP_Associator_do_associate_5=function $$do_associate(){var TMP_4,self=this;self.mapping=$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_4=function(h,k){var self=TMP_4.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,[]];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4));self.comment_num=-1;self.$advance_comment();if($truthy(self.skip_directives)){self.$advance_through_directives()}if($truthy(self.ast)){self.$visit(self.ast)}return self.mapping},TMP_Associator_do_associate_5.$$arity=0);Opal.defn(self,"$visit",TMP_Associator_visit_7=function $$visit(node){var $a,TMP_6,self=this,node_loc=nil;self.$process_leading_comments(node);if($truthy(self.current_comment)){}else{return nil}node_loc=node.$location();if($truthy($truthy($a=$rb_le(self.current_comment.$location().$line(),node_loc.$last_line()))?$a:node_loc["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Map"),"Heredoc")))){$send(node.$children(),"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this,$b,$c;if(child==null)child=nil;if($truthy($truthy($b=$truthy($c=child["$is_a?"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"AST"),"Node")))?child.$loc():$c)?child.$loc().$expression():$b)){}else{return nil}return self.$visit(child)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));return self.$process_trailing_comments(node)}else{return nil}},TMP_Associator_visit_7.$$arity=1);Opal.defn(self,"$process_leading_comments",TMP_Associator_process_leading_comments_8=function $$process_leading_comments(node){var $a,self=this;if(node.$type()["$=="]("begin")){return nil}while($truthy(self["$current_comment_before?"](node))){self.$associate_and_advance_comment(node)}},TMP_Associator_process_leading_comments_8.$$arity=1);Opal.defn(self,"$process_trailing_comments",TMP_Associator_process_trailing_comments_9=function $$process_trailing_comments(node){var $a,self=this;while($truthy(self["$current_comment_before_end?"](node))){self.$associate_and_advance_comment(node)}while($truthy(self["$current_comment_decorates?"](node))){self.$associate_and_advance_comment(node)}},TMP_Associator_process_trailing_comments_9.$$arity=1);Opal.defn(self,"$advance_comment",TMP_Associator_advance_comment_10=function $$advance_comment(){var self=this;self.comment_num=$rb_plus(self.comment_num,1);return self.current_comment=self.comments["$[]"](self.comment_num)},TMP_Associator_advance_comment_10.$$arity=0);Opal.defn(self,"$current_comment_before?",TMP_Associator_current_comment_before$q_11=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$begin_pos())},TMP_Associator_current_comment_before$q_11.$$arity=1);Opal.defn(self,"$current_comment_before_end?",TMP_Associator_current_comment_before_end$q_12=function(node){var self=this,comment_loc=nil,node_loc=nil;if($truthy(self.current_comment["$!"]())){return false}comment_loc=self.current_comment.$location().$expression();node_loc=node.$location().$expression();return $rb_le(comment_loc.$end_pos(),node_loc.$end_pos())},TMP_Associator_current_comment_before_end$q_12.$$arity=1);Opal.defn(self,"$current_comment_decorates?",TMP_Associator_current_comment_decorates$q_13=function(node){var self=this;if($truthy(self.current_comment["$!"]())){return false}return self.current_comment.$location().$line()["$=="](node.$location().$last_line())},TMP_Associator_current_comment_decorates$q_13.$$arity=1);Opal.defn(self,"$associate_and_advance_comment",TMP_Associator_associate_and_advance_comment_14=function $$associate_and_advance_comment(node){var self=this,key=nil;key=function(){if($truthy(self.map_using_locations)){return node.$location()}else{return node}return nil}();self.mapping["$[]"](key)["$<<"](self.current_comment);return self.$advance_comment()},TMP_Associator_associate_and_advance_comment_14.$$arity=1);return(Opal.defn(self,"$advance_through_directives",TMP_Associator_advance_through_directives_15=function $$advance_through_directives(){var $a,self=this;if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"](/^#!/):$a)){self.$advance_comment()}if($truthy($truthy($a=self.current_comment)?self.current_comment.$text()["$=~"](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Buffer"),"ENCODING_RE")):$a)){return self.$advance_comment()}else{return nil}},TMP_Associator_advance_through_directives_15.$$arity=0),nil)&&"advance_through_directives"})(Opal.const_get_relative($nesting,"Comment"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs=","$==","$[]","$all?","$intersect","$nil?","$max","$sort_by","$push","$join","$first","$max_by","$merge_replacements","$replace_actions","$disjoint?","$<","$process"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Rewriter(){}var self=$Rewriter=$klass($base,$super,"Rewriter",$Rewriter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rewriter_initialize_2,TMP_Rewriter_remove_3,TMP_Rewriter_insert_before_4,TMP_Rewriter_insert_before_multi_5,TMP_Rewriter_insert_after_6,TMP_Rewriter_insert_after_multi_7,TMP_Rewriter_replace_8,TMP_Rewriter_process_10,TMP_Rewriter_transaction_11,TMP_Rewriter_append_14,TMP_Rewriter_record_insertion_15,TMP_Rewriter_record_replace_16,TMP_Rewriter_clobbered_position_mask_17,TMP_Rewriter_adjacent_position_mask_18,TMP_Rewriter_adjacent_insertion_mask_19,TMP_Rewriter_clobbered_insertion$q_21,TMP_Rewriter_adjacent_insertions$q_23,TMP_Rewriter_adjacent_updates$q_25,TMP_Rewriter_replace_compatible_with_insertion$q_26,TMP_Rewriter_can_merge$q_28,TMP_Rewriter_merge_actions_31,TMP_Rewriter_merge_actions$B_32,TMP_Rewriter_merge_replacements_34,TMP_Rewriter_replace_actions_36,TMP_Rewriter_raise_clobber_error_37,TMP_Rewriter_in_transaction$q_38,TMP_Rewriter_active_queue_39,TMP_Rewriter_active_clobber_40,TMP_Rewriter_active_insertions_41,TMP_Rewriter_active_clobber$eq_42,TMP_Rewriter_active_insertions$eq_43,TMP_Rewriter_adjacent$q_44;def.diagnostics=def.insert_before_multi_order=def.insert_after_multi_order=def.source_buffer=def.queue=def.clobber=def.insertions=def.pending_queue=def.pending_clobber=def.pending_insertions=nil;self.$attr_reader("source_buffer");self.$attr_reader("diagnostics");Opal.defn(self,"$initialize",TMP_Rewriter_initialize_2=function $$initialize(source_buffer){var TMP_1,self=this,$writer=nil;self.diagnostics=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Diagnostic"),"Engine").$new();$writer=[$send(self,"lambda",[],(TMP_1=function(diag){var self=TMP_1.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diag==null)diag=nil;return $gvars.stderr.$puts(diag.$render())},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))];$send(self.diagnostics,"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;self.queue=[];self.clobber=0;self.insertions=0;self.insert_before_multi_order=0;return self.insert_after_multi_order=0},TMP_Rewriter_initialize_2.$$arity=1);Opal.defn(self,"$remove",TMP_Rewriter_remove_3=function $$remove(range){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,"".$freeze()))},TMP_Rewriter_remove_3.$$arity=1);Opal.defn(self,"$insert_before",TMP_Rewriter_insert_before_4=function $$insert_before(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$begin(),content))},TMP_Rewriter_insert_before_4.$$arity=2);Opal.defn(self,"$insert_before_multi",TMP_Rewriter_insert_before_multi_5=function $$insert_before_multi(range,content){var self=this;self.insert_before_multi_order=$rb_minus(self.insert_before_multi_order,1);return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$begin(),content,true,self.insert_before_multi_order))},TMP_Rewriter_insert_before_multi_5.$$arity=2);Opal.defn(self,"$insert_after",TMP_Rewriter_insert_after_6=function $$insert_after(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$end(),content))},TMP_Rewriter_insert_after_6.$$arity=2);Opal.defn(self,"$insert_after_multi",TMP_Rewriter_insert_after_multi_7=function $$insert_after_multi(range,content){var self=this;self.insert_after_multi_order=$rb_plus(self.insert_after_multi_order,1);return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range.$end(),content,true,self.insert_after_multi_order))},TMP_Rewriter_insert_after_multi_7.$$arity=2);Opal.defn(self,"$replace",TMP_Rewriter_replace_8=function $$replace(range,content){var self=this;return self.$append(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,content))},TMP_Rewriter_replace_8.$$arity=2);Opal.defn(self,"$process",TMP_Rewriter_process_10=function $$process(){var TMP_9,self=this,adjustment=nil,source=nil;if($truthy(self["$in_transaction?"]())){self.$raise(""+"Do not call "+self.$class()+"#"+"process"+" inside a transaction")}adjustment=0;source=self.source_buffer.$source().$dup();$send(self.queue.$sort(),"each",[],(TMP_9=function(action){var self=TMP_9.$$s||this,begin_pos=nil,end_pos=nil,$writer=nil;if(action==null)action=nil;begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment);end_pos=$rb_plus(begin_pos,action.$range().$length());$writer=[Opal.Range.$new(begin_pos,end_pos,true),action.$replacement()];$send(source,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));return source},TMP_Rewriter_process_10.$$arity=0);Opal.defn(self,"$transaction",TMP_Rewriter_transaction_11=function $$transaction(){var self=this,$iter=TMP_Rewriter_transaction_11.$$p,$yield=$iter||nil;if($iter)TMP_Rewriter_transaction_11.$$p=null;return function(){try{if($yield!==nil){}else{self.$raise(""+self.$class()+"#"+"transaction"+" requires block")}if($truthy(self["$in_transaction?"]())){self.$raise("Nested transaction is not supported")}self.pending_queue=self.queue.$dup();self.pending_clobber=self.clobber;self.pending_insertions=self.insertions;Opal.yieldX($yield,[]);self.queue=self.pending_queue;self.clobber=self.pending_clobber;self.insertions=self.pending_insertions;return self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()},TMP_Rewriter_transaction_11.$$arity=0);self.$private();Opal.defn(self,"$append",TMP_Rewriter_append_14=function $$append(action){var $a,TMP_12,TMP_13,self=this,range=nil,conflicting=nil,adjacent=nil,insertions=nil;range=action.$range();if($truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]())){return self}if($truthy($truthy($a=action["$allow_multiple_insertions?"]()["$!"]())?conflicting=self["$clobbered_insertion?"](range):$a)){self.$raise_clobber_error(action,[conflicting])}self.$record_insertion(range);if($truthy(adjacent=self["$adjacent_updates?"](range))){conflicting=$send(adjacent,"find",[],(TMP_12=function(a){var self=TMP_12.$$s||this,$b;if(a==null)a=nil;return $truthy($b=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$b},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));if($truthy(conflicting)){self.$raise_clobber_error(action,[conflicting])}self["$merge_actions!"](action,adjacent)}else{self.$active_queue()["$<<"](action)}}else{if($truthy(insertions=self["$adjacent_insertions?"](range))){$send(insertions,"each",[],(TMP_13=function(insertion){var self=TMP_13.$$s||this,$b;if(insertion==null)insertion=nil;if($truthy($truthy($b=range["$overlaps?"](insertion.$range()))?self["$replace_compatible_with_insertion?"](action,insertion)["$!"]():$b)){return self.$raise_clobber_error(action,[insertion])}else{action=self.$merge_actions(action,[insertion]);return self.$active_queue().$delete(insertion)}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13))}if($truthy(adjacent=self["$adjacent_updates?"](range))){if($truthy(self["$can_merge?"](action,adjacent))){self.$record_replace(range);self["$merge_actions!"](action,adjacent)}else{self.$raise_clobber_error(action,adjacent)}}else{self.$record_replace(range);self.$active_queue()["$<<"](action)}}return self},TMP_Rewriter_append_14.$$arity=1);Opal.defn(self,"$record_insertion",TMP_Rewriter_record_insertion_15=function $$record_insertion(range){var self=this,$writer=nil;$writer=[self.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))];$send(self,"active_insertions=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Rewriter_record_insertion_15.$$arity=1);Opal.defn(self,"$record_replace",TMP_Rewriter_record_replace_16=function $$record_replace(range){var self=this,$writer=nil;$writer=[self.$active_clobber()["$|"](self.$clobbered_position_mask(range))];$send(self,"active_clobber=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Rewriter_record_replace_16.$$arity=1);Opal.defn(self,"$clobbered_position_mask",TMP_Rewriter_clobbered_position_mask_17=function $$clobbered_position_mask(range){var self=this;return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())},TMP_Rewriter_clobbered_position_mask_17.$$arity=1);Opal.defn(self,"$adjacent_position_mask",TMP_Rewriter_adjacent_position_mask_18=function $$adjacent_position_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))},TMP_Rewriter_adjacent_position_mask_18.$$arity=1);Opal.defn(self,"$adjacent_insertion_mask",TMP_Rewriter_adjacent_insertion_mask_19=function $$adjacent_insertion_mask(range){var self=this;return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())},TMP_Rewriter_adjacent_insertion_mask_19.$$arity=1);Opal.defn(self,"$clobbered_insertion?",TMP_Rewriter_clobbered_insertion$q_21=function(insertion){var TMP_20,self=this,insertion_pos=nil;insertion_pos=insertion.$begin_pos();if($truthy(self.$active_insertions()["$&"](1["$<<"](insertion_pos))["$!="](0))){return $send(self.$active_queue(),"find",[],(TMP_20=function(a){var self=TMP_20.$$s||this,$a;if(a==null)a=nil;return $truthy($a=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$a},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20))}else{return nil}},TMP_Rewriter_clobbered_insertion$q_21.$$arity=1);Opal.defn(self,"$adjacent_insertions?",TMP_Rewriter_adjacent_insertions$q_23=function(range){var TMP_22,self=this,result=nil;if($truthy(self.$active_insertions()["$&"](self.$adjacent_insertion_mask(range))["$!="](0))){result=$send(self.$active_queue(),"select",[],(TMP_22=function(a){var self=TMP_22.$$s||this,$a;if(a==null)a=nil;return $truthy($a=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$a},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22));if($truthy(result["$empty?"]())){return nil}else{return result}}else{return nil}},TMP_Rewriter_adjacent_insertions$q_23.$$arity=1);Opal.defn(self,"$adjacent_updates?",TMP_Rewriter_adjacent_updates$q_25=function(range){var TMP_24,self=this;if($truthy(self.$active_clobber()["$&"](self.$adjacent_position_mask(range))["$!="](0))){return $send(self.$active_queue(),"select",[],(TMP_24=function(a){var self=TMP_24.$$s||this;if(a==null)a=nil;return self["$adjacent?"](range,a.$range())},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))}else{return nil}},TMP_Rewriter_adjacent_updates$q_25.$$arity=1);Opal.defn(self,"$replace_compatible_with_insertion?",TMP_Rewriter_replace_compatible_with_insertion$q_26=function(replace,insertion){var $a,$b,self=this,offset=nil;return $truthy($a=$truthy($b=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$b)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$a},TMP_Rewriter_replace_compatible_with_insertion$q_26.$$arity=2);Opal.defn(self,"$can_merge?",TMP_Rewriter_can_merge$q_28=function(action,existing){var TMP_27,self=this,range=nil;range=action.$range();return $send(existing,"all?",[],(TMP_27=function(other){var self=TMP_27.$$s||this,$a,overlap=nil,repl1_offset=nil,repl2_offset=nil,repl1_length=nil,repl2_length=nil,replacement1=nil,replacement2=nil;if(other==null)other=nil;overlap=range.$intersect(other.$range());if($truthy(overlap["$nil?"]())){return true}repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos());repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos());repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max();repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max();replacement1=$truthy($a=action.$replacement()["$[]"](repl1_offset,repl1_length))?$a:"".$freeze();replacement2=$truthy($a=other.$replacement()["$[]"](repl2_offset,repl2_length))?$a:"".$freeze();return replacement1["$=="](replacement2)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27))},TMP_Rewriter_can_merge$q_28.$$arity=2);Opal.defn(self,"$merge_actions",TMP_Rewriter_merge_actions_31=function $$merge_actions(action,existing){var TMP_29,TMP_30,self=this,actions=nil,range=nil;actions=$send(existing.$push(action),"sort_by",[],(TMP_29=function(a){var self=TMP_29.$$s||this;if(a==null)a=nil;return[a.$range().$begin_pos(),a.$range().$end_pos()]},TMP_29.$$s=self,TMP_29.$$arity=1,TMP_29));range=actions.$first().$range().$join($send(actions,"max_by",[],(TMP_30=function(a){var self=TMP_30.$$s||this;if(a==null)a=nil;return a.$range().$end_pos()},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30)).$range());return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Rewriter"),"Action").$new(range,self.$merge_replacements(actions))},TMP_Rewriter_merge_actions_31.$$arity=2);Opal.defn(self,"$merge_actions!",TMP_Rewriter_merge_actions$B_32=function(action,existing){var self=this,new_action=nil;new_action=self.$merge_actions(action,existing);self.$active_queue().$delete(action);return self.$replace_actions(existing,new_action)},TMP_Rewriter_merge_actions$B_32.$$arity=2);Opal.defn(self,"$merge_replacements",TMP_Rewriter_merge_replacements_34=function $$merge_replacements(actions){var TMP_33,self=this,result=nil,prev_act=nil;result="";prev_act=nil;$send(actions,"each",[],(TMP_33=function(act){var self=TMP_33.$$s||this,$a,prev_end=nil,offset=nil;if(act==null)act=nil;if($truthy($truthy($a=prev_act["$!"]())?$a:act.$range()["$disjoint?"](prev_act.$range()))){result["$<<"](act.$replacement())}else{prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max();offset=$rb_minus(prev_end,act.$range().$begin_pos());if($truthy($rb_lt(offset,act.$replacement().$size()))){result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,false)))}}return prev_act=act},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));return result},TMP_Rewriter_merge_replacements_34.$$arity=1);Opal.defn(self,"$replace_actions",TMP_Rewriter_replace_actions_36=function $$replace_actions(old,updated){var TMP_35,self=this;$send(old,"each",[],(TMP_35=function(act){var self=TMP_35.$$s||this;if(act==null)act=nil;return self.$active_queue().$delete(act)},TMP_35.$$s=self,TMP_35.$$arity=1,TMP_35));return self.$active_queue()["$<<"](updated)},TMP_Rewriter_replace_actions_36.$$arity=2);Opal.defn(self,"$raise_clobber_error",TMP_Rewriter_raise_clobber_error_37=function $$raise_clobber_error(action,existing){var self=this,diagnostic=nil;diagnostic=Opal.const_get_relative($nesting,"Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range());self.diagnostics.$process(diagnostic);diagnostic=Opal.const_get_relative($nesting,"Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range());self.diagnostics.$process(diagnostic);return self.$raise(Opal.const_get_relative($nesting,"ClobberingError"),"Parser::Source::Rewriter detected clobbering")},TMP_Rewriter_raise_clobber_error_37.$$arity=2);Opal.defn(self,"$in_transaction?",TMP_Rewriter_in_transaction$q_38=function(){var self=this;return self.pending_queue["$nil?"]()["$!"]()},TMP_Rewriter_in_transaction$q_38.$$arity=0);Opal.defn(self,"$active_queue",TMP_Rewriter_active_queue_39=function $$active_queue(){var $a,self=this;return $truthy($a=self.pending_queue)?$a:self.queue},TMP_Rewriter_active_queue_39.$$arity=0);Opal.defn(self,"$active_clobber",TMP_Rewriter_active_clobber_40=function $$active_clobber(){var $a,self=this;return $truthy($a=self.pending_clobber)?$a:self.clobber},TMP_Rewriter_active_clobber_40.$$arity=0);Opal.defn(self,"$active_insertions",TMP_Rewriter_active_insertions_41=function $$active_insertions(){var $a,self=this;return $truthy($a=self.pending_insertions)?$a:self.insertions},TMP_Rewriter_active_insertions_41.$$arity=0);Opal.defn(self,"$active_clobber=",TMP_Rewriter_active_clobber$eq_42=function(value){var self=this;if($truthy(self.pending_clobber)){return self.pending_clobber=value}else{return self.clobber=value}},TMP_Rewriter_active_clobber$eq_42.$$arity=1);Opal.defn(self,"$active_insertions=",TMP_Rewriter_active_insertions$eq_43=function(value){var self=this;if($truthy(self.pending_insertions)){return self.pending_insertions=value}else{return self.insertions=value}},TMP_Rewriter_active_insertions$eq_43.$$arity=1);return(Opal.defn(self,"$adjacent?",TMP_Rewriter_adjacent$q_44=function(range1,range2){var $a,self=this;return $truthy($a=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$a},TMP_Rewriter_adjacent$q_44.$$arity=2),nil)&&"adjacent?"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/rewriter/action"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$include","$attr_reader","$alias_method","$freeze","$<=>","$begin_pos","$range","$zero?","$order","$==","$length","$empty?","$inspect"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Action(){}var self=$Action=$klass($base,$super,"Action",$Action);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Action_initialize_1,TMP_Action_$lt$eq$gt_2,TMP_Action_to_s_3;def.range=def.replacement=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));self.$attr_reader("range","replacement","allow_multiple_insertions","order");self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions");Opal.defn(self,"$initialize",TMP_Action_initialize_1=function $$initialize(range,replacement,allow_multiple_insertions,order){var self=this;if(replacement==null){replacement=""}if(allow_multiple_insertions==null){allow_multiple_insertions=false}if(order==null){order=0}self.range=range;self.replacement=replacement;self.allow_multiple_insertions=allow_multiple_insertions;self.order=order;return self.$freeze()},TMP_Action_initialize_1.$$arity=-2);Opal.defn(self,"$<=>",TMP_Action_$lt$eq$gt_2=function(other){var self=this,result=nil;result=self.$range().$begin_pos()["$<=>"](other.$range().$begin_pos());if($truthy(result["$zero?"]())){}else{return result}return self.$order()["$<=>"](other.$order())},TMP_Action_$lt$eq$gt_2.$$arity=1);return(Opal.defn(self,"$to_s",TMP_Action_to_s_3=function $$to_s(){var $a,self=this;if($truthy(($a=self.range.$length()["$=="](0))?self.replacement["$empty?"]():self.range.$length()["$=="](0))){return"do nothing"}else if(self.range.$length()["$=="](0)){return""+"insert "+self.replacement.$inspect()}else if($truthy(self.replacement["$empty?"]())){return""+"remove "+self.range.$length()+" character(s)"}else{return""+"replace "+self.range.$length()+" character(s) with "+self.replacement.$inspect()}},TMP_Action_to_s_3.$$arity=0),nil)&&"to_s"})(Opal.const_get_relative($nesting,"Rewriter"),null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$range=Opal.range;Opal.add_stubs(["$attr_reader","$freeze","$line","$alias_method","$column","$last_line","$last_column","$with","$update_expression","$==","$class","$reduce","$map","$instance_variables","$instance_variable_get","$send","$inject","$to_sym","$[]","$[]=","$-","$protected","$tap","$dup","$to_proc"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Map(){}var self=$Map=$klass($base,$super,"Map",$Map);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Map_initialize_1,TMP_Map_initialize_copy_2,TMP_Map_node$eq_3,TMP_Map_line_4,TMP_Map_column_5,TMP_Map_last_line_6,TMP_Map_last_column_7,TMP_Map_with_expression_9,TMP_Map_$eq$eq_11,TMP_Map_to_hash_13,TMP_Map_with_14,TMP_Map_update_expression_15;def.node=def.expression=nil;self.$attr_reader("node");self.$attr_reader("expression");Opal.defn(self,"$initialize",TMP_Map_initialize_1=function $$initialize(expression){var self=this;return self.expression=expression},TMP_Map_initialize_1.$$arity=1);Opal.defn(self,"$initialize_copy",TMP_Map_initialize_copy_2=function $$initialize_copy(other){var self=this,$iter=TMP_Map_initialize_copy_2.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_Map_initialize_copy_2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize_copy",TMP_Map_initialize_copy_2,false),$zuper,$iter);return self.node=nil},TMP_Map_initialize_copy_2.$$arity=1);Opal.defn(self,"$node=",TMP_Map_node$eq_3=function(node){var self=this;self.node=node;self.$freeze();return self.node},TMP_Map_node$eq_3.$$arity=1);Opal.defn(self,"$line",TMP_Map_line_4=function $$line(){var self=this;return self.expression.$line()},TMP_Map_line_4.$$arity=0);self.$alias_method("first_line","line");Opal.defn(self,"$column",TMP_Map_column_5=function $$column(){var self=this;return self.expression.$column()},TMP_Map_column_5.$$arity=0);Opal.defn(self,"$last_line",TMP_Map_last_line_6=function $$last_line(){var self=this;return self.expression.$last_line()},TMP_Map_last_line_6.$$arity=0);Opal.defn(self,"$last_column",TMP_Map_last_column_7=function $$last_column(){var self=this;return self.expression.$last_column()},TMP_Map_last_column_7.$$arity=0);Opal.defn(self,"$with_expression",TMP_Map_with_expression_9=function $$with_expression(expression_l){var TMP_8,self=this;return $send(self,"with",[],(TMP_8=function(map){var self=TMP_8.$$s||this;if(map==null)map=nil;return map.$update_expression(expression_l)},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_Map_with_expression_9.$$arity=1);Opal.defn(self,"$==",TMP_Map_$eq$eq_11=function(other){var $a,TMP_10,self=this;return($a=other.$class()["$=="](self.$class()))?$send(self.$instance_variables(),"map",[],(TMP_10=function(ivar){var self=TMP_10.$$s||this;if(ivar==null)ivar=nil;return self.$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10)).$reduce("&"):other.$class()["$=="](self.$class())},TMP_Map_$eq$eq_11.$$arity=1);Opal.defn(self,"$to_hash",TMP_Map_to_hash_13=function $$to_hash(){var TMP_12,self=this;return $send(self.$instance_variables(),"inject",[$hash2([],{})],(TMP_12=function(hash,ivar){var self=TMP_12.$$s||this,$writer=nil;if(hash==null)hash=nil;if(ivar==null)ivar=nil;if(ivar.$to_sym()["$=="]("@node")){return hash}$writer=[ivar["$[]"]($range(1,-1,false)).$to_sym(),self.$instance_variable_get(ivar)];$send(hash,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return hash},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12))},TMP_Map_to_hash_13.$$arity=0);self.$protected();Opal.defn(self,"$with",TMP_Map_with_14=function(){var self=this,$iter=TMP_Map_with_14.$$p,block=$iter||nil;if($iter)TMP_Map_with_14.$$p=null;return $send(self.$dup(),"tap",[],block.$to_proc())},TMP_Map_with_14.$$arity=0);return(Opal.defn(self,"$update_expression",TMP_Map_update_expression_15=function $$update_expression(expression_l){var self=this;return self.expression=expression_l},TMP_Map_update_expression_15.$$arity=1),nil)&&"update_expression"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/operator"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Operator(){}var self=$Operator=$klass($base,$super,"Operator",$Operator);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Operator_initialize_1;self.$attr_reader("operator");return(Opal.defn(self,"$initialize",TMP_Operator_initialize_1=function $$initialize(operator,expression){var self=this,$iter=TMP_Operator_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Operator_initialize_1.$$p=null;self.operator=operator;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Operator_initialize_1,false),[expression],null)},TMP_Operator_initialize_1.$$arity=2),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/collection"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Collection(){}var self=$Collection=$klass($base,$super,"Collection",$Collection);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Collection_initialize_1;self.$attr_reader("begin");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Collection_initialize_1=function $$initialize(begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Collection_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Collection_initialize_1.$$p=null;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Collection_initialize_1,false),[expression_l],null)},TMP_Collection_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/constant"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Constant(){}var self=$Constant=$klass($base,$super,"Constant",$Constant);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Constant_initialize_1,TMP_Constant_with_operator_3,TMP_Constant_update_operator_4;self.$attr_reader("double_colon");self.$attr_reader("name");self.$attr_reader("operator");Opal.defn(self,"$initialize",TMP_Constant_initialize_1=function $$initialize(double_colon,name,expression){var $a,self=this,$iter=TMP_Constant_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Constant_initialize_1.$$p=null;$a=[double_colon,name],self.double_colon=$a[0],self.name=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Constant_initialize_1,false),[expression],null)},TMP_Constant_initialize_1.$$arity=3);Opal.defn(self,"$with_operator",TMP_Constant_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Constant_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Constant_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Constant_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/variable"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Variable(){}var self=$Variable=$klass($base,$super,"Variable",$Variable);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Variable_initialize_1,TMP_Variable_with_operator_3,TMP_Variable_update_operator_4;self.$attr_reader("name");self.$attr_reader("operator");Opal.defn(self,"$initialize",TMP_Variable_initialize_1=function $$initialize(name_l,expression_l){var self=this,$iter=TMP_Variable_initialize_1.$$p,$yield=$iter||nil;if(expression_l==null){expression_l=name_l}if($iter)TMP_Variable_initialize_1.$$p=null;self.name=name_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Variable_initialize_1,false),[expression_l],null)},TMP_Variable_initialize_1.$$arity=-2);Opal.defn(self,"$with_operator",TMP_Variable_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Variable_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Variable_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Variable_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/keyword"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Keyword(){}var self=$Keyword=$klass($base,$super,"Keyword",$Keyword);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Keyword_initialize_1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Keyword_initialize_1=function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Keyword_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Keyword_initialize_1.$$p=null;self.keyword=keyword_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Keyword_initialize_1,false),[expression_l],null)},TMP_Keyword_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/definition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$join"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Definition(){}var self=$Definition=$klass($base,$super,"Definition",$Definition);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Definition_initialize_1;def.keyword=def.end=nil;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("name");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Definition_initialize_1=function $$initialize(keyword_l,operator_l,name_l,end_l){var self=this,$iter=TMP_Definition_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Definition_initialize_1.$$p=null;self.keyword=keyword_l;self.operator=operator_l;self.name=name_l;self.end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Definition_initialize_1,false),[self.keyword.$join(self.end)],null)},TMP_Definition_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/send"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$with","$update_operator","$protected"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Send(){}var self=$Send=$klass($base,$super,"Send",$Send);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Send_initialize_1,TMP_Send_with_operator_3,TMP_Send_update_operator_4;self.$attr_reader("dot");self.$attr_reader("selector");self.$attr_reader("operator");self.$attr_reader("begin");self.$attr_reader("end");Opal.defn(self,"$initialize",TMP_Send_initialize_1=function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_Send_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Send_initialize_1.$$p=null;self.dot=dot_l;self.selector=selector_l;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Send_initialize_1,false),[expression_l],null)},TMP_Send_initialize_1.$$arity=5);Opal.defn(self,"$with_operator",TMP_Send_with_operator_3=function $$with_operator(operator_l){var TMP_2,self=this;return $send(self,"with",[],(TMP_2=function(map){var self=TMP_2.$$s||this;if(map==null)map=nil;return map.$update_operator(operator_l)},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Send_with_operator_3.$$arity=1);self.$protected();return(Opal.defn(self,"$update_operator",TMP_Send_update_operator_4=function $$update_operator(operator_l){var self=this;return self.operator=operator_l},TMP_Send_update_operator_4.$$arity=1),nil)&&"update_operator"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/condition"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Condition(){}var self=$Condition=$klass($base,$super,"Condition",$Condition);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Condition_initialize_1;self.$attr_reader("keyword");self.$attr_reader("begin");self.$attr_reader("else");self.$attr_reader("end");return(Opal.defn(self,"$initialize",TMP_Condition_initialize_1=function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a,self=this,$iter=TMP_Condition_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Condition_initialize_1.$$p=null;self.keyword=keyword_l;$a=[begin_l,else_l,end_l],self.begin=$a[0],self["else"]=$a[1],self.end=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Condition_initialize_1,false),[expression_l],null)},TMP_Condition_initialize_1.$$arity=5),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/ternary"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Ternary(){}var self=$Ternary=$klass($base,$super,"Ternary",$Ternary);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Ternary_initialize_1;self.$attr_reader("question");self.$attr_reader("colon");return(Opal.defn(self,"$initialize",TMP_Ternary_initialize_1=function $$initialize(question_l,colon_l,expression_l){var $a,self=this,$iter=TMP_Ternary_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Ternary_initialize_1.$$p=null;$a=[question_l,colon_l],self.question=$a[0],self.colon=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Ternary_initialize_1,false),[expression_l],null)},TMP_Ternary_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/for"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $For(){}var self=$For=$klass($base,$super,"For",$For);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_For_initialize_1;self.$attr_reader("keyword","in");self.$attr_reader("begin","end");return(Opal.defn(self,"$initialize",TMP_For_initialize_1=function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a,self=this,$iter=TMP_For_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_For_initialize_1.$$p=null;$a=[keyword_l,in_l],self.keyword=$a[0],self["in"]=$a[1],$a;$a=[begin_l,end_l],self.begin=$a[0],self.end=$a[1],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_For_initialize_1,false),[expression_l],null)},TMP_For_initialize_1.$$arity=5),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/rescue_body"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RescueBody(){}var self=$RescueBody=$klass($base,$super,"RescueBody",$RescueBody);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RescueBody_initialize_1;self.$attr_reader("keyword");self.$attr_reader("assoc");self.$attr_reader("begin");return(Opal.defn(self,"$initialize",TMP_RescueBody_initialize_1=function $$initialize(keyword_l,assoc_l,begin_l,expression_l){var self=this,$iter=TMP_RescueBody_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_RescueBody_initialize_1.$$p=null;self.keyword=keyword_l;self.assoc=assoc_l;self.begin=begin_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_RescueBody_initialize_1,false),[expression_l],null)},TMP_RescueBody_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/heredoc"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Heredoc(){}var self=$Heredoc=$klass($base,$super,"Heredoc",$Heredoc);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Heredoc_initialize_1;self.$attr_reader("heredoc_body");self.$attr_reader("heredoc_end");return(Opal.defn(self,"$initialize",TMP_Heredoc_initialize_1=function $$initialize(begin_l,body_l,end_l){var self=this,$iter=TMP_Heredoc_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_Heredoc_initialize_1.$$p=null;self.heredoc_body=body_l;self.heredoc_end=end_l;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Heredoc_initialize_1,false),[begin_l],null)},TMP_Heredoc_initialize_1.$$arity=3),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Source,self=$Source=$module($base,"Source");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ObjcKwarg(){}var self=$ObjcKwarg=$klass($base,$super,"ObjcKwarg",$ObjcKwarg);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ObjcKwarg_initialize_1;self.$attr_reader("keyword");self.$attr_reader("operator");self.$attr_reader("argument");return(Opal.defn(self,"$initialize",TMP_ObjcKwarg_initialize_1=function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a,self=this,$iter=TMP_ObjcKwarg_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_ObjcKwarg_initialize_1.$$p=null;$a=[keyword_l,operator_l,argument_l],self.keyword=$a[0],self.operator=$a[1],self.argument=$a[2],$a;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ObjcKwarg_initialize_1,false),[expression_l],null)},TMP_ObjcKwarg_initialize_1.$$arity=4),nil)&&"initialize"})(Opal.const_get_relative($nesting,"Map"),Opal.const_get_relative($nesting,"Map"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["parser/syntax_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$attr_reader","$message"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SyntaxError_initialize_1;self.$attr_reader("diagnostic");return(Opal.defn(self,"$initialize",TMP_SyntaxError_initialize_1=function $$initialize(diagnostic){var self=this,$iter=TMP_SyntaxError_initialize_1.$$p,$yield=$iter||nil;if($iter)TMP_SyntaxError_initialize_1.$$p=null;self.diagnostic=diagnostic;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_SyntaxError_initialize_1,false),[diagnostic.$message()],null)},TMP_SyntaxError_initialize_1.$$arity=1),nil)&&"initialize"})($nesting[0],Opal.const_get_relative($nesting,"StandardError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/clobbering_error"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ClobberingError(){}var self=$ClobberingError=$klass($base,$super,"ClobberingError",$ClobberingError);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return nil})($nesting[0],Opal.const_get_relative($nesting,"RuntimeError"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_times(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs*rhs:lhs["$*"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$freeze","$attr_reader","$include?","$raise","$join","$inspect","$dup","$%","$[]","$==","$line","$last_line","$is?","$+","$message","$render_line","$first_line_only","$last_line_only","$-","$source_buffer","$decompose_position","$end_pos","$>","$private","$source_line","$*","$length","$each","$line_range","$intersect","$column_range","$size","$[]=","$!","$>=","$map","$name","$!=","$resize","$=~","$source","$new","$begin_pos"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Diagnostic(){}var self=$Diagnostic=$klass($base,$super,"Diagnostic",$Diagnostic);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Diagnostic_initialize_1,TMP_Diagnostic_message_2,TMP_Diagnostic_render_3,TMP_Diagnostic_render_line_6,TMP_Diagnostic_first_line_only_7,TMP_Diagnostic_last_line_only_8;def.reason=def["arguments"]=def.location=def.level=def.highlights=nil;Opal.const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze());self.$attr_reader("level","reason","arguments");self.$attr_reader("location","highlights");Opal.defn(self,"$initialize",TMP_Diagnostic_initialize_1=function $$initialize(level,reason,arguments$,location,highlights){var $a,self=this;if(highlights==null){highlights=[]}if($truthy(Opal.const_get_relative($nesting,"LEVELS")["$include?"](level))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+(""+"Diagnostic#level must be one of "+Opal.const_get_relative($nesting,"LEVELS").$join(", ")+"; ")+(""+level.$inspect()+" provided."))}if($truthy(location)){}else{self.$raise("Expected a location")}self.level=level;self.reason=reason;self["arguments"]=($truthy($a=arguments$)?$a:$hash2([],{})).$dup().$freeze();self.location=location;self.highlights=highlights.$dup().$freeze();return self.$freeze()},TMP_Diagnostic_initialize_1.$$arity=-5);Opal.defn(self,"$message",TMP_Diagnostic_message_2=function $$message(){var self=this;return Opal.const_get_relative($nesting,"MESSAGES")["$[]"](self.reason)["$%"](self["arguments"])},TMP_Diagnostic_message_2.$$arity=0);Opal.defn(self,"$render",TMP_Diagnostic_render_3=function $$render(){var $a,$b,self=this,first_line=nil,last_line=nil,num_lines=nil,buffer=nil,last_lineno=nil,last_column=nil;if($truthy($truthy($a=self.location.$line()["$=="](self.location.$last_line()))?$a:self.location["$is?"]("\n"))){return $rb_plus([""+self.location+": "+self.level+": "+self.$message()],self.$render_line(self.location))}else{first_line=self.$first_line_only(self.location);last_line=self.$last_line_only(self.location);num_lines=$rb_plus($rb_minus(self.location.$last_line(),self.location.$line()),1);buffer=self.location.$source_buffer();$b=buffer.$decompose_position(self.location.$end_pos()),$a=Opal.to_ary($b),last_lineno=$a[0]==null?nil:$a[0],last_column=$a[1]==null?nil:$a[1],$b;return $rb_plus($rb_plus([""+self.location+"-"+last_lineno+":"+last_column+": "+self.level+": "+self.$message()],self.$render_line(first_line,$rb_gt(num_lines,2),false)),self.$render_line(last_line,false,true))}},TMP_Diagnostic_render_3.$$arity=0);self.$private();Opal.defn(self,"$render_line",TMP_Diagnostic_render_line_6=function $$render_line(range,ellipsis,range_end){var TMP_4,$a,TMP_5,self=this,source_line=nil,highlight_line=nil,$writer=nil;if(ellipsis==null){ellipsis=false}if(range_end==null){range_end=false}source_line=range.$source_line();highlight_line=$rb_times(" ",source_line.$length());$send(self.highlights,"each",[],(TMP_4=function(highlight){var self=TMP_4.$$s||this,line_range=nil,$writer=nil;if(highlight==null)highlight=nil;line_range=range.$source_buffer().$line_range(range.$line());if($truthy(highlight=highlight.$intersect(line_range))){$writer=[highlight.$column_range(),$rb_times("~",highlight.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));if($truthy(range["$is?"]("\n"))){highlight_line=$rb_plus(highlight_line,"^")}else if($truthy($truthy($a=range_end["$!"]())?$rb_ge(range.$size(),1):$a)){$writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[range.$column_range(),$rb_times("~",range.$size())];$send(highlight_line,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(ellipsis)){highlight_line=$rb_plus(highlight_line,"...")}return $send([source_line,highlight_line],"map",[],(TMP_5=function(line){var self=TMP_5.$$s||this;if(line==null)line=nil;return""+range.$source_buffer().$name()+":"+range.$line()+": "+line},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_Diagnostic_render_line_6.$$arity=-2);Opal.defn(self,"$first_line_only",TMP_Diagnostic_first_line_only_7=function $$first_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return range.$resize(range.$source()["$=~"](/\n/))}else{return range}},TMP_Diagnostic_first_line_only_7.$$arity=1);return(Opal.defn(self,"$last_line_only",TMP_Diagnostic_last_line_only_8=function $$last_line_only(range){var self=this;if($truthy(range.$line()["$!="](range.$last_line()))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(range.$source_buffer(),$rb_plus(range.$begin_pos(),range.$source()["$=~"](/[^\n]*$/)),range.$end_pos())}else{return range}},TMP_Diagnostic_last_line_only_8.$$arity=1),nil)&&"last_line_only"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/diagnostic/engine"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$attr_accessor","$ignore?","$call","$raise?","$raise","$protected","$==","$level"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Engine(){}var self=$Engine=$klass($base,$super,"Engine",$Engine);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Engine_initialize_1,TMP_Engine_process_2,TMP_Engine_ignore$q_3,TMP_Engine_raise$q_4;def.consumer=def.ignore_warnings=def.all_errors_are_fatal=nil;self.$attr_accessor("consumer");self.$attr_accessor("all_errors_are_fatal");self.$attr_accessor("ignore_warnings");Opal.defn(self,"$initialize",TMP_Engine_initialize_1=function $$initialize(consumer){var self=this;if(consumer==null){consumer=nil}self.consumer=consumer;self.all_errors_are_fatal=false;return self.ignore_warnings=false},TMP_Engine_initialize_1.$$arity=-1);Opal.defn(self,"$process",TMP_Engine_process_2=function $$process(diagnostic){var self=this;if($truthy(self["$ignore?"](diagnostic))){}else if($truthy(self.consumer)){self.consumer.$call(diagnostic)}if($truthy(self["$raise?"](diagnostic))){self.$raise(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"SyntaxError"),diagnostic)}return self},TMP_Engine_process_2.$$arity=1);self.$protected();Opal.defn(self,"$ignore?",TMP_Engine_ignore$q_3=function(diagnostic){var $a,self=this;return $truthy($a=self.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$a},TMP_Engine_ignore$q_3.$$arity=1);return(Opal.defn(self,"$raise?",TMP_Engine_raise$q_4=function(diagnostic){var $a,$b,self=this;return $truthy($a=$truthy($b=self.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$b)?$a:diagnostic.$level()["$=="]("fatal")},TMP_Engine_raise$q_4.$$arity=1),nil)&&"raise?"})(Opal.const_get_relative($nesting,"Diagnostic"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/static_environment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$reset","$[]","$push","$dup","$pop","$add","$to_sym","$include?"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $StaticEnvironment(){}var self=$StaticEnvironment=$klass($base,$super,"StaticEnvironment",$StaticEnvironment);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StaticEnvironment_initialize_1,TMP_StaticEnvironment_reset_2,TMP_StaticEnvironment_extend_static_3,TMP_StaticEnvironment_extend_dynamic_4,TMP_StaticEnvironment_unextend_5,TMP_StaticEnvironment_declare_6,TMP_StaticEnvironment_declared$q_7;def.stack=def.variables=nil;Opal.defn(self,"$initialize",TMP_StaticEnvironment_initialize_1=function $$initialize(){var self=this;return self.$reset()},TMP_StaticEnvironment_initialize_1.$$arity=0);Opal.defn(self,"$reset",TMP_StaticEnvironment_reset_2=function $$reset(){var self=this;self.variables=Opal.const_get_relative($nesting,"Set")["$[]"]();return self.stack=[]},TMP_StaticEnvironment_reset_2.$$arity=0);Opal.defn(self,"$extend_static",TMP_StaticEnvironment_extend_static_3=function $$extend_static(){var self=this;self.stack.$push(self.variables);self.variables=Opal.const_get_relative($nesting,"Set")["$[]"]();return self},TMP_StaticEnvironment_extend_static_3.$$arity=0);Opal.defn(self,"$extend_dynamic",TMP_StaticEnvironment_extend_dynamic_4=function $$extend_dynamic(){var self=this;self.stack.$push(self.variables);self.variables=self.variables.$dup();return self},TMP_StaticEnvironment_extend_dynamic_4.$$arity=0);Opal.defn(self,"$unextend",TMP_StaticEnvironment_unextend_5=function $$unextend(){var self=this;self.variables=self.stack.$pop();return self},TMP_StaticEnvironment_unextend_5.$$arity=0);Opal.defn(self,"$declare",TMP_StaticEnvironment_declare_6=function $$declare(name){var self=this;self.variables.$add(name.$to_sym());return self},TMP_StaticEnvironment_declare_6.$$arity=1);return(Opal.defn(self,"$declared?",TMP_StaticEnvironment_declared$q_7=function(name){var self=this;return self.variables["$include?"](name.$to_sym())},TMP_StaticEnvironment_declared$q_7.$$arity=1),nil)&&"declared?"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$send=Opal.send,$hash=Opal.hash,$truthy=Opal.truthy,$hash2=Opal.hash2,$range=Opal.range,$gvars=Opal.gvars;Opal.add_stubs(["$attr_accessor","$private","$_lex_trans_keys=","$-","$_lex_key_spans=","$_lex_index_offsets=","$_lex_indicies=","$_lex_trans_targs=","$_lex_trans_actions=","$_lex_to_state_actions=","$_lex_from_state_actions=","$_lex_eof_trans=","$lex_start=","$lex_error=","$lex_en_interp_words=","$lex_en_interp_string=","$lex_en_plain_words=","$lex_en_plain_string=","$lex_en_interp_backslash_delimited=","$lex_en_plain_backslash_delimited=","$lex_en_interp_backslash_delimited_words=","$lex_en_plain_backslash_delimited_words=","$lex_en_regexp_modifiers=","$lex_en_expr_variable=","$lex_en_expr_fname=","$lex_en_expr_endfn=","$lex_en_expr_dot=","$lex_en_expr_arg=","$lex_en_expr_cmdarg=","$lex_en_expr_endarg=","$lex_en_expr_mid=","$lex_en_expr_beg=","$lex_en_expr_labelarg=","$lex_en_expr_value=","$lex_en_expr_end=","$lex_en_leading_dot=","$lex_en_line_comment=","$lex_en_line_begin=","$freeze","$ord","$union","$chars","$attr_reader","$reset","$lex_en_line_begin","$class","$new","$source","$==","$encoding","$unpack","$[]","$lex_en_expr_dot","$lex_en_expr_fname","$lex_en_expr_value","$lex_en_expr_beg","$lex_en_expr_mid","$lex_en_expr_arg","$lex_en_expr_cmdarg","$lex_en_expr_end","$lex_en_expr_endarg","$lex_en_expr_endfn","$lex_en_expr_labelarg","$lex_en_interp_string","$lex_en_interp_words","$lex_en_plain_string","$fetch","$invert","$push","$count","$pop","$any?","$shift","$send","$+","$size","$<=","$===","$<<","$>","$!=","$emit_comment","$literal","$flush_string","$extend_content","$emit","$heredoc?","$saved_herebody_s=","$start_interp_brace","$[]=","$diagnostic","$range","$str_s","$gsub","$tok","$version?","$nest_and_try_closing","$heredoc_e","$pop_literal","$infer_indent_level","$words?","$!","$eof_codepoint?","$extend_space","$extend_string","$>=","$active?","$slice","$chr","$munge_escape?","$regexp?","$match","$scan","$join","$=~","$to_i","$stack_pop","$emit_table","$push_literal","$arg_or_cmdarg","$emit_do","$start_with?","$nil?","$declared?","$force_encoding","$dup","$lexpop","$include?","$inspect","$last","$end_with?","$empty?","$index","$call","$to_f","$Float","$length","$lambda","$Rational","$Complex","$each","$split","$encode_escape","$%","$end_interp_brace_and_try_closing","$saved_herebody_s","$&","$|","$lex_error","$protected","$process","$backslash_delimited?","$interpolate?","$lex_en_interp_backslash_delimited_words","$lex_en_plain_backslash_delimited_words","$lex_en_plain_words","$lex_en_interp_backslash_delimited","$lex_en_plain_backslash_delimited","$dedent_level","$type","$lex_en_regexp_modifiers","$upcase"]);return function($base,$super,$parent_nesting){function $Lexer(){}var self=$Lexer=$klass($base,$super,"Lexer",$Lexer);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Lexer_initialize_1,TMP_Lexer_reset_2,TMP_Lexer_source_buffer$eq_3,TMP_Lexer_encoding_4,TMP_Lexer_state_5,TMP_Lexer_state$eq_6,TMP_Lexer_push_cmdarg_7,TMP_Lexer_pop_cmdarg_8,TMP_Lexer_push_cond_9,TMP_Lexer_pop_cond_10,TMP_Lexer_dedent_level_11,TMP_Lexer_advance_36,TMP_Lexer_eof_codepoint$q_37,TMP_Lexer_version$q_38,TMP_Lexer_stack_pop_39,$a,TMP_Lexer_encode_escape_40,TMP_Lexer_encode_escape_41,TMP_Lexer_tok_42,TMP_Lexer_range_43,TMP_Lexer_emit_44,TMP_Lexer_emit_table_45,TMP_Lexer_emit_do_46,TMP_Lexer_arg_or_cmdarg_47,TMP_Lexer_emit_comment_48,TMP_Lexer_diagnostic_49,TMP_Lexer_push_literal_50,TMP_Lexer_literal_51,TMP_Lexer_pop_literal_52,TMP_Lexer_53,$writer=nil;def.source_buffer=def.source_pts=def.cs=def.cmdarg_stack=def.cmdarg=def.cond_stack=def.cond=def.dedent_level=def.token_queue=def.p=def.herebody_s=def.sharp_s=def.ts=def.top=def.stack=def.te=def.version=def.escape_s=def.escape=def.act=def.static_env=def.lambda_stack=def.paren_nest=def.num_digits_s=def.num_suffix_s=def.num_base=def.num_xfrm=def.newline_s=def.eq_begin_s=def.in_kwarg=def.tokens=def.command_state=def.comments=def.diagnostics=def.literal_stack=nil;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_keys");return self.$private("_lex_trans_keys","_lex_trans_keys=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,26,0,127,58,58,58,58,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,58,58,98,98,101,101,103,103,105,105,110,110,0,122,61,61,0,127,0,127,61,126,0,127,0,127,93,93,0,127,0,127,10,10,10,34,10,10,10,39,0,127,10,96,0,45,0,77,0,77,0,92,0,26,0,26,0,45,0,99,0,26,67,99,45,45,0,92,0,77,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,46,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,26,0,35,9,32,36,123,0,127,48,57,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,65,122,0,122,38,61,0,0,42,61,61,61,48,61,48,62,46,46,46,46,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,124,124,60,61,0,0,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,0,45,0,92,0,92,0,0,0,0,0,92,0,45,10,10,0,92,0,123,0,26,0,26,0,26,0,0,0,102,0,102,0,102,0,0,0,125,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,0,0,125,0,26,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,48,101,48,95,46,120,48,114,43,57,48,105,0,0,105,105,0,0,48,114,48,114,48,114,48,114,105,114,0,0,105,105,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,46,9,46,46,46,10,61,10,10,10,101,10,110,10,100,10,10,0]];$send(self,"_lex_trans_keys=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_key_spans");return self.$private("_lex_key_spans","_lex_key_spans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,1,1,1,1,1,1,123,1,128,128,66,128,128,1,128,128,1,25,1,30,128,87,46,78,78,93,27,27,46,100,27,33,1,93,78,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,128,1,84,84,84,84,84,84,1,1,38,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,0,126,0,55,0,93,88,128,10,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,0,126,0,55,0,93,24,27,93,27,36,88,128,10,27,36,24,88,128,10,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,58,123,24,0,20,1,14,15,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,1,2,0,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,46,93,93,0,0,93,46,1,93,124,27,27,27,0,103,103,103,0,126,126,126,126,126,0,126,126,0,126,27,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,54,48,75,67,15,58,0,1,0,67,67,67,67,10,0,1,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,38,38,1,52,1,92,101,91,1]];$send(self,"_lex_key_spans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_index_offsets");return self.$private("_lex_index_offsets","_lex_index_offsets=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,688,767,861,889,917,964,1065,1093,1127,1129,1223,1302,1406,1535,1664,1793,1922,1969,2048,2127,2221,2249,2277,2324,2425,2453,2487,2489,2583,2662,2766,2895,3024,3153,3282,3411,3540,3669,3798,3927,4056,4185,4314,4443,4471,4600,4602,4604,4733,4735,4737,4739,4741,4870,4999,5128,5257,5386,5515,5644,5773,5902,6031,6160,6289,6418,6547,6676,6805,6934,7063,7065,7067,7069,7071,7081,7083,7085,7087,7089,7091,7093,7095,7097,7226,7228,7357,7359,7361,7363,7365,7367,7369,7493,7495,7624,7753,7820,7949,8078,8080,8209,8338,8340,8366,8368,8399,8528,8616,8663,8742,8821,8915,8943,8971,9018,9119,9147,9181,9183,9277,9356,9460,9589,9718,9847,9976,10105,10234,10236,10238,10367,10383,10394,10405,10416,10427,10556,10558,10643,10728,10813,10898,10983,11068,11070,11072,11111,11113,11210,11235,11236,11238,11240,11242,11267,11269,11271,11365,11390,11479,11608,11619,11741,11742,11743,11752,11761,11762,11763,11857,11858,11859,11860,11954,11956,11957,11958,11959,12053,12100,12194,12288,12289,12290,12384,12431,12433,12527,12652,12680,12708,12736,12737,12841,12945,13049,13050,13177,13304,13431,13558,13685,13686,13813,13940,13941,14068,14096,14223,14350,14477,14604,14731,14858,14985,15112,15239,15240,15367,15368,15424,15425,15519,15608,15737,15748,15870,15871,15872,15881,15890,15891,15892,15986,15987,15988,15989,16083,16085,16086,16087,16088,16182,16229,16323,16417,16418,16419,16513,16560,16562,16656,16781,16809,16837,16865,16866,16970,17074,17178,17179,17306,17433,17560,17687,17814,17815,17942,18069,18070,18197,18225,18352,18479,18606,18733,18860,18987,19114,19241,19368,19369,19496,19497,19553,19554,19648,19673,19701,19795,19823,19860,19949,20078,20089,20117,20154,20179,20268,20397,20408,20442,20467,20526,20585,20615,20744,20755,20884,21013,21142,21271,21296,21297,21364,21366,21368,21497,21626,21637,21639,21641,21643,21645,21647,21650,21652,21719,21721,21724,21853,21982,22111,22240,22369,22498,22627,22629,22631,22760,22889,23018,23147,23276,23405,23534,23663,23792,23921,24050,24179,24308,24437,24566,24695,24824,24953,25082,25211,25340,25469,25598,25727,25856,25985,26114,26243,26372,26501,26630,26759,26888,27017,27146,27275,27404,27533,27662,27791,27920,28049,28178,28307,28436,28565,28694,28823,28952,29081,29210,29339,29468,29597,29726,29855,29984,30113,30242,30371,30500,30629,30758,30887,31016,31145,31274,31403,31532,31661,31790,31919,32048,32177,32306,32435,32564,32693,32822,32951,33080,33209,33338,33340,33469,33598,33623,33625,33627,33629,33630,33759,33888,33890,33891,33916,33917,33984,33986,33988,33990,33992,33994,33997,33999,34066,34068,34071,34200,34202,34204,34206,34334,34463,34526,34580,34634,34635,34689,34744,34746,34748,34750,34775,34776,34905,34906,35023,35024,35026,35028,35029,35083,35085,35087,35089,35114,35116,35245,35247,35249,35251,35253,35382,35511,35640,35641,35770,35772,35897,35922,35924,35926,35928,35929,35931,35932,36061,36190,36215,36216,36218,36220,36222,36223,36352,36481,36610,36739,36868,36997,37126,37255,37384,37513,37642,37771,37900,38029,38158,38287,38416,38545,38550,38551,38618,38620,38621,38622,38623,38648,38650,38675,38742,38744,38746,38805,38929,38954,38955,38976,38978,38993,39009,39011,39013,39041,39170,39299,39301,39302,39369,39372,39373,39374,39375,39376,39443,39572,39583,39585,39587,39589,39592,39594,39596,39599,39601,39604,39605,39607,39674,39677,39801,39802,39931,40060,40182,40183,40184,40193,40202,40203,40204,40298,40299,40300,40301,40395,40397,40398,40399,40400,40494,40541,40635,40729,40730,40731,40825,40872,40874,40968,41093,41121,41149,41177,41178,41282,41386,41490,41491,41618,41745,41872,41999,42126,42127,42254,42381,42382,42509,42537,42664,42791,42918,43045,43172,43299,43426,43553,43680,43807,43934,44061,44188,44315,44316,44317,44373,44374,44503,44632,44761,44762,44764,44765,44894,45023,45152,45281,45410,45539,45668,45797,45926,46055,46184,46313,46442,46571,46700,46829,46958,47087,47216,47345,47474,47603,47732,47861,47990,48119,48248,48377,48506,48635,48764,48893,49022,49151,49280,49409,49538,49667,49796,49925,50054,50183,50312,50441,50570,50699,50828,50957,51086,51215,51344,51473,51602,51731,51860,51989,52118,52247,52376,52505,52572,52701,52830,52959,53088,53217,53346,53475,53604,53733,53862,53991,54120,54249,54378,54507,54636,54765,54894,55023,55152,55281,55410,55539,55668,55797,55798,55863,55957,55982,55983,55985,55987,55989,55990,56119,56248,56273,56274,56276,56278,56280,56281,56410,56539,56541,56542,56567,56568,56635,56637,56639,56768,56897,56908,56910,56935,56936,56937,56958,56961,56974,56976,57031,57080,57156,57224,57240,57299,57300,57302,57303,57371,57439,57507,57575,57586,57587,57589,57590,57658,57726,57794,57862,57930,57998,58066,58134,58204,58272,58342,58410,58412,58415,58417,58484,58486,58489,58618,58747,58748,58877,59006,59135,59264,59393,59522,59523,59525,59526,59655,59784,59913,60042,60171,60300,60429,60558,60687,60816,60945,61074,61203,61332,61461,61590,61719,61848,61977,62106,62235,62364,62493,62622,62751,62880,63009,63138,63267,63396,63525,63654,63783,63912,64041,64170,64299,64384,64513,64642,64771,64900,65029,65158,65287,65416,65545,65674,65803,65932,66061,66190,66319,66448,66577,66706,66835,66964,67093,67222,67351,67480,67609,67738,67867,67996,68125,68254,68383,68512,68641,68770,68899,69028,69157,69286,69415,69544,69673,69802,69931,70060,70189,70318,70447,70576,70705,70834,70963,71092,71221,71350,71479,71608,71737,71866,71995,72124,72253,72382,72511,72640,72769,72770,72835,72836,72875,72914,72916,72969,72971,73064,73166,73258]];$send(self,"_lex_index_offsets=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_indicies");return self.$private("_lex_indicies","_lex_indicies=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,19,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,23,21,18,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,18,28,28,28,18,28,28,28,28,28,29,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,28,28,28,18,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,18,28,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,30,19,18,31,31,31,18,31,31,31,31,31,32,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,33,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,34,31,31,31,31,31,31,35,31,18,31,31,31,18,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,31,36,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,37,18,37,18,18,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,18,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,40,38,18,21,21,21,18,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,18,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,24,21,18,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,18,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,42,42,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,41,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,43,45,43,45,45,43,43,45,45,45,46,45,45,47,47,47,47,47,47,47,47,47,47,45,45,45,45,45,45,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,45,43,43,44,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,45,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,45,43,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,43,43,43,43,43,45,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,48,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,44,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,50,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,54,52,49,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,49,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,49,59,59,59,49,59,59,59,59,59,60,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,59,59,59,49,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,49,59,49,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,61,50,49,62,62,62,49,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,65,62,62,62,62,62,62,66,62,49,62,62,62,49,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,49,62,67,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,68,49,68,49,49,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,49,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,49,52,52,52,49,52,52,52,52,52,53,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,49,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,55,52,49,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,49,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,72,72,72,72,72,72,72,73,73,73,73,73,73,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,72,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,74,76,74,76,76,74,74,76,76,76,77,76,76,78,78,78,78,78,78,78,78,78,78,76,76,76,76,76,76,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,76,74,74,75,76,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,76,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,74,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,76,74,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,76,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,79,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,75,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,74,74,74,74,74,75,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,80,82,80,82,82,80,80,82,82,82,83,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,82,80,80,81,82,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,82,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,80,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,82,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,80,80,80,80,80,82,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,85,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,81,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,81,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,88,87,88,87,87,88,88,87,87,87,89,87,87,90,90,90,90,90,90,90,90,90,90,87,87,87,87,87,87,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,87,88,88,86,87,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,88,88,88,87,88,86,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,88,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,87,88,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,91,91,91,91,91,91,91,91,91,91,88,88,88,88,88,88,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,91,88,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,88,88,88,88,88,91,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,93,93,93,93,93,93,93,93,93,93,88,88,88,88,88,88,88,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,88,88,88,88,93,88,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,88,88,88,88,88,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,95,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,94,94,94,94,94,95,96,97,97,97,96,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,96,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,100,98,98,98,98,98,98,98,98,98,98,98,98,98,98,99,99,99,99,99,99,99,99,99,99,101,98,98,98,98,100,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,98,98,98,98,99,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,98,98,98,98,98,99,101,98,98,102,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,105,103,103,103,103,103,103,103,103,103,103,103,103,103,103,104,104,104,104,104,104,104,104,104,104,106,103,103,103,103,105,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,103,103,103,103,104,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,103,103,103,103,103,104,106,103,108,107,109,107,110,107,107,107,107,107,107,107,107,107,107,112,107,112,112,112,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,112,107,107,107,107,113,114,107,115,107,116,117,118,119,120,113,107,107,107,107,107,107,107,107,107,107,121,107,122,118,123,124,107,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,125,126,118,127,111,107,111,111,111,111,111,111,111,111,128,111,111,111,111,111,111,111,111,129,111,111,130,111,131,111,111,111,132,133,107,127,107,111,107,107,107,107,107,107,107,107,107,134,107,134,134,134,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,134,107,107,107,107,135,136,107,137,107,138,139,140,141,142,135,107,107,107,107,107,107,107,107,107,107,143,107,144,140,145,146,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,147,148,140,109,104,107,104,104,104,104,104,104,104,104,149,104,104,104,104,104,104,104,104,150,104,104,151,104,152,104,104,104,153,154,107,109,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,156,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,157,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,158,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,159,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,160,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,161,104,104,104,104,104,104,104,162,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,163,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,164,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,155,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,165,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,155,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,166,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,167,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,104,104,104,104,104,104,104,104,104,104,106,107,107,107,107,105,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,104,107,104,104,104,104,104,104,104,104,104,104,104,159,104,104,104,104,104,104,104,104,104,104,104,104,104,104,107,107,107,107,107,104,169,168,170,168,171,168,140,168,172,168,168,168,168,168,168,168,173,168,174,168,175,168,140,168,176,168,140,168,177,168,171,168,179,178,180,180,180,180,180,180,180,180,180,182,180,182,182,182,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,182,180,180,180,180,180,180,180,183,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,184,180,180,181,180,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,180,180,180,180,181,186,180,180,180,180,180,180,180,180,180,180,188,180,188,188,188,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,188,180,180,180,180,180,180,180,189,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,180,190,180,180,187,180,187,187,187,191,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,180,180,180,180,180,187,192,193,195,194,196,194,197,194,198,194,199,194,200,201,201,201,200,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,200,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,203,192,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,206,204,206,204,206,206,204,204,206,206,206,207,206,206,208,208,208,208,208,208,208,208,208,208,206,206,206,206,206,206,206,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,206,204,204,205,206,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,206,204,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,206,206,206,206,206,206,206,206,206,204,204,204,204,204,204,204,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,204,204,204,204,206,204,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,204,204,204,204,204,206,209,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,210,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,205,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,204,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,205,204,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,204,204,204,204,204,205,209,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,212,204,204,204,204,213,204,204,204,204,204,214,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,203,204,204,204,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,211,215,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,214,204,211,217,217,217,217,217,217,217,217,217,217,218,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,217,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,217,217,217,216,217,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,216,220,219,204,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,221,212,218,217,204,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,221,213,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,212,204,204,204,204,213,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,211,215,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,204,204,204,204,204,211,204,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,221,215,222,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,224,223,222,225,225,225,222,225,225,225,225,225,226,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,227,225,222,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,228,225,222,229,229,229,222,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,222,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,222,232,232,232,222,232,232,232,232,232,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,222,232,222,232,232,232,222,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,222,232,222,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,222,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,234,223,222,235,235,235,222,235,235,235,235,235,236,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,222,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,237,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,238,235,235,235,235,235,235,239,235,222,235,235,235,222,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,222,235,240,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,241,222,241,222,222,242,242,242,222,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,222,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,244,242,222,225,225,225,222,225,225,225,225,225,226,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,222,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,228,225,222,245,245,245,222,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,222,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246,246,246,246,246,246,246,245,245,245,245,245,245,245,246,246,246,246,246,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,246,246,246,246,246,246,245,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,247,247,247,247,247,247,247,247,247,247,249,192,192,250,192,248,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,247,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,192,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,251,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,247,247,252,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,247,247,247,247,247,247,247,247,247,247,253,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,248,204,204,204,204,204,204,204,204,204,204,204,204,204,204,247,247,247,247,247,247,247,247,247,247,249,204,204,250,204,248,204,247,247,247,253,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,247,204,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,204,204,204,204,204,247,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,256,254,254,254,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,257,254,254,254,254,256,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,255,257,254,254,258,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,260,260,260,260,260,260,260,260,260,260,259,259,259,259,259,259,259,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,259,259,259,259,260,259,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,259,259,259,259,259,260,262,261,262,261,261,263,263,263,263,263,263,263,263,263,263,261,263,263,263,263,263,263,263,263,263,263,261,264,264,264,264,264,264,264,264,264,264,261,266,266,266,266,266,266,266,266,266,266,265,267,267,267,267,267,267,267,267,267,267,265,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,268,268,268,268,268,268,268,268,268,268,259,259,259,259,259,259,259,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,259,259,259,259,268,259,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,259,259,259,259,259,268,269,265,270,271,270,270,270,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,270,265,265,272,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,273,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,274,265,275,276,275,275,275,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,275,265,265,277,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,278,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,279,265,281,282,281,281,281,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,281,280,280,283,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,284,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,285,280,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,290,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,292,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,287,293,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,290,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,294,265,271,265,296,295,296,296,296,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,296,295,295,295,295,295,297,295,295,295,295,295,295,295,298,295,299,295,301,300,300,300,301,300,300,300,300,302,303,302,302,302,300,300,300,300,300,300,300,300,300,300,300,300,301,300,300,300,300,300,302,300,300,304,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,305,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,306,300,300,307,300,302,308,302,302,302,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,302,308,309,310,311,312,313,315,314,317,318,317,317,317,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,317,316,303,314,319,314,321,320,320,320,321,320,320,320,320,322,323,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,321,320,320,320,320,320,322,320,320,324,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,325,320,322,326,322,322,322,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,322,326,328,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,329,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,330,327,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,13,13,13,13,13,13,13,13,13,13,331,331,331,331,331,331,331,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,331,331,331,331,13,331,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,331,331,331,331,331,13,16,16,16,16,16,16,16,16,16,16,331,334,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,335,335,335,335,335,335,335,335,333,333,333,333,333,333,333,333,333,333,333,336,333,333,333,333,333,333,333,333,333,337,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,338,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,339,333,333,340,333,341,342,344,344,344,344,344,344,344,344,343,345,345,345,345,345,345,345,345,343,343,346,346,38,38,38,346,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,346,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,347,38,348,349,350,350,38,38,38,350,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,350,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,351,38,37,350,352,353,354,354,25,25,25,354,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,354,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,355,25,350,19,19,19,350,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,350,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,356,19,346,25,25,25,346,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,346,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,346,357,357,357,346,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,346,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,358,357,359,360,360,357,357,357,360,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,360,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,361,357,360,19,19,19,360,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,360,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,356,19,362,360,360,25,25,25,360,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,360,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,27,25,363,364,364,364,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,365,365,365,365,365,365,365,365,365,365,364,364,364,364,364,364,364,365,365,365,365,365,365,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,365,365,365,365,365,365,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,366,364,363,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,363,367,363,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,363,368,363,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,363,369,363,363,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,363,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,370,370,370,370,370,370,370,370,370,370,367,367,367,367,367,367,367,370,370,370,370,370,370,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,370,370,370,370,370,370,367,363,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,363,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,371,371,371,371,371,371,371,371,371,371,368,368,368,368,368,368,368,371,371,371,371,371,371,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,371,371,371,371,371,371,368,363,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,363,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,372,372,372,372,372,372,372,372,372,372,369,369,369,369,369,369,369,372,372,372,372,372,372,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,372,372,372,372,372,372,369,373,376,375,375,375,376,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,376,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,377,377,377,377,377,377,377,377,377,377,375,375,375,375,375,375,375,377,377,377,377,377,377,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,377,377,377,377,377,377,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,367,375,376,378,378,378,376,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,376,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379,379,379,379,379,379,379,379,378,378,378,378,378,378,378,379,379,379,379,379,379,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,379,379,379,379,379,379,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,380,378,376,381,381,381,376,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,376,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,382,382,382,382,382,382,382,382,382,382,381,381,381,381,381,381,381,382,382,382,382,382,382,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,382,382,382,382,382,382,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,383,381,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,385,385,385,385,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,385,385,385,385,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,386,376,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,376,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,376,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,374,385,374,376,382,382,382,376,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,376,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,369,382,374,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,376,378,378,378,376,378,378,378,378,387,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,376,378,378,378,378,378,387,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,388,388,388,388,388,388,388,388,388,388,378,378,378,378,378,378,378,388,388,388,388,388,388,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,388,388,388,388,388,388,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,389,378,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,390,390,390,390,390,390,390,390,390,390,384,384,384,384,384,384,384,390,390,390,390,390,390,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,390,390,390,390,390,390,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,391,391,391,391,391,391,391,391,391,391,384,384,384,384,384,384,384,391,391,391,391,391,391,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,391,391,391,391,391,391,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,392,392,392,392,392,392,392,392,392,392,384,384,384,384,384,384,384,392,392,392,392,392,392,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,392,392,392,392,392,392,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,393,393,393,393,393,393,393,393,393,393,384,384,384,384,384,384,384,393,393,393,393,393,393,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,393,393,393,393,393,393,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,394,394,394,394,394,394,394,394,394,394,384,384,384,384,384,384,384,394,394,394,394,394,394,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,394,394,394,394,394,394,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,395,395,395,395,395,395,395,395,395,395,384,384,384,384,384,384,384,395,395,395,395,395,395,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,395,395,395,395,395,395,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,387,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,396,396,396,396,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,389,384,376,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,376,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,396,396,396,396,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,396,396,396,396,396,396,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,386,384,397,376,381,381,381,376,381,381,381,381,387,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,376,381,381,381,381,381,387,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,392,392,392,392,392,392,392,392,392,392,381,381,381,381,381,381,381,392,392,392,392,392,392,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,392,392,392,392,392,392,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,389,381,398,400,400,400,400,400,400,400,400,400,400,399,399,399,399,399,399,399,400,400,400,400,400,400,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,400,400,400,400,400,400,399,399,402,401,401,401,402,401,401,401,401,401,403,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,402,401,401,401,401,401,401,401,401,404,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,405,401,407,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,408,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,409,406,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,44,44,44,44,44,44,44,44,44,44,410,410,410,410,410,410,410,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,410,410,410,410,44,410,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,410,410,410,410,410,44,47,47,47,47,47,47,47,47,47,47,410,413,412,412,412,413,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,413,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,414,414,414,414,414,414,414,414,412,412,412,412,412,412,412,412,412,412,412,415,412,412,412,412,412,412,412,412,412,416,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,417,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,418,412,412,419,412,420,421,423,423,423,423,423,423,423,423,422,424,424,424,424,424,424,424,424,422,422,425,425,69,69,69,425,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,425,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,426,69,427,428,429,429,69,69,69,429,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,429,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,430,69,68,429,431,432,433,433,56,56,56,433,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,433,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,434,56,429,50,50,50,429,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,429,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,435,50,425,56,56,56,425,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,425,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,425,436,436,436,425,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,425,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,437,436,438,439,439,436,436,436,439,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,439,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,440,436,439,50,50,50,439,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,439,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,435,50,441,439,439,56,56,56,439,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,439,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,58,56,442,443,443,443,442,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,442,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,444,444,444,444,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,445,443,442,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,442,446,442,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,442,447,442,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,442,448,442,442,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,442,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,449,449,449,449,449,449,449,449,449,449,446,446,446,446,446,446,446,449,449,449,449,449,449,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,449,449,449,449,449,449,446,442,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,442,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,450,450,450,450,450,450,450,450,450,450,447,447,447,447,447,447,447,450,450,450,450,450,450,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,450,450,450,450,450,450,447,442,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,442,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,451,451,451,451,451,451,451,451,451,451,448,448,448,448,448,448,448,451,451,451,451,451,451,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,451,451,451,451,451,451,448,452,455,454,454,454,455,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,455,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,456,456,456,456,456,456,456,456,456,456,454,454,454,454,454,454,454,456,456,456,456,456,456,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,456,456,456,456,456,456,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,446,454,455,457,457,457,455,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,455,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458,458,458,458,458,458,458,458,457,457,457,457,457,457,457,458,458,458,458,458,458,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458,458,458,458,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,459,457,455,460,460,460,455,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,455,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,461,461,461,461,461,461,461,461,461,461,460,460,460,460,460,460,460,461,461,461,461,461,461,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,461,461,461,461,461,461,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,462,460,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,465,455,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,465,464,455,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,455,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,453,464,453,455,461,461,461,455,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,455,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,448,461,453,448,448,448,453,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,453,448,455,457,457,457,455,457,457,457,457,466,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,455,457,457,457,457,457,466,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,467,467,467,467,467,467,467,467,467,467,457,457,457,457,457,457,457,467,467,467,467,467,467,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,467,467,467,467,467,467,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,468,457,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,469,469,469,469,469,469,469,469,469,469,463,463,463,463,463,463,463,469,469,469,469,469,469,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,469,469,469,469,469,469,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,470,470,470,470,470,470,470,470,470,470,463,463,463,463,463,463,463,470,470,470,470,470,470,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,470,470,470,470,470,470,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,471,471,471,471,471,471,471,471,471,471,463,463,463,463,463,463,463,471,471,471,471,471,471,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,471,471,471,471,471,471,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,472,472,472,472,472,472,472,472,472,472,463,463,463,463,463,463,463,472,472,472,472,472,472,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,472,472,472,472,472,472,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,473,473,473,473,473,473,473,473,473,473,463,463,463,463,463,463,463,473,473,473,473,473,473,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,473,473,473,473,473,473,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,474,474,474,474,474,474,474,474,474,474,463,463,463,463,463,463,463,474,474,474,474,474,474,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,474,474,474,474,474,474,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,466,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,475,475,475,475,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,468,463,455,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,455,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,475,475,475,475,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,475,475,475,475,475,475,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,465,463,476,455,460,460,460,455,460,460,460,460,466,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,455,460,460,460,460,460,466,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,471,471,471,471,471,471,471,471,471,471,460,460,460,460,460,460,460,471,471,471,471,471,471,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,471,471,471,471,471,471,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,468,460,477,479,479,479,479,479,479,479,479,479,479,478,478,478,478,478,478,478,479,479,479,479,479,479,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,479,479,479,479,479,479,478,478,481,480,480,480,481,480,480,480,480,482,483,482,482,482,480,480,480,480,480,480,480,480,480,480,480,480,481,480,480,480,480,480,482,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,484,480,482,485,482,482,482,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,482,485,486,487,487,487,486,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,486,487,489,488,488,488,489,488,488,488,488,488,490,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,489,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,491,488,492,493,493,493,492,493,493,493,493,493,494,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,492,493,496,495,495,495,496,495,495,495,495,495,497,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,496,495,495,495,495,495,495,495,495,498,495,500,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,501,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,502,499,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,75,75,75,75,75,75,75,75,75,75,503,503,503,503,503,503,503,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,503,503,503,503,75,503,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,503,503,503,503,503,75,78,78,78,78,78,78,78,78,78,78,503,505,504,504,504,505,504,504,504,504,504,506,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,505,504,508,507,507,507,508,507,507,507,507,509,510,509,509,509,507,507,507,507,507,507,507,507,507,507,507,507,508,507,507,507,507,507,509,507,507,511,507,509,512,509,509,509,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,509,512,514,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,515,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,516,513,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,81,81,81,81,81,81,81,81,81,81,517,517,517,517,517,517,517,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,517,517,517,517,81,517,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,517,517,517,517,517,81,84,84,84,84,84,84,84,84,84,84,517,519,518,518,518,519,518,518,518,518,520,521,520,520,520,518,518,518,518,518,518,518,518,518,518,518,518,519,518,518,518,518,518,520,518,520,522,520,520,520,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,520,522,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,523,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,526,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,527,88,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,86,86,86,86,86,86,86,86,86,86,528,528,528,528,528,528,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,528,528,528,528,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,528,528,528,528,528,86,90,90,90,90,90,90,90,90,90,90,528,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,91,91,91,91,91,91,91,91,91,91,529,529,529,529,529,529,529,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,529,529,529,529,91,529,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,529,529,529,529,529,91,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,93,93,93,93,93,93,93,93,93,93,530,530,530,530,530,530,530,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,530,530,530,530,93,530,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,530,530,530,530,530,93,532,533,533,533,532,533,533,533,533,534,535,534,534,534,533,533,533,533,533,533,533,533,533,533,533,533,532,533,533,533,533,533,534,536,533,537,538,539,540,533,533,533,541,542,533,542,533,543,533,533,533,533,533,533,533,533,533,533,544,533,545,546,547,533,533,548,549,548,548,550,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,551,552,533,543,553,543,554,555,556,557,558,559,531,531,560,531,531,531,561,562,563,531,531,564,565,566,567,531,568,531,569,531,533,570,533,542,533,531,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,572,571,571,571,571,571,571,571,571,571,571,571,571,571,571,531,531,531,531,531,531,531,531,531,531,571,571,571,572,571,572,571,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,571,571,571,571,531,571,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,571,571,571,571,571,531,534,573,534,534,534,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,534,573,574,543,575,575,543,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,543,575,576,577,578,579,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,95,95,580,95,580,95,95,580,580,95,95,95,582,95,95,583,583,583,583,583,583,583,583,583,583,95,95,95,95,95,95,95,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,580,95,580,580,581,95,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,580,580,580,95,580,581,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,581,581,581,581,581,581,581,581,581,581,584,584,584,584,584,584,584,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,584,584,584,584,581,584,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,584,584,584,584,584,581,583,583,583,583,583,583,583,583,583,583,584,585,575,543,575,543,575,543,575,587,586,543,588,575,543,575,589,543,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,543,580,543,575,543,543,575,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,572,571,571,571,571,571,571,571,571,571,571,571,571,571,571,548,548,548,548,548,548,548,548,548,548,571,571,571,572,571,572,571,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,571,571,571,571,548,571,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,571,571,571,571,571,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,591,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,592,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,593,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,548,548,548,548,548,594,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,548,548,548,548,548,548,548,548,548,548,595,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,572,590,590,590,590,590,590,590,590,590,590,590,590,590,590,548,548,548,548,548,548,548,548,548,548,590,590,590,572,590,572,590,548,548,548,594,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,548,590,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,590,590,590,590,590,548,589,580,535,580,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,597,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,598,599,531,531,531,531,531,600,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,601,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,602,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,603,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,604,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,605,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,606,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,607,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,608,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,609,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,610,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,611,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,607,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,612,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,611,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,613,531,614,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,615,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,616,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,617,531,531,531,531,531,531,531,531,531,531,531,531,618,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,619,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,620,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,621,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,622,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,623,531,531,531,531,531,531,531,531,531,531,624,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,626,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,616,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,627,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,628,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,572,629,629,629,629,629,629,629,629,629,629,629,629,629,629,531,531,531,531,531,531,531,531,531,531,629,629,629,572,629,572,629,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,629,629,629,629,531,629,531,531,531,531,531,531,531,531,630,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,629,629,629,629,629,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,631,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,632,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,633,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,634,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,635,531,636,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,637,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,609,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,639,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,640,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,641,531,531,531,531,531,531,531,531,531,531,531,531,531,563,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,623,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,609,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,642,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,643,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,644,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,645,531,531,531,646,531,531,531,531,531,647,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,647,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,648,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,649,531,531,531,531,531,531,531,531,531,531,531,531,531,531,650,651,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,652,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,625,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,653,531,531,654,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,609,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,620,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,655,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,656,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,657,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,563,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,658,531,531,531,531,531,531,531,531,531,652,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,620,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,531,531,659,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,660,531,531,531,531,531,531,531,661,531,531,531,531,531,531,531,662,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,638,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,626,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,646,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,663,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,620,531,531,531,644,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,664,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,665,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,572,596,596,596,596,596,596,596,596,596,596,596,596,596,596,531,531,531,531,531,531,531,531,531,531,596,596,596,572,596,572,596,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,531,596,531,531,531,531,531,531,531,531,531,531,531,614,531,531,531,531,531,531,531,531,531,531,531,531,531,531,596,596,596,596,596,531,543,575,667,668,668,668,667,668,668,668,668,669,668,669,669,669,668,668,668,668,668,668,668,668,668,668,668,668,667,668,668,668,668,668,669,668,668,670,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,668,671,668,668,666,668,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,668,668,668,668,668,666,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,100,672,672,672,672,672,672,672,672,672,672,672,672,672,672,99,99,99,99,99,99,99,99,99,99,101,672,672,672,672,100,672,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,672,672,672,672,99,672,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,672,672,672,672,672,99,669,673,669,669,669,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,669,673,674,675,676,677,678,672,679,681,682,682,682,681,682,682,682,682,683,684,683,683,683,682,682,682,682,682,682,682,682,682,682,682,682,681,682,682,682,682,682,683,685,682,686,682,687,688,682,682,682,689,690,682,690,682,687,682,682,682,682,682,682,682,682,682,682,682,682,691,692,693,682,682,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,695,696,682,687,680,687,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,682,697,682,690,682,680,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,699,698,698,698,698,698,698,698,698,698,698,698,698,698,698,680,680,680,680,680,680,680,680,680,680,698,698,698,698,698,699,698,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,698,698,698,698,680,698,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,698,698,698,698,698,680,701,700,702,683,703,683,683,683,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,683,703,704,687,705,705,687,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,687,705,706,707,708,709,687,705,687,705,687,705,687,710,705,687,705,712,687,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,687,711,687,705,687,687,705,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,699,713,713,713,713,713,713,713,713,713,713,713,713,713,713,694,694,694,694,694,694,694,694,694,694,713,713,713,713,713,699,713,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,713,713,713,713,694,713,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,713,713,713,713,713,694,712,711,684,711,687,705,715,714,714,714,715,714,714,714,714,716,717,716,716,716,714,714,714,714,714,714,714,714,714,714,714,714,715,714,714,714,714,714,716,714,714,718,714,109,719,714,720,714,721,109,140,722,142,109,714,714,714,714,714,714,714,714,714,714,723,714,724,140,725,726,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,140,727,140,109,714,714,714,714,714,714,714,714,714,714,728,714,714,714,714,714,714,714,714,729,714,714,730,714,731,714,714,714,153,154,714,109,714,732,732,732,732,732,732,732,732,732,716,732,716,716,716,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,716,732,732,732,732,135,136,732,137,732,138,139,140,141,142,135,732,732,732,732,732,732,732,732,732,732,143,732,144,140,145,146,732,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,147,148,140,109,104,732,104,104,104,104,104,104,104,104,149,104,104,104,104,104,104,104,104,150,104,104,151,104,152,104,104,104,153,154,732,109,732,104,733,734,734,734,733,734,734,734,734,140,735,140,140,140,734,734,734,734,734,734,734,734,734,734,734,734,733,734,734,734,734,734,140,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,140,734,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,109,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,736,140,735,140,140,140,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,140,737,737,737,737,737,737,737,737,737,738,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,140,737,140,735,140,140,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,140,140,103,739,733,140,733,741,740,743,744,743,743,743,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,743,742,745,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,105,733,733,733,733,733,733,733,733,733,733,733,733,733,733,104,104,104,104,104,104,104,104,104,104,106,733,733,733,733,105,733,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,733,733,733,733,104,733,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,733,733,733,733,733,104,746,140,735,140,140,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,109,733,747,748,749,750,751,752,140,735,140,140,140,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,733,733,733,733,733,733,733,733,109,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,140,733,140,740,109,753,109,753,754,755,754,754,754,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,754,742,756,753,757,757,757,757,757,757,757,757,757,112,757,112,112,112,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,112,757,757,757,757,113,114,757,115,757,116,117,118,119,120,113,757,757,757,757,757,757,757,757,757,757,121,757,122,118,123,124,757,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,125,126,118,127,111,757,111,111,111,111,111,111,111,111,128,111,111,111,111,111,111,111,111,129,111,111,130,111,131,111,111,111,132,133,757,127,757,111,140,753,758,753,759,753,760,753,761,179,179,179,761,179,179,179,179,762,179,762,762,762,179,179,179,179,179,179,179,179,179,179,179,179,761,179,179,179,179,179,762,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,179,763,179,179,181,179,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,179,179,179,179,179,181,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,764,178,178,178,178,178,178,178,178,178,178,178,178,178,178,181,181,181,181,181,181,181,181,181,181,179,178,178,178,178,764,178,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,178,178,178,178,181,178,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,178,178,178,178,178,181,765,765,765,765,765,765,765,765,765,182,765,182,182,182,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,182,765,765,765,765,765,765,765,183,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,184,765,765,181,765,181,181,181,185,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,765,181,766,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,764,765,765,765,765,765,765,765,765,765,765,765,765,765,765,181,181,181,181,181,181,181,181,181,181,179,765,765,765,765,764,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,181,765,181,181,181,181,181,181,181,181,181,181,181,181,181,181,767,181,181,181,181,181,181,181,181,181,181,181,765,765,765,765,765,181,186,765,769,768,768,768,769,768,768,768,768,770,768,770,770,770,768,768,768,768,768,768,768,768,768,768,768,768,769,768,768,768,768,768,770,768,768,771,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,772,768,768,768,768,768,768,768,773,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,774,768,770,775,770,770,770,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,770,775,776,777,778,779,781,780,782,783,780,784,786,787,787,787,786,787,787,787,787,788,789,788,788,788,787,787,787,787,787,787,787,787,787,787,787,787,786,787,787,787,787,787,788,787,787,790,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,787,791,787,787,785,787,785,785,785,785,785,785,785,785,792,785,785,785,785,785,785,785,785,793,785,785,794,785,795,785,785,785,787,787,787,787,787,785,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,785,785,785,785,785,785,785,785,785,785,796,796,796,796,796,796,796,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,796,796,796,796,785,796,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,796,796,796,796,796,785,788,797,788,788,788,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,788,797,798,799,800,801,802,804,803,805,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,808,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,809,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,810,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,811,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,812,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,813,785,785,785,785,785,785,785,814,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,815,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,816,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,807,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,817,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,807,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,818,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,819,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,806,806,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,785,806,785,785,785,785,785,785,785,785,785,785,785,811,785,785,785,785,785,785,785,785,785,785,785,785,785,785,806,806,806,806,806,785,821,203,203,203,821,203,203,203,203,822,823,822,822,822,203,203,203,203,203,203,203,203,203,203,203,203,821,203,203,203,203,203,822,824,203,825,203,826,827,203,828,203,829,830,203,831,832,833,203,203,203,203,203,203,203,203,203,203,834,203,835,836,837,838,203,839,840,839,839,841,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,842,843,203,844,845,203,846,847,848,849,850,851,820,820,852,820,820,820,853,854,855,820,820,856,857,858,859,820,860,820,861,820,862,863,203,844,203,820,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,820,820,820,820,820,820,820,820,820,820,249,192,192,250,192,248,192,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,192,192,192,192,820,192,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,192,192,192,192,192,820,865,864,864,866,864,867,869,870,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,871,868,873,872,874,875,876,822,877,822,822,822,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,877,822,877,879,878,881,882,881,881,881,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,880,881,880,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,203,883,884,885,886,887,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,889,889,889,889,889,889,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,890,889,891,201,201,201,891,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,891,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,201,201,201,201,201,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,201,893,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,203,892,894,896,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,895,203,895,203,192,897,897,897,897,897,897,897,897,897,897,892,892,892,203,892,897,897,897,897,897,897,897,897,897,897,892,892,892,203,203,892,898,883,203,883,883,899,899,899,883,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,899,883,899,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,901,902,883,903,206,904,902,883,883,905,906,883,906,883,206,883,883,883,883,883,883,883,883,883,883,907,883,908,909,910,883,911,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,912,883,883,206,900,206,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,883,913,883,906,883,900,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,915,914,914,914,914,914,914,914,914,914,914,914,914,914,914,900,900,900,900,900,900,900,900,900,900,914,914,914,916,914,915,914,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,914,914,914,914,900,914,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,914,914,914,914,914,900,918,917,919,921,922,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,920,923,920,925,926,924,927,928,929,930,206,914,914,206,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,206,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,205,205,205,205,205,205,205,205,205,205,914,914,914,914,914,914,914,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,914,914,914,914,205,914,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,914,914,914,914,914,205,208,208,208,208,208,208,208,208,208,208,914,206,914,206,914,206,914,206,931,914,206,914,206,914,206,206,914,206,914,932,933,883,934,203,883,844,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,203,883,203,893,883,937,936,936,936,937,936,936,936,936,938,939,938,938,938,936,936,936,936,936,936,936,936,936,936,936,936,937,936,936,936,936,936,938,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,936,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,936,941,936,936,940,936,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,936,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,942,942,942,942,943,942,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,942,942,942,942,942,943,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,945,945,945,945,945,945,945,945,945,945,944,944,944,944,944,944,944,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,944,944,944,944,945,944,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,944,944,944,944,944,945,948,947,947,947,948,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,948,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,949,949,949,949,949,949,949,949,947,947,947,947,947,947,947,947,947,947,947,950,947,947,947,947,947,947,947,947,947,951,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,952,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,947,953,947,947,954,947,955,956,958,958,958,958,958,958,958,958,957,959,959,959,959,959,959,959,959,957,957,960,960,242,242,242,960,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,960,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,961,242,962,963,964,964,242,242,242,964,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,964,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,243,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,965,242,241,964,966,967,968,968,229,229,229,968,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,968,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,969,229,964,223,223,223,964,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,964,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,970,223,960,229,229,229,960,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,960,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,960,971,971,971,960,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,960,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,972,971,973,974,974,971,971,971,974,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,974,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,975,971,974,223,223,223,974,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,974,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,970,223,976,974,974,229,229,229,974,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,974,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,231,229,977,978,978,978,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,977,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,979,979,979,979,979,979,979,979,979,979,978,978,978,978,978,978,978,979,979,979,979,979,979,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,979,979,979,979,979,979,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,978,980,978,977,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,977,981,977,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,977,982,977,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,977,983,977,977,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,977,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,984,984,984,984,984,984,984,984,984,984,981,981,981,981,981,981,981,984,984,984,984,984,984,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,981,984,984,984,984,984,984,981,977,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,977,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,985,985,985,985,985,985,985,985,985,985,982,982,982,982,982,982,982,985,985,985,985,985,985,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,985,985,985,985,985,985,982,977,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,977,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,986,986,986,986,986,986,986,986,986,986,983,983,983,983,983,983,983,986,986,986,986,986,986,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,986,986,986,986,986,986,983,987,990,989,989,989,990,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,990,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,991,991,991,991,991,991,991,991,991,991,989,989,989,989,989,989,989,991,991,991,991,991,991,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,991,991,991,991,991,991,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,981,989,990,992,992,992,990,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,990,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,993,993,993,993,993,993,993,993,993,993,992,992,992,992,992,992,992,993,993,993,993,993,993,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,993,993,993,993,993,993,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,994,992,990,995,995,995,990,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,990,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,996,996,996,996,996,996,996,996,996,996,995,995,995,995,995,995,995,996,996,996,996,996,996,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,996,996,996,996,996,996,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,997,995,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,999,999,999,999,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,999,999,999,999,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,999,999,999,999,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,1e3,990,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,1e3,999,990,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,990,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,988,999,988,990,996,996,996,990,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,990,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,983,996,988,983,983,983,988,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,988,983,990,992,992,992,990,992,992,992,992,1001,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,990,992,992,992,992,992,1001,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1002,1002,1002,1002,1002,1002,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1003,992,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1004,1004,1004,1004,1004,1004,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1005,1005,1005,1005,1005,1005,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1006,1006,1006,1006,1006,1006,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1007,1007,1007,1007,1007,1007,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1008,1008,1008,1008,1008,1008,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1009,1009,1009,1009,1009,1009,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1e3,998,990,995,995,995,990,995,995,995,995,1001,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,990,995,995,995,995,995,1001,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1011,1011,1011,1011,1011,1011,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,1003,995,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1012,1012,1012,1012,1012,1012,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1013,1013,1013,1013,1013,1013,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1014,1014,1014,1014,1014,1014,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,990,998,998,998,990,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,990,998,998,998,998,998,1001,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1010,1010,1010,1010,1010,1010,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,1003,998,1015,1016,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1017,1017,1017,1017,1017,1017,1017,1018,1018,1018,1018,1018,1018,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1017,1018,1018,1018,1018,1018,1018,1017,1017,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,247,247,247,247,247,247,247,247,247,247,249,192,192,250,192,248,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,247,192,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,192,192,192,192,192,247,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,248,883,883,883,883,883,883,883,883,883,883,883,883,883,883,247,247,247,247,247,247,247,247,247,247,249,883,883,250,883,248,883,247,247,247,247,1019,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,247,883,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,883,247,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,248,883,883,883,883,883,883,883,883,883,883,883,883,883,883,247,247,247,247,247,247,247,247,247,247,249,883,883,250,883,248,883,247,247,247,247,247,247,247,247,247,247,247,247,247,1020,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,247,883,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,883,883,883,883,883,247,1021,1022,883,878,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1024,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,1025,1026,820,820,820,820,820,1027,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1028,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,1029,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1030,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,1031,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1032,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1033,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,1034,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1035,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1036,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1037,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,1038,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,1034,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,1039,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1038,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1040,820,1041,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1042,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1043,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1044,820,820,820,820,820,820,820,820,820,820,820,820,1045,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,1046,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1047,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1048,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1049,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1050,820,820,820,820,820,820,820,820,820,820,1051,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1053,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1043,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1055,820,1056,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1057,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1036,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1058,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1059,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,1060,820,820,820,820,820,820,820,820,820,820,820,820,820,855,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1050,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,1061,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1062,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1063,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1064,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1065,820,820,820,1066,820,820,820,820,820,1067,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1067,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1068,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1069,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1070,1071,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,1072,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1073,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1074,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1077,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1075,1075,1079,1075,1077,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1075,1075,1075,1075,1076,1075,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1075,1075,1075,1075,1075,1076,869,1080,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,868,871,868,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1081,820,820,1082,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1036,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1047,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1083,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1084,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1085,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,855,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,1086,820,820,820,820,820,820,820,820,820,1087,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1047,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1052,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,1088,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,1089,820,820,820,820,820,820,820,1090,820,820,820,820,820,820,820,1091,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1054,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1092,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1093,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1061,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1094,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1061,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,1095,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1047,820,820,820,1096,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1097,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1061,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,1098,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,1099,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,248,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,820,820,820,820,820,820,820,820,820,820,249,1023,1023,250,1023,248,1023,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,820,1023,820,820,820,820,820,820,820,820,820,820,820,1041,820,820,820,820,820,820,820,820,820,820,820,820,820,820,1023,1023,1023,1023,1023,820,1100,203,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,893,883,1102,1101,1101,1101,1102,1101,1101,1101,1101,1103,1104,1103,1103,1103,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1102,1101,1101,1101,1101,1101,1103,1101,1101,1105,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1106,1101,1103,1107,1103,1103,1103,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1103,1107,1108,1109,1110,1111,1112,1114,1113,1115,1117,1118,1118,1118,1117,1118,1118,1118,1118,1119,1120,1119,1119,1119,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1117,1118,1118,1118,1118,1118,1119,1118,1121,1122,1118,1118,1118,1121,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1118,1123,1118,1118,1116,1118,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1118,1118,1118,1118,1118,1116,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,256,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,255,255,255,255,255,255,255,255,255,255,257,1124,1124,1124,1124,256,1124,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,1124,1124,1124,1124,255,1124,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,1124,1124,1124,1124,1124,255,1119,1125,1119,1119,1119,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1119,1125,1126,1127,1128,1129,1130,1131,1124,1132,1134,1135,1135,1135,1134,1135,1135,1135,1135,1136,1137,1136,1136,1136,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1135,1134,1135,1135,1135,1135,1135,1136,1138,1139,1140,1141,1142,1143,1139,1144,1145,1146,1142,1147,1148,1149,1142,1150,1151,1151,1151,1151,1151,1151,1151,1151,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1159,1159,1161,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1162,1163,1164,1142,1165,1139,1166,1167,1168,1169,1170,1171,1133,1133,1172,1133,1133,1133,1173,1174,1175,1133,1133,1176,1177,1178,1179,1133,1180,1133,1181,1133,1182,1183,1184,1142,1135,1133,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1185,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,265,1185,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,1133,265,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,265,265,265,265,265,1133,1187,1186,1188,1136,1189,1136,1136,1136,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1189,1136,1189,1190,1192,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1192,1191,1193,1194,1195,1196,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,260,260,1197,260,1197,260,260,1197,1197,260,260,260,1198,260,260,1199,1199,1199,1199,1199,1199,1199,1199,1199,1199,260,260,260,260,260,260,260,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,260,1197,1197,268,260,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,260,1197,268,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,1200,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,1200,1200,1200,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,268,1200,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1200,1200,1200,1200,1200,268,1199,1199,1199,1199,1199,1199,1199,1199,1199,1199,1200,1201,1191,1142,1191,1191,1191,1191,1191,1191,1191,1202,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1201,1191,1203,1204,1142,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1201,1191,1201,1205,1191,1207,1206,264,264,264,264,264,264,264,264,264,264,1206,1147,1208,264,264,264,264,264,264,264,264,264,264,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1210,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1211,1209,1209,1209,1209,1209,1210,1209,263,263,263,263,263,263,263,263,263,263,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,262,1209,1213,1212,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1212,1212,1212,1212,1212,1212,1212,1212,1215,1212,1216,1217,1212,1212,1212,1212,1212,1212,1212,1212,1212,1218,1212,1212,1212,1212,1212,1212,1212,1212,1219,1212,1212,1212,1212,1212,1212,1220,1212,1212,1215,1212,1216,1217,1212,1212,1212,1221,1212,1212,1212,1212,1212,1218,1212,1212,1222,1212,1212,1212,1212,1212,1219,1212,266,266,266,266,266,266,266,266,266,266,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1224,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1223,1223,1223,1223,1223,1224,1223,1223,1223,1226,1223,1223,1223,1223,1223,1223,1223,1223,1227,1223,1228,265,1228,265,265,267,267,267,267,267,267,267,267,267,267,265,267,267,267,267,267,267,267,267,267,267,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1228,1229,1229,1229,1229,1229,1229,1229,1229,1229,1230,1229,1231,1233,1232,1234,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1220,1212,1212,1212,1212,1212,1212,1212,1212,1212,1221,1212,1212,1212,1212,1212,1212,1212,1212,1222,1212,1235,1235,1235,1235,1235,1235,1235,1235,1235,1235,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1236,1212,1212,1212,1212,1212,1212,1212,1212,1212,1221,1212,1212,1212,1212,1212,1212,1212,1212,1222,1212,1238,1238,1238,1238,1238,1238,1238,1238,1238,1238,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1239,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1238,1238,1238,1238,1238,1238,1238,1238,1238,1238,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1243,1245,1244,1246,1248,1248,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1249,1247,1247,1247,1247,1247,1247,1247,1247,1247,1250,1247,1247,1247,1247,1247,1247,1247,1247,1251,1247,1252,1252,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1253,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1252,1252,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1255,1255,1255,1255,1255,1255,1255,1255,1255,1255,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1256,1254,1254,1254,1254,1254,1254,1254,1254,1254,1257,1254,1254,1254,1254,1254,1254,1254,1254,1258,1254,1260,1260,1260,1260,1260,1260,1260,1260,1260,1260,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1261,1259,1259,1259,1259,1259,1259,1259,1259,1259,1262,1259,1259,1259,1259,1259,1259,1259,1259,1263,1259,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1264,1264,1264,1264,1264,1264,1264,1265,1265,1265,1265,1265,1265,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1264,1266,1264,1265,1265,1265,1265,1265,1265,1264,1264,1267,1264,1264,1264,1264,1264,1264,1264,1264,1268,1264,1269,1269,1269,1269,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1270,1237,1269,1269,1269,1269,1269,1269,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1269,1269,1269,1269,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1269,1269,1269,1269,1269,1269,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1269,1269,1269,1269,1269,1269,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1272,1271,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1274,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1275,1271,1271,1271,1271,1271,1274,1271,1271,1271,1276,1271,1271,1271,1271,1271,1271,1271,1271,1277,1271,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1271,1279,1271,1271,1271,1271,1271,1271,1271,1271,1271,1276,1271,1271,1271,1271,1271,1271,1271,1271,1277,1271,1280,1237,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1282,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1283,1237,1237,1237,1237,1237,1282,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1242,1237,1237,1237,1237,1237,1237,1237,1237,1237,1240,1237,1237,1237,1237,1237,1237,1237,1237,1241,1237,1202,1208,1142,1284,1191,1192,1191,1285,1192,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1192,1208,1192,1191,1192,1142,1191,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,1197,1197,1286,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,268,1197,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1197,1197,1197,1197,1197,268,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1185,265,265,265,265,265,265,265,265,265,265,265,265,265,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,265,265,265,265,1185,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,265,265,265,265,1159,265,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,265,265,265,265,265,1159,1288,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1290,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1291,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1292,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1293,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1294,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1185,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1287,1289,1289,1289,1289,1185,1289,1159,1159,1159,1293,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1159,1289,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1159,1289,1289,1289,1289,1289,1159,1295,1297,1296,1298,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1300,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1301,1302,1133,1133,1133,1133,1133,1303,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1304,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1305,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1306,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1307,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1308,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1309,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1310,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1311,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1312,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1313,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1314,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1315,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1316,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1317,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1318,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1314,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1319,1133,1320,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1321,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1322,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1323,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1325,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1326,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1327,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1328,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1329,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1330,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1332,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1333,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1335,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1336,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1337,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1338,1338,1338,1338,1338,1338,1338,1338,1338,270,271,270,270,270,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,270,1185,1338,272,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,1338,273,1338,1338,1185,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,274,1338,1338,1133,1338,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1338,1338,1338,1338,1338,1133,287,288,287,287,287,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,286,286,289,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,292,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,291,286,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1340,1133,1133,1133,1133,1133,1133,1133,1133,1133,1341,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1342,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1185,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1343,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1343,1185,1343,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1133,1343,1133,1133,1133,1133,1133,1133,1133,1133,1344,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1343,1343,1343,1343,1343,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1345,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1346,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1347,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1348,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1349,1133,1350,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1351,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1324,1133,1133,1133,1352,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1353,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1354,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1355,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1175,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1356,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1357,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1324,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1359,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1360,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1361,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1334,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1362,1133,1133,1133,1363,1133,1133,1133,1133,1133,1364,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1365,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1367,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1368,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1369,1370,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1371,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1372,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1373,1133,1133,1374,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1317,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1375,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1331,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1376,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1377,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1378,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1317,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1379,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1380,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1381,1133,1133,1133,1133,1133,1133,1133,1133,1133,1382,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1328,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1357,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1383,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1384,1133,1133,1133,1133,1133,1133,1133,1385,1133,1133,1133,1133,1133,1133,1133,1386,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1387,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1323,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1388,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1389,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1390,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1391,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1328,1133,1133,1133,1392,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1393,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1358,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1394,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1395,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1396,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1185,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1185,1299,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1133,1299,1133,1133,1133,1366,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1133,1299,1299,1299,1299,1299,1133,1397,1201,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1142,1191,1398,1400,1399,1400,1400,1400,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1400,1399,1399,1399,1399,1399,1401,1399,1399,1399,1399,1399,1399,1399,298,1399,296,1402,296,296,296,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,296,1402,1402,1402,1402,1402,297,1402,1402,1402,1402,1402,1402,1402,298,1402,299,1402,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1405,1403,1404,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1407,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1408,1403,1404,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1409,1403,1411,1409,0]];$send(self,"_lex_indicies=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_targs");return self.$private("_lex_trans_targs","_lex_trans_targs=")})(Opal.get_singleton_class(self),$nesting);$writer=[[165,2,3,4,171,6,7,8,9,10,165,165,174,177,174,12,178,14,174,185,186,189,190,196,191,192,193,19,194,195,198,200,201,202,203,204,25,18,187,188,27,236,237,239,241,239,30,242,32,239,249,250,253,254,260,255,256,257,37,258,259,262,264,265,266,267,268,43,36,251,252,45,300,301,308,310,308,48,311,50,313,316,313,52,317,54,323,322,0,56,324,325,58,326,327,327,327,327,440,61,62,63,440,468,64,65,468,468,472,472,69,64,70,470,471,473,474,472,468,475,476,478,66,67,479,480,68,472,71,72,77,84,482,483,70,470,471,473,474,472,468,475,476,478,66,67,479,480,68,71,72,77,84,482,483,481,73,74,75,76,78,79,82,80,81,83,85,86,468,88,89,90,92,95,93,94,96,98,499,499,499,500,100,502,101,503,102,500,100,502,101,503,537,537,537,105,106,107,108,548,537,537,553,537,537,574,537,112,575,581,115,118,120,122,123,124,118,119,585,119,585,121,537,599,600,603,604,610,605,606,607,129,608,609,612,614,615,616,617,618,135,128,601,602,137,654,655,139,539,103,541,141,142,657,758,144,145,146,758,766,766,766,149,787,786,766,789,791,776,823,155,156,157,161,162,155,156,157,161,162,158,158,156,157,159,160,158,158,156,157,159,160,870,156,766,939,163,164,939,939,165,165,166,167,168,170,172,173,165,165,165,169,165,169,165,1,165,165,165,5,174,174,175,174,176,179,174,174,11,13,174,174,174,180,181,182,15,21,26,205,28,174,174,174,183,184,174,16,174,174,174,17,174,174,174,20,197,199,22,174,174,23,24,174,206,210,214,207,208,209,211,212,213,174,174,215,219,225,216,223,224,217,221,222,218,220,174,226,235,234,227,228,229,230,231,232,233,174,174,174,238,239,239,239,240,243,239,29,31,239,239,239,244,245,246,33,39,44,269,46,239,239,239,247,248,239,34,239,239,239,35,239,239,239,38,261,263,40,239,239,41,42,239,270,274,278,271,272,273,275,276,277,239,239,279,283,289,280,287,288,281,285,286,282,284,239,290,299,298,291,292,293,294,295,296,297,239,239,239,302,303,303,304,303,305,303,303,303,306,306,306,307,306,306,306,308,308,308,309,308,47,49,308,308,312,312,312,313,313,314,313,315,313,313,51,53,313,313,318,318,319,318,318,320,321,320,55,57,322,322,322,328,327,327,329,330,331,332,334,337,338,339,340,327,341,342,344,346,347,348,352,354,355,356,372,377,384,389,396,403,406,407,411,405,415,423,427,429,434,436,439,327,327,327,327,327,327,333,327,333,327,335,59,336,327,60,327,327,343,345,327,349,350,351,347,353,327,357,358,367,370,359,360,361,362,363,364,365,366,328,368,369,371,373,376,374,375,378,381,379,380,382,383,385,387,386,388,390,391,327,392,393,394,395,327,397,400,398,399,401,402,404,408,409,410,412,414,413,416,417,418,420,419,421,422,424,425,426,428,430,431,432,433,435,437,438,441,440,440,442,443,445,440,440,440,444,440,444,446,440,448,447,447,451,452,453,454,447,456,457,458,459,461,463,464,465,466,467,447,449,447,450,447,447,447,447,447,455,447,455,460,447,462,447,468,468,469,484,485,471,487,488,475,489,490,491,492,493,495,496,497,498,468,468,468,468,468,468,472,477,468,468,468,468,468,468,468,468,468,486,468,486,468,468,468,468,494,468,87,91,97,499,501,504,99,499,499,500,505,505,506,507,509,511,512,505,505,508,505,508,505,510,505,505,505,514,513,513,515,516,517,519,521,522,527,534,513,513,513,513,518,513,518,513,520,513,513,514,523,524,525,526,528,529,532,530,531,533,535,536,538,537,546,547,549,550,552,554,555,556,558,559,560,562,563,584,587,588,589,657,658,659,660,661,557,663,679,684,691,696,698,704,707,708,712,706,716,727,731,734,742,746,749,750,537,103,540,537,537,542,544,545,537,543,537,537,537,537,537,104,537,537,537,537,537,551,537,551,537,537,109,537,537,110,537,537,557,537,561,537,564,573,537,111,576,577,578,537,579,113,582,114,116,583,537,565,567,537,566,537,537,568,571,572,537,569,570,537,537,537,537,580,117,586,537,537,590,537,537,537,591,593,537,592,537,592,537,594,595,596,125,131,136,619,138,537,537,537,597,598,537,126,537,537,537,127,537,537,537,130,611,613,132,537,537,133,134,537,620,624,628,621,622,623,625,626,627,537,537,629,633,639,630,637,638,631,635,636,632,634,537,640,648,653,641,642,643,644,645,646,647,649,650,651,652,537,537,537,656,140,143,537,662,537,664,665,674,677,666,667,668,669,670,671,672,673,538,675,676,678,680,683,681,682,685,688,686,687,689,690,692,694,693,695,697,699,701,700,702,703,705,538,709,710,711,713,715,714,717,718,719,724,720,721,722,537,538,539,103,723,544,725,726,728,729,730,732,733,735,736,737,740,738,739,741,743,744,745,747,748,537,751,751,752,753,754,756,751,751,751,755,751,755,751,757,751,759,758,758,760,761,758,762,764,758,758,758,758,763,758,763,765,758,767,766,766,770,771,772,766,773,775,778,779,780,781,782,766,783,784,788,811,815,766,816,818,820,766,821,822,824,828,830,831,766,833,851,856,863,871,878,885,890,891,895,889,900,910,916,919,928,932,936,937,938,768,766,769,766,766,766,766,766,766,774,766,774,766,147,777,766,766,766,766,766,766,766,785,766,766,148,150,766,151,795,803,806,790,807,808,796,800,801,766,790,151,792,793,152,766,792,766,766,794,766,797,799,766,797,798,800,801,799,766,766,802,766,766,804,799,800,801,804,805,766,797,799,800,801,766,797,799,800,801,766,809,799,800,801,809,810,766,151,811,790,812,800,801,813,799,151,813,790,814,817,819,153,154,766,766,825,826,827,822,829,766,766,832,766,766,834,835,844,849,836,837,838,839,840,841,842,843,767,845,846,847,848,767,850,852,855,853,854,767,767,857,860,858,859,861,862,767,864,866,865,867,868,869,766,766,872,767,873,766,874,875,876,877,768,879,882,880,881,883,884,886,887,888,767,892,893,894,896,898,899,897,767,901,902,903,906,904,905,907,908,909,911,913,912,914,915,917,918,920,921,923,926,922,924,925,927,929,930,931,933,934,935,766,766,939,940,941,939,943,942,944,942,945,946,947,942,942]];$send(self,"_lex_trans_targs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_trans_actions");return self.$private("_lex_trans_actions","_lex_trans_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,6,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,9,0,10,0,0,0,11,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,12,0,13,0,0,0,14,0,15,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,0,0,24,25,26,27,28,29,29,30,31,29,32,31,33,31,29,29,30,29,34,29,29,35,29,29,29,29,29,29,0,36,37,0,38,37,39,37,0,0,36,0,40,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,42,43,44,45,0,0,0,45,28,46,29,29,29,46,47,48,49,0,0,0,0,0,50,51,0,52,53,0,54,0,0,0,0,0,0,0,0,0,55,55,56,0,28,0,57,0,7,0,8,0,7,0,0,0,0,8,7,0,8,0,7,7,0,0,0,0,0,0,0,0,58,0,0,0,0,58,59,0,0,0,60,61,62,63,0,7,7,64,65,65,0,0,0,28,0,0,0,29,66,29,29,29,67,68,69,68,68,68,0,70,71,70,70,70,72,73,74,75,0,76,77,78,81,82,0,28,0,7,0,7,83,84,85,67,86,0,87,0,88,89,90,0,91,92,0,93,7,7,94,95,0,0,96,97,98,99,99,99,99,99,99,99,99,100,101,102,0,0,103,0,104,105,106,0,107,108,109,0,7,0,0,110,111,0,28,112,0,0,0,0,0,0,0,0,0,113,114,0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,116,117,118,0,119,120,121,7,7,122,0,0,123,124,125,99,99,99,99,99,99,99,99,126,127,128,0,0,129,0,130,131,132,0,133,134,135,0,7,0,0,136,137,0,28,138,0,0,0,0,0,0,0,0,0,139,140,0,0,0,0,0,0,0,0,0,0,0,141,0,0,0,0,0,0,0,0,0,0,142,143,144,0,145,146,0,147,0,148,149,150,151,152,153,0,154,155,156,157,158,159,7,160,0,0,161,162,163,164,165,166,167,0,168,7,169,170,0,0,171,172,173,174,0,175,176,177,0,178,0,0,179,180,181,182,183,184,0,28,0,0,7,7,0,0,0,185,0,0,0,0,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,188,189,190,191,192,67,193,0,194,0,0,0,195,0,196,197,0,0,198,0,0,0,199,0,200,0,0,0,0,0,0,0,0,0,0,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,204,0,0,0,205,206,207,67,208,0,28,209,0,210,211,0,28,0,0,212,0,0,0,0,0,0,0,0,0,0,213,0,214,0,215,216,217,218,219,67,220,0,0,221,0,222,223,224,225,28,0,27,0,0,27,0,0,0,0,0,0,7,7,7,226,227,228,229,230,231,232,0,233,234,235,236,237,238,239,240,241,67,242,0,243,244,245,246,247,248,0,0,0,249,7,7,0,250,251,252,253,254,0,0,0,0,0,255,256,67,257,0,258,28,259,260,261,262,263,264,0,28,0,0,0,0,0,0,265,266,267,268,67,269,0,270,28,271,272,273,0,0,0,0,0,0,0,0,0,0,0,0,274,275,0,8,0,0,7,276,0,0,0,0,0,0,7,7,0,277,0,277,277,277,0,0,277,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,0,277,278,279,0,280,281,0,58,0,282,0,283,284,285,286,287,29,288,289,290,291,292,67,293,0,294,295,0,296,297,0,298,299,276,300,0,301,0,0,302,0,0,0,0,303,0,0,0,0,0,0,304,0,0,305,0,306,307,0,0,0,308,0,0,309,310,311,312,0,0,0,313,314,0,315,316,317,0,7,318,319,320,0,321,99,99,99,99,99,99,99,99,322,323,324,0,0,325,0,326,327,328,0,329,330,331,0,7,0,0,332,333,0,28,334,0,0,0,0,0,0,0,0,0,335,336,0,0,0,0,0,0,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,338,339,340,0,0,0,341,28,342,274,274,274,274,274,274,274,274,274,274,274,274,58,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,343,274,274,274,274,274,274,274,274,274,274,274,274,344,345,346,347,348,348,344,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,349,350,351,0,28,0,0,352,353,354,67,355,0,356,28,357,7,358,359,0,28,360,0,0,361,362,363,364,67,365,0,28,366,367,368,369,0,28,0,370,0,7,0,0,0,0,0,371,0,0,372,372,0,373,0,0,0,374,7,375,375,375,0,0,376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,377,378,0,379,380,381,382,383,384,67,385,0,386,0,0,387,388,389,390,391,392,393,0,394,395,0,0,396,397,398,0,0,399,0,0,398,400,400,401,402,0,403,403,0,404,405,406,407,0,408,398,398,409,0,0,410,410,0,411,412,0,413,414,415,415,416,416,0,0,417,418,418,419,419,420,421,421,422,422,423,424,424,425,425,0,0,426,427,428,429,430,431,431,428,430,432,372,433,0,0,0,0,0,434,435,375,375,375,436,375,437,438,28,439,440,0,0,0,0,0,0,0,0,0,0,0,0,441,0,0,0,0,436,0,0,0,0,0,442,443,0,0,0,0,0,0,444,0,0,0,0,0,443,445,446,0,447,0,448,0,0,0,0,449,0,0,0,0,0,0,0,0,0,450,0,0,0,0,0,0,0,449,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,451,452,453,7,76,454,0,455,0,456,0,0,0,457,458]];$send(self,"_lex_trans_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_to_state_actions");return self.$private("_lex_to_state_actions","_lex_to_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,79,0,79,0,0,0,79,79,0,0,0,0,79,0,79,0,79,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,79,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,79,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,79,0,0,0,0,0]];$send(self,"_lex_to_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_from_state_actions");return self.$private("_lex_from_state_actions","_lex_from_state_actions=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,80,0,80,0,0,0,80,80,0,0,0,0,80,0,80,0,80,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,80,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,80,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,80,0,0,0,0,0]];$send(self,"_lex_from_state_actions=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);self.$attr_accessor("_lex_eof_trans");return self.$private("_lex_eof_trans","_lex_eof_trans=")})(Opal.get_singleton_class(self),$nesting);$writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,19,19,19,19,19,19,19,19,19,19,19,19,19,19,44,44,44,44,50,50,50,50,50,50,50,50,50,50,50,50,50,50,75,75,75,75,81,81,81,81,0,0,0,0,95,97,99,99,99,104,104,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,169,169,169,169,169,169,169,169,169,169,169,169,179,181,181,181,193,195,195,195,195,195,201,193,205,205,205,205,205,205,205,205,205,205,205,205,205,205,223,223,223,223,223,223,223,223,223,223,223,223,223,223,193,205,205,205,205,255,255,255,260,262,262,262,266,266,260,266,266,266,266,266,266,266,266,266,296,296,0,309,310,311,313,315,317,315,315,0,327,328,332,332,333,342,343,344,344,344,347,347,349,350,351,351,351,353,354,355,355,351,347,347,360,361,361,361,361,361,364,364,364,364,364,364,364,364,374,375,375,375,375,387,387,387,375,375,375,375,387,387,387,387,387,387,387,387,387,398,387,399,400,400,0,407,411,411,412,421,422,423,423,423,426,426,428,429,430,430,430,432,433,434,434,430,426,426,439,440,440,440,440,440,443,443,443,443,443,443,443,443,453,454,454,454,454,466,466,466,454,454,454,454,466,466,466,466,466,466,466,466,466,477,466,478,479,479,0,486,487,0,493,0,500,504,504,0,0,513,514,518,518,0,523,0,526,0,529,529,530,531,0,572,574,575,576,577,579,581,585,585,576,576,576,576,587,576,576,581,576,576,572,591,591,591,591,591,591,581,581,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,630,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,576,0,673,674,675,677,673,680,0,699,701,703,704,705,706,707,709,706,706,706,706,706,712,706,706,714,712,712,706,0,733,734,104,104,737,738,104,734,734,741,743,746,734,747,734,748,749,751,753,734,741,754,754,743,754,758,754,754,754,754,0,179,766,767,766,766,0,776,777,779,781,783,781,785,0,797,798,799,800,802,804,806,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,0,193,865,868,869,873,875,876,877,878,879,881,884,885,887,889,892,893,895,896,193,893,893,884,884,884,884,915,918,920,921,925,928,929,930,931,915,915,915,915,915,915,915,915,915,915,915,884,935,884,884,884,936,943,943,945,947,956,957,958,958,958,961,961,963,964,965,965,965,967,968,969,969,965,961,961,974,975,975,975,975,975,978,978,978,978,978,978,978,978,988,989,989,989,989,1001,1001,1001,989,989,989,989,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1001,1016,1017,1018,1018,193,884,884,1022,884,879,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1076,869,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1101,884,0,1108,1109,1110,1112,1114,1116,0,1125,1126,1127,1128,1130,1125,1133,0,266,1187,1189,1190,1191,1192,1194,1196,1198,1201,1201,1192,1192,1204,1205,1192,1192,1207,1209,1210,1210,1213,1224,266,1230,1232,1233,1235,1213,1213,1238,1238,1238,1244,1245,1247,1248,1238,1238,1255,1260,1265,1238,1238,1272,1272,1238,1238,1209,1192,1192,1209,1192,1192,1198,266,1289,1290,1290,1290,1290,1290,1290,1296,1198,1299,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1339,1340,1300,1300,1344,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1300,1398,1192,1399,0,1403,1403,0,1407,1407,1407,1407,1411]];$send(self,"_lex_eof_trans=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_start")})(Opal.get_singleton_class(self),$nesting);$writer=[165];$send(self,"lex_start=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_error")})(Opal.get_singleton_class(self),$nesting);$writer=[0];$send(self,"lex_error=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_words")})(Opal.get_singleton_class(self),$nesting);$writer=[174];$send(self,"lex_en_interp_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_string")})(Opal.get_singleton_class(self),$nesting);$writer=[239];$send(self,"lex_en_interp_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_words")})(Opal.get_singleton_class(self),$nesting);$writer=[303];$send(self,"lex_en_plain_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_string")})(Opal.get_singleton_class(self),$nesting);$writer=[306];$send(self,"lex_en_plain_string=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[308];$send(self,"lex_en_interp_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited")})(Opal.get_singleton_class(self),$nesting);$writer=[312];$send(self,"lex_en_plain_backslash_delimited=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_interp_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[313];$send(self,"lex_en_interp_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_plain_backslash_delimited_words")})(Opal.get_singleton_class(self),$nesting);$writer=[318];$send(self,"lex_en_plain_backslash_delimited_words=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_regexp_modifiers")})(Opal.get_singleton_class(self),$nesting);$writer=[320];$send(self,"lex_en_regexp_modifiers=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_variable")})(Opal.get_singleton_class(self),$nesting);$writer=[322];$send(self,"lex_en_expr_variable=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_fname")})(Opal.get_singleton_class(self),$nesting);$writer=[327];$send(self,"lex_en_expr_fname=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endfn")})(Opal.get_singleton_class(self),$nesting);$writer=[440];$send(self,"lex_en_expr_endfn=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[447];$send(self,"lex_en_expr_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_arg")})(Opal.get_singleton_class(self),$nesting);$writer=[468];$send(self,"lex_en_expr_arg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_cmdarg")})(Opal.get_singleton_class(self),$nesting);$writer=[499];$send(self,"lex_en_expr_cmdarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_endarg")})(Opal.get_singleton_class(self),$nesting);$writer=[505];$send(self,"lex_en_expr_endarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_mid")})(Opal.get_singleton_class(self),$nesting);$writer=[513];$send(self,"lex_en_expr_mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_beg")})(Opal.get_singleton_class(self),$nesting);$writer=[537];$send(self,"lex_en_expr_beg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_labelarg")})(Opal.get_singleton_class(self),$nesting);$writer=[751];$send(self,"lex_en_expr_labelarg=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_value")})(Opal.get_singleton_class(self),$nesting);$writer=[758];$send(self,"lex_en_expr_value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_expr_end")})(Opal.get_singleton_class(self),$nesting);$writer=[766];$send(self,"lex_en_expr_end=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_leading_dot")})(Opal.get_singleton_class(self),$nesting);$writer=[939];$send(self,"lex_en_leading_dot=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_comment")})(Opal.get_singleton_class(self),$nesting);$writer=[942];$send(self,"lex_en_line_comment=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("lex_en_line_begin")})(Opal.get_singleton_class(self),$nesting);$writer=[165];$send(self,"lex_en_line_begin=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze());Opal.const_set($nesting[0],"REGEXP_META_CHARACTERS",$send(Opal.const_get_relative($nesting,"Regexp"),"union",Opal.to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze());Opal.const_set($nesting[0],"RBRACE_OR_RBRACK",["}","]"].$freeze());self.$attr_reader("source_buffer");self.$attr_accessor("diagnostics");self.$attr_accessor("static_env");self.$attr_accessor("force_utf32");self.$attr_accessor("cond","cmdarg","in_kwarg");self.$attr_accessor("tokens","comments");Opal.defn(self,"$initialize",TMP_Lexer_initialize_1=function $$initialize(version){var self=this;self.version=version;self.static_env=nil;self.tokens=nil;self.comments=nil;return self.$reset()},TMP_Lexer_initialize_1.$$arity=1);Opal.defn(self,"$reset",TMP_Lexer_reset_2=function $$reset(reset_state){var self=this;if(reset_state==null){reset_state=true}if($truthy(reset_state)){self.cs=self.$class().$lex_en_line_begin();self.cond=Opal.const_get_relative($nesting,"StackState").$new("cond");self.cmdarg=Opal.const_get_relative($nesting,"StackState").$new("cmdarg");self.cond_stack=[];self.cmdarg_stack=[]}self.force_utf32=false;self.source_pts=nil;self.p=0;self.ts=nil;self.te=nil;self.act=0;self.stack=[];self.top=0;self.token_queue=[];self.literal_stack=[];self.eq_begin_s=nil;self.sharp_s=nil;self.newline_s=nil;self.num_base=nil;self.num_digits_s=nil;self.num_suffix_s=nil;self.num_xfrm=nil;self.escape_s=nil;self.escape=nil;self.herebody_s=nil;self.paren_nest=0;self.lambda_stack=[];self.dedent_level=nil;self.command_state=false;return self.in_kwarg=false},TMP_Lexer_reset_2.$$arity=-1);Opal.defn(self,"$source_buffer=",TMP_Lexer_source_buffer$eq_3=function(source_buffer){var $a,$b,self=this,source=nil;self.source_buffer=source_buffer;if($truthy(self.source_buffer)){source=self.source_buffer.$source();if($truthy($truthy($a=($b=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)?source.$encoding()["$=="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")):$a)){self.source_pts=source.$unpack("U*")}else{self.source_pts=source.$unpack("C*")}if(self.source_pts["$[]"](0)["$=="](65279)){return self.p=1}else{return nil}}else{return self.source_pts=nil}},TMP_Lexer_source_buffer$eq_3.$$arity=1);Opal.defn(self,"$encoding",TMP_Lexer_encoding_4=function $$encoding(){var self=this;return self.source_buffer.$source().$encoding()},TMP_Lexer_encoding_4.$$arity=0);Opal.const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()}));Opal.defn(self,"$state",TMP_Lexer_state_5=function $$state(){var self=this;return Opal.const_get_relative($nesting,"LEX_STATES").$invert().$fetch(self.cs,self.cs)},TMP_Lexer_state_5.$$arity=0);Opal.defn(self,"$state=",TMP_Lexer_state$eq_6=function(state){var self=this;return self.cs=Opal.const_get_relative($nesting,"LEX_STATES").$fetch(state)},TMP_Lexer_state$eq_6.$$arity=1);Opal.defn(self,"$push_cmdarg",TMP_Lexer_push_cmdarg_7=function $$push_cmdarg(){var self=this;self.cmdarg_stack.$push(self.cmdarg);return self.cmdarg=Opal.const_get_relative($nesting,"StackState").$new(""+"cmdarg."+self.cmdarg_stack.$count())},TMP_Lexer_push_cmdarg_7.$$arity=0);Opal.defn(self,"$pop_cmdarg",TMP_Lexer_pop_cmdarg_8=function $$pop_cmdarg(){var self=this;return self.cmdarg=self.cmdarg_stack.$pop()},TMP_Lexer_pop_cmdarg_8.$$arity=0);Opal.defn(self,"$push_cond",TMP_Lexer_push_cond_9=function $$push_cond(){var self=this;self.cond_stack.$push(self.cond);return self.cond=Opal.const_get_relative($nesting,"StackState").$new(""+"cond."+self.cond_stack.$count())},TMP_Lexer_push_cond_9.$$arity=0);Opal.defn(self,"$pop_cond",TMP_Lexer_pop_cond_10=function $$pop_cond(){var self=this;return self.cond=self.cond_stack.$pop()},TMP_Lexer_pop_cond_10.$$arity=0);Opal.defn(self,"$dedent_level",TMP_Lexer_dedent_level_11=function $$dedent_level(){var $a,self=this,dedent_level=nil;$a=[self.dedent_level,nil],dedent_level=$a[0],self.dedent_level=$a[1],$a;return dedent_level},TMP_Lexer_dedent_level_11.$$arity=0);Opal.defn(self,"$advance",TMP_Lexer_advance_36=function $$advance(){var $a,$b,$c,$d,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,TMP_21,$p,$q,$r,$s,$t,$u,TMP_22,TMP_23,TMP_24,$v,$w,TMP_25,TMP_26,TMP_27,$x,$y,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_34,TMP_35,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,pe=nil,p=nil,eof=nil,testEof=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_acts=nil,_nacts=nil,_goto_level=nil,_resume=nil,_eof_trans=nil,_again=nil,_test_eof=nil,_out=nil,$case=nil,_wide=nil,tm=nil,heredoc_e=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,escaped_char=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}klass=self.$class();_lex_trans_keys=klass.$send("_lex_trans_keys");_lex_key_spans=klass.$send("_lex_key_spans");_lex_index_offsets=klass.$send("_lex_index_offsets");_lex_indicies=klass.$send("_lex_indicies");_lex_trans_targs=klass.$send("_lex_trans_targs");_lex_trans_actions=klass.$send("_lex_trans_actions");_lex_to_state_actions=klass.$send("_lex_to_state_actions");_lex_from_state_actions=klass.$send("_lex_from_state_actions");_lex_eof_trans=klass.$send("_lex_eof_trans");pe=$rb_plus(self.source_pts.$size(),2);$a=[self.p,pe],p=$a[0],eof=$a[1],$a;self.command_state=$truthy($a=self.cs["$=="](klass.$lex_en_expr_value()))?$a:self.cs["$=="](klass.$lex_en_line_begin());testEof=false;$b=nil,$a=Opal.to_ary($b),_slen=$a[0]==null?nil:$a[0],_trans=$a[1]==null?nil:$a[1],_keys=$a[2]==null?nil:$a[2],_inds=$a[3]==null?nil:$a[3],_acts=$a[4]==null?nil:$a[4],_nacts=$a[5]==null?nil:$a[5],$b;_goto_level=0;_resume=10;_eof_trans=15;_again=20;_test_eof=30;_out=40;while($truthy(true)){if($truthy($rb_le(_goto_level,0))){if(p["$=="](pe)){_goto_level=_test_eof;continue}if(self.cs["$=="](0)){_goto_level=_out;continue}}if($truthy($rb_le(_goto_level,_resume))){$case=_lex_from_state_actions["$[]"](self.cs);if(80["$==="]($case)){self.ts=p}_keys=self.cs["$<<"](1);_inds=_lex_index_offsets["$[]"](self.cs);_slen=_lex_key_spans["$[]"](self.cs);_wide=$truthy($b=self.source_pts["$[]"](p))?$b:0;_trans=function(){if($truthy($truthy($b=$truthy($c=$rb_gt(_slen,0))?$rb_le(_lex_trans_keys["$[]"](_keys),_wide):$c)?$rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))):$b)){return _lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys)))}else{return _lex_indicies["$[]"]($rb_plus(_inds,_slen))}return nil}()}if($truthy($rb_le(_goto_level,_eof_trans))){self.cs=_lex_trans_targs["$[]"](_trans);if($truthy(_lex_trans_actions["$[]"](_trans)["$!="](0))){$case=_lex_trans_actions["$[]"](_trans);if(28["$==="]($case)){self.newline_s=p}else if(99["$==="]($case)){self.escape_s=p;self.escape=nil}else if(29["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}}else if(67["$==="]($case)){self.sharp_s=$rb_minus(p,1)}else if(70["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(279["$==="]($case)){tm=p}else if(36["$==="]($case)){tm=p}else if(38["$==="]($case)){tm=p}else if(40["$==="]($case)){tm=p}else if(55["$==="]($case)){heredoc_e=p}else if(319["$==="]($case)){self.escape=nil}else if(348["$==="]($case)){tm=p}else if(424["$==="]($case)){self.num_base=16;self.num_digits_s=p}else if(418["$==="]($case)){self.num_base=10;self.num_digits_s=p}else if(421["$==="]($case)){self.num_base=8;self.num_digits_s=p}else if(415["$==="]($case)){self.num_base=2;self.num_digits_s=p}else if(430["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts}else if(398["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts}else if(410["$==="]($case)){self.num_suffix_s=p}else if(405["$==="]($case)){self.num_suffix_s=p}else if(403["$==="]($case)){self.num_suffix_s=p}else if(76["$==="]($case)){tm=p}else if(7["$==="]($case)){self.te=$rb_plus(p,1)}else if(96["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(5["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(92["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(91["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(97["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(94["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(95["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(6["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(4["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(123["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(10["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(120["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(119["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(124["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(122["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(11["$==="]($case)){p=$rb_minus(self.te,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($b=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$b)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($b=self.escape)?$b:self.$tok(),self.ts,self.te)}}else if(9["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(146["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(145["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(148["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(149["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(152["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(151["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(154["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(161["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(13["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(158["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(157["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(162["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(160["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(12["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(164["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(163["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(171["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DBEG","#{".$freeze());if($truthy(current_literal["$heredoc?"]())){$writer=[self.herebody_s];$send(current_literal,"saved_herebody_s=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.herebody_s=nil}current_literal.$start_interp_brace();$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=758;_goto_level=_again;continue}else if(15["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(167["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(166["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(172["$==="]($case)){self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();current_literal.$flush_string();current_literal.$extend_content();self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1));p=self.ts;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(169["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(170["$==="]($case)){self.te=p;p=$rb_minus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(14["$==="]($case)){p=$rb_minus(self.te,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(174["$==="]($case)){self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($b=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$b)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(173["$==="]($case)){self.te=$rb_plus(p,1);string=self.$tok();if($truthy($truthy($b=$rb_ge(self.version,22))?self.cond["$active?"]()["$!"]():$b)){lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),true))}current_literal=self.$literal();if($truthy($truthy($b=current_literal["$heredoc?"]()["$!"]())?token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead):$b)){if(token["$[]"](0)["$=="]("tLABEL_END")){p=$rb_plus(p,1);self.$pop_literal();self.cs=751}else{self.cs=self.$pop_literal()}p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$extend_string(string,self.ts,self.te)}}else if(176["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$literal().$extend_space(self.ts,self.te)}else if(177["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(178["$==="]($case)){self.te=p;p=$rb_minus(p,1);unknown_options=self.$tok().$scan(/[^imxouesn]/);if($truthy(unknown_options["$any?"]())){self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()}))}self.$emit("tREGEXP_OPT");self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(16["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(179["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))){self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i())}else if($truthy(self.$tok()["$=~"](/^\$([&`'+])$/))){self.$emit("tBACK_REF")}else{self.$emit("tGVAR")}self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(181["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@@[0-9]/))){self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tCVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(180["$==="]($case)){self.te=p;p=$rb_minus(p,1);if($truthy(self.$tok()["$=~"](/^@[0-9]/))){self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()}))}self.$emit("tIVAR");self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}else if(202["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(188["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(18["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(185["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(197["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(20["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self["$version?"](23))){$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else{p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(184["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(183["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(201["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(198["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(200["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(195["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(191["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(196["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(189["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(194["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(19["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(17["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(187["$==="]($case)){$case=self.act;if(39["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(40["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(41["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(22["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);self.cs=751;p=$rb_plus(p,1);_goto_level=_out;continue}else if(204["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(203["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(206["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(205["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(21["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(212["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(211["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(210["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(222["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(213["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(218["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(216["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(221["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(245["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(228["$==="]($case)){self.te=$rb_plus(p,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(234["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(24["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}else if(236["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(39["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(223["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(224["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(235["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(231["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(233["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(227["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(226["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(244["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(25["$==="]($case)){p=$rb_minus(self.te,1)}else if(41["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(23["$==="]($case)){$case=self.act;if(67["$==="]($case)){p=$rb_minus(self.te,1);if(self.$tok(tm,$rb_plus(tm,1))["$=="]("/".$freeze())){self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1)))}p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(68["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te));p=$rb_minus(tm,1);self.cs=537;_goto_level=_again;continue}else if(73["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else{p=$rb_minus(self.te,1)}}else if(43["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(249["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(250["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(44["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}else if(42["$==="]($case)){$case=self.act;if(80["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self.cond["$active?"]())){self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te)}else{self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te)}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(81["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=468;_goto_level=_again;continue}}else if(260["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_do(true);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(253["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(254["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(255["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(258["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(264["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(263["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(272["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}else if(266["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(270["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(265["$==="]($case)){$case=self.act;if(88["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(89["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=537;_goto_level=_again;continue}}else if(300["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);if($truthy(self.$tok()["$start_with?"]("-".$freeze()))){self.$emit("tUMINUS_NUM","-".$freeze(),self.ts,$rb_plus(self.ts,1));self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(301["$==="]($case)){self.te=$rb_plus(p,1);type=delimiter=self.$tok()["$[]"](0).$chr();p=$rb_minus(p,1);self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(295["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(51["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(302["$==="]($case)){self.te=$rb_plus(p,1);$b=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(54["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(316["$==="]($case)){self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(315["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(303["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(48["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);if($truthy(self["$version?"](18))){ident=self.$tok(self.ts,$rb_minus(self.te,2));self.$emit(function(){if($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))){return"tCONSTANT"}else{return"tIDENTIFIER"}return nil}(),ident,self.ts,$rb_minus(self.te,2));p=$rb_minus(p,1);if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](ident):$b)){self.cs=766}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1));self.cs=751}p=$rb_plus(p,1);_goto_level=_out;continue}else if(289["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(52["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(275["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(299["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSTAR","*".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(296["$==="]($case)){self.te=p;p=$rb_minus(p,1);$b=[self.$tok()["$[]"]($range(0,-2,false)),self.$tok()["$[]"](-1).$chr()],type=$b[0],delimiter=$b[1],$b;self.cs=self.$push_literal(type,delimiter,self.ts);_goto_level=_again;continue}else if(294["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(304["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(314["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(320["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(297["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(342["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($b=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$b)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(286["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(288["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(291["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(50["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)))}else if(57["$==="]($case)){p=$rb_minus(self.te,1);value=$truthy($b=self.escape)?$b:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($b=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(49["$==="]($case)){p=$rb_minus(self.te,1)}else if(53["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(47["$==="]($case)){$case=self.act;if(111["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(119["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(350["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(351["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(352["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(356["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(60["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(360["$==="]($case)){self.te=$rb_plus(p,1);self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts);_goto_level=_again;continue}else if(359["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(358["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(362["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(361["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(59["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=537;_goto_level=_again;continue}else if(392["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2));self.lambda_stack.$push(self.paren_nest);self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else if(74["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(370["$==="]($case)){self.te=$rb_plus(p,1);$c=[self.$tok(),self.$tok()["$[]"](-1).$chr()],type=$c[0],delimiter=$c[1],$c;self.cs=self.$push_literal(type,delimiter,self.ts,nil,false,false,true);_goto_level=_again;continue}else if(62["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(389["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=447;p=$rb_plus(p,1);_goto_level=_out;continue}else if(383["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(376["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(388["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1)));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(374["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tEH","?".$freeze());self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(371["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(373["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tSEMI",";".$freeze());self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(438["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1)));p=$rb_minus(p,1)}else if(369["$==="]($case)){self.te=$rb_plus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(368["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(448["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(446["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(445["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(395["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("error","no_dot_digit_literal")}else if(435["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(387["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);$writer=[self.top,self.cs];$send(self.stack,"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.top=$rb_plus(self.top,1);self.cs=322;_goto_level=_again;continue}else if(393["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=447;p=$rb_plus(p,1);_goto_level=_out;continue}else if(440["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(382["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(394["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(380["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(386["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(63["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("error","no_dot_digit_literal")}else if(61["$==="]($case)){p=$rb_minus(self.te,1);self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,false))}))}else if(64["$==="]($case)){$case=self.act;if(132["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(133["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(134["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(135["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(136["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(137["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(138["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));if($truthy($truthy($c=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$c)){self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(139["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(140["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(144["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(145["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(147["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($c=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$c)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(78["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(453["$==="]($case)){self.te=$rb_plus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(454["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(75["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1));p=$rb_minus(p,1);self.cs=165;p=$rb_plus(p,1);_goto_level=_out;continue}else if(457["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=165;_goto_level=_again;continue}else if(456["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())))}else if(89["$==="]($case)){self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(2["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(81["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(82["$==="]($case)){self.te=$rb_plus(p,1);p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(83["$==="]($case)){self.te=p;p=$rb_minus(p,1)}else if(88["$==="]($case)){self.te=p;p=$rb_minus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(87["$==="]($case)){self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(1["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(p,1);self.cs=758;_goto_level=_again;continue}else if(73["$==="]($case)){self.newline_s=p;self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(93["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(121["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(147["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(153["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(159["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(165["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(168["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(175["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($c=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$c)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}}else if(246["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(237["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(229["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(317["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1)));self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range());p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(290["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=165;_goto_level=_again;continue}else if(458["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.$emit_comment(self.eq_begin_s,self.te);self.cs=165;_goto_level=_again;continue}else if(455["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1)}else if(90["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);self.eq_begin_s=self.ts;self.cs=942;_goto_level=_again;continue}else if(3["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);p=$rb_minus(pe,3)}else if(412["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_12=function(chars){var self=TMP_12.$$s||this;if(chars==null)chars=nil;return self.$emit("tRATIONAL",self.$Rational(chars))},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(411["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_13=function(chars){var self=TMP_13.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,chars))},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(413["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_14=function(chars){var self=TMP_14.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($c=$truthy($d=digits["$empty?"]())?self.num_base["$=="](8):$d)?self["$version?"](18):$c)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($c=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(406["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_15=function(chars){var self=TMP_15.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(407["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_16=function(chars){var self=TMP_16.$$s||this;if(chars==null)chars=nil;return self.$emit("tRATIONAL",self.$Rational(chars))},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(408["$==="]($case)){self.num_xfrm=$send(self,"lambda",[],(TMP_17=function(chars){var self=TMP_17.$$s||this;if(chars==null)chars=nil;return self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(116["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_18=function(codepoint_str){var self=TMP_18.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_18.$$s=self,TMP_18.$$brk=$brk,TMP_18.$$arity=1,TMP_18))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($c=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$c)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($c=self.escape)?$c:self.$tok(),self.ts,self.te)}}else if(142["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_19=function(codepoint_str){var self=TMP_19.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_19.$$s=self,TMP_19.$$brk=$brk,TMP_19.$$arity=1,TMP_19))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($c=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$c)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($c=self.escape)?$c:self.$tok(),self.ts,self.te)}}else if(338["$==="]($case)){self.escape="";codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1));codepoint_s=$rb_plus(self.escape_s,2);(function(){var $brk=Opal.new_brk();try{return $send(codepoints.$split(/[ \t]/),"each",[],(TMP_20=function(codepoint_str){var self=TMP_20.$$s||this,codepoint=nil;if(self.escape==null)self.escape=nil;if(codepoint_str==null)codepoint_str=nil;codepoint=codepoint_str.$to_i(16);if($truthy($rb_ge(codepoint,1114112))){self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length())));Opal.brk(nil,$brk)}self.escape=$rb_plus(self.escape,codepoint.$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8")));return codepoint_s=$rb_plus(codepoint_s,$rb_plus(codepoint_str.$length(),1))},TMP_20.$$s=self,TMP_20.$$brk=$brk,TMP_20.$$arity=1,TMP_20))}catch(err){if(err===$brk){return err.$v}else{throw err}}})();self.te=p;p=$rb_minus(p,1);value=$truthy($c=self.escape)?$c:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($c=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(100["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($d=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$d)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($d=self.escape)?$d:self.$tok(),self.ts,self.te)}}else if(126["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($d=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$d)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($d=self.escape)?$d:self.$tok(),self.ts,self.te)}}else if(322["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.te=p;p=$rb_minus(p,1);value=$truthy($d=self.escape)?$d:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($d=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(103["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($e=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$e)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($e=self.escape)?$e:self.$tok(),self.ts,self.te)}}else if(129["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($e=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$e)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($e=self.escape)?$e:self.$tok(),self.ts,self.te)}}else if(325["$==="]($case)){self.$diagnostic("fatal","invalid_escape");self.te=p;p=$rb_minus(p,1);value=$truthy($e=self.escape)?$e:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($e=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(105["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($f=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$f)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($f=self.escape)?$f:self.$tok(),self.ts,self.te)}}else if(131["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($f=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$f)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($f=self.escape)?$f:self.$tok(),self.ts,self.te)}}else if(327["$==="]($case)){self.escape="";self.te=p;p=$rb_minus(p,1);value=$truthy($f=self.escape)?$f:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($f=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(102["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($g=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$g)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($g=self.escape)?$g:self.$tok(),self.ts,self.te)}}else if(128["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($g=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$g)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($g=self.escape)?$g:self.$tok(),self.ts,self.te)}}else if(324["$==="]($case)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256));self.te=p;p=$rb_minus(p,1);value=$truthy($g=self.escape)?$g:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($g=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(118["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($h=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$h)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($h=self.escape)?$h:self.$tok(),self.ts,self.te)}}else if(144["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($h=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$h)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($h=self.escape)?$h:self.$tok(),self.ts,self.te)}}else if(340["$==="]($case)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16));self.te=p;p=$rb_minus(p,1);value=$truthy($h=self.escape)?$h:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($h=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($i=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$i)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($i=self.escape)?$i:self.$tok(),self.ts,self.te)}}else if(139["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($i=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$i)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($i=self.escape)?$i:self.$tok(),self.ts,self.te)}}else if(335["$==="]($case)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));self.te=p;p=$rb_minus(p,1);value=$truthy($i=self.escape)?$i:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($i=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(117["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($j=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$j)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($j=self.escape)?$j:self.$tok(),self.ts,self.te)}}else if(143["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($j=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$j)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($j=self.escape)?$j:self.$tok(),self.ts,self.te)}}else if(339["$==="]($case)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2)));self.te=p;p=$rb_minus(p,1);value=$truthy($j=self.escape)?$j:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($j=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($k=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$k)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($k=self.escape)?$k:self.$tok(),self.ts,self.te)}}else if(138["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($k=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$k)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($k=self.escape)?$k:self.$tok(),self.ts,self.te)}}else if(334["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($k=self.escape)?$k:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($k=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($l=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$l)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($l=self.escape)?$l:self.$tok(),self.ts,self.te)}}else if(141["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($l=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$l)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($l=self.escape)?$l:self.$tok(),self.ts,self.te)}}else if(337["$==="]($case)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($l=self.escape)?$l:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($l=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(101["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($m=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$m)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($m=self.escape)?$m:self.$tok(),self.ts,self.te)}}else if(127["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($m=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$m)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($m=self.escape)?$m:self.$tok(),self.ts,self.te)}}else if(323["$==="]($case)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($m=self.escape)?$m:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($m=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(150["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($n=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$n)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($n=self.escape)?$n:self.$tok(),self.ts,self.te)}}else if(155["$==="]($case)){self.escape_s=p;self.escape=nil;self.te=$rb_plus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($n=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$n)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($n=self.escape)?$n:self.$tok(),self.ts,self.te)}}else if(66["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.newline_s=p}else if(30["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(32["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(34["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p}else if(190["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(209["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(217["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(33["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=$rb_plus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(248["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(240["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(259["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(271["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(267["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(287["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(357["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(353["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);if($truthy(self.in_kwarg)){p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else{self.cs=165;_goto_level=_again;continue}}else if(366["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(363["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=165;_goto_level=_again;continue}else if(439["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(381["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1);self.cs=939;_goto_level=_again;continue}else if(84["$==="]($case)){if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.te=p;p=$rb_minus(p,1)}else if(239["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else{self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(261["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE_ARG","{".$freeze())}self.cs=758}else if(349["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("tLBRACE","{".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(451["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);current_literal=self.$literal();if($truthy(current_literal)){current_literal.$start_interp_brace()}self.te=p;p=$rb_minus(p,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(452["$==="]($case)){current_literal=self.$literal();if($truthy(current_literal)){if($truthy(current_literal.$end_interp_brace_and_try_closing())){if($truthy(self["$version?"](18,19))){self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p)}else{self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p)}if($truthy(current_literal.$saved_herebody_s())){self.herebody_s=current_literal.$saved_herebody_s()}p=$rb_minus(p,1);self.cs=self.$stack_pop();p=$rb_plus(p,1);_goto_level=_out;continue}}self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(68["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}())}else if(71["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(193["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(208["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(220["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(242["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(257["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(269["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(293["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(355["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(365["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(385["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(86["$==="]($case)){self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(214["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg();p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(305["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(278["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(378["$==="]($case)){tm=p;$case=self.act;if(132["$==="]($case)){p=$rb_minus(self.te,1);if(self.lambda_stack.$last()["$=="](self.paren_nest)){self.lambda_stack.$pop();if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLAMBEG","{".$freeze())}else{self.$emit("kDO_LAMBDA","do".$freeze())}}else if(self.$tok()["$=="]("{".$freeze())){self.$emit("tLCURLY","{".$freeze())}else{self.$emit_do()}self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(133["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=327;p=$rb_plus(p,1);_goto_level=_out;continue}else if(134["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5));self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(135["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(136["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(137["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(138["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));if($truthy($truthy($n=self["$version?"](18))?self.$tok()["$=="]("not".$freeze()):$n)){self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(139["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18))){self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){}else{self.cs=self.$arg_or_cmdarg()}}else{self.$emit("k__ENCODING__","__ENCODING__".$freeze())}p=$rb_plus(p,1);_goto_level=_out;continue}else if(140["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(141["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($n=$truthy($o=digits["$empty?"]())?self.num_base["$=="](8):$o)?self["$version?"](18):$n)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($n=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(143["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(144["$==="]($case)){p=$rb_minus(self.te,1);if($truthy(self["$version?"](18,19,20))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1));p=$rb_minus(p,1);p=$rb_plus(p,1);_goto_level=_out;continue}}else if(145["$==="]($case)){p=$rb_minus(self.te,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(147["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tCONSTANT");self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}else if(151["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(152["$==="]($case)){p=$rb_minus(self.te,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(215["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm);self.cs=self.$arg_or_cmdarg();p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(306["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(280["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(379["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);if(tm["$=="](self.te)){self.$emit("tFID")}else{self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1)}self.cs=468;p=$rb_plus(p,1);_goto_level=_out;continue}else if(307["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(281["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(308["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(282["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(312["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(285["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(311["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(284["$==="]($case)){tm=$rb_minus(p,2);$case=self.act;if(111["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION_BEGIN"));p=$rb_plus(p,1);_goto_level=_out;continue}else if(112["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(113["$==="]($case)){p=$rb_minus(self.te,1);self.$emit_table(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"));self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else if(115["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(116["$==="]($case)){p=$rb_minus(self.te,1);self.$emit("tIDENTIFIER");if($truthy($truthy($n=self.static_env["$nil?"]()["$!"]())?self.static_env["$declared?"](self.$tok()):$n)){self.cs=440;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$arg_or_cmdarg();p=$rb_plus(p,1);_goto_level=_out;continue}}else if(119["$==="]($case)){p=$rb_minus(self.te,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}}else if(309["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(283["$==="]($case)){tm=$rb_minus(p,3);self.te=p;p=$rb_minus(p,1);p=$rb_minus(self.ts,1);self.cs=766;_goto_level=_again;continue}else if(310["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm);p=$rb_minus(tm,1);self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(434["$==="]($case)){tm=$rb_minus(p,2);self.te=p;p=$rb_minus(p,1);self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm);p=$rb_minus(tm,1);p=$rb_plus(p,1);_goto_level=_out;continue}else if(238["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(341["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK","[".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(437["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.te=p;p=$rb_minus(p,1);self.$emit("tLBRACK2","[".$freeze());self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(230["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);if($truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(243["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN2","(".$freeze());self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(251["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te);if($truthy(self["$version?"](18))){self.cs=758;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}}else if(298["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit("tLPAREN","(".$freeze());p=$rb_plus(p,1);_goto_level=_out;continue}else if(390["$==="]($case)){self.cond.$push(false);self.cmdarg.$push(false);self.paren_nest=$rb_plus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else if(391["$==="]($case)){self.paren_nest=$rb_minus(self.paren_nest,1);self.te=p;p=$rb_minus(p,1);self.$emit_table(Opal.const_get_relative($nesting,"PUNCTUATION"));self.cond.$lexpop();self.cmdarg.$lexpop();if($truthy(Opal.const_get_relative($nesting,"RBRACE_OR_RBRACK")["$include?"](self.$tok()))){self.cs=505}p=$rb_plus(p,1);_goto_level=_out;continue}else if(56["$==="]($case)){heredoc_e=p;self.newline_s=p}else if(313["$==="]($case)){new_herebody_s=p;self.te=p;p=$rb_minus(p,1);self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/);indent=$truthy($n=(($o=$gvars["~"])===nil?nil:$o["$[]"](1))["$empty?"]()["$!"]())?$n:(($o=$gvars["~"])===nil?nil:$o["$[]"](2))["$empty?"]()["$!"]();dedent_body=(($n=$gvars["~"])===nil?nil:$n["$[]"](2))["$empty?"]()["$!"]();type=function(){if($truthy((($n=$gvars["~"])===nil?nil:$n["$[]"](3))["$empty?"]())){return'<<"'.$freeze()}else{return $rb_plus("<<".$freeze(),($n=$gvars["~"])===nil?nil:$n["$[]"](3))}return nil}();delimiter=($n=$gvars["~"])===nil?nil:$n["$[]"](4);if($truthy($truthy($n=dedent_body)?self["$version?"](18,19,20,21,22):$n)){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2));p=$rb_plus(self.ts,1);self.cs=537;p=$rb_plus(p,1);_goto_level=_out;continue}else{self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body);self.herebody_s=$truthy($n=self.herebody_s)?$n:new_herebody_s;p=$rb_minus(self.herebody_s,1)}}else if(318["$==="]($case)){self.escape=nil;self.te=p;p=$rb_minus(p,1);value=$truthy($n=self.escape)?$n:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($n=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(345["$==="]($case)){tm=p;self.te=p;p=$rb_minus(p,1);self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm);p=$rb_minus(tm,1);self.cs=513;p=$rb_plus(p,1);_goto_level=_out;continue}else if(425["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p}else if(419["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p}else if(422["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p}else if(416["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p}else if(431["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(400["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p}else if(432["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_21=function(chars){var self=TMP_21.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))}else if(77["$==="]($case)){tm=p;self.te=$rb_plus(p,1);p=$rb_minus(tm,1);self.cs=766;_goto_level=_again;continue}else if(8["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p}else if(199["$==="]($case)){self.te=$rb_plus(p,1);self.act=39}else if(186["$==="]($case)){self.te=$rb_plus(p,1);self.act=40}else if(182["$==="]($case)){self.te=$rb_plus(p,1);self.act=41}else if(26["$==="]($case)){self.te=$rb_plus(p,1);self.act=67}else if(232["$==="]($case)){self.te=$rb_plus(p,1);self.act=68}else if(27["$==="]($case)){self.te=$rb_plus(p,1);self.act=73}else if(225["$==="]($case)){self.te=$rb_plus(p,1);self.act=74}else if(252["$==="]($case)){self.te=$rb_plus(p,1);self.act=80}else if(45["$==="]($case)){self.te=$rb_plus(p,1);self.act=81}else if(273["$==="]($case)){self.te=$rb_plus(p,1);self.act=88}else if(262["$==="]($case)){self.te=$rb_plus(p,1);self.act=89}else if(276["$==="]($case)){self.te=$rb_plus(p,1);self.act=111}else if(344["$==="]($case)){self.te=$rb_plus(p,1);self.act=112}else if(343["$==="]($case)){self.te=$rb_plus(p,1);self.act=113}else if(58["$==="]($case)){self.te=$rb_plus(p,1);self.act=115}else if(274["$==="]($case)){self.te=$rb_plus(p,1);self.act=116}else if(277["$==="]($case)){self.te=$rb_plus(p,1);self.act=119}else if(447["$==="]($case)){self.te=$rb_plus(p,1);self.act=132}else if(442["$==="]($case)){self.te=$rb_plus(p,1);self.act=133}else if(450["$==="]($case)){self.te=$rb_plus(p,1);self.act=135}else if(443["$==="]($case)){self.te=$rb_plus(p,1);self.act=136}else if(444["$==="]($case)){self.te=$rb_plus(p,1);self.act=137}else if(449["$==="]($case)){self.te=$rb_plus(p,1);self.act=138}else if(441["$==="]($case)){self.te=$rb_plus(p,1);self.act=139}else if(436["$==="]($case)){self.te=$rb_plus(p,1);self.act=140}else if(372["$==="]($case)){self.te=$rb_plus(p,1);self.act=141}else if(402["$==="]($case)){self.te=$rb_plus(p,1);self.act=144}else if(65["$==="]($case)){self.te=$rb_plus(p,1);self.act=145}else if(375["$==="]($case)){self.te=$rb_plus(p,1);self.act=147}else if(367["$==="]($case)){self.te=$rb_plus(p,1);self.act=151}else if(377["$==="]($case)){self.te=$rb_plus(p,1);self.act=152}else if(156["$==="]($case)){self.newline_s=p;self.te=$rb_plus(p,1);current_literal=self.$literal();if(self.te["$=="](pe)){self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1)))}if($truthy(current_literal["$heredoc?"]())){line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze());if($truthy(self["$version?"](18,19,20))){line=line.$gsub(/\r.*$/,"".$freeze())}if($truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te;p=$rb_minus(current_literal.$heredoc_e(),1);self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}else{current_literal.$infer_indent_level(line);self.herebody_s=self.te}}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal();p=$rb_plus(p,1);_goto_level=_out;continue}if($truthy(self.herebody_s)){p=$rb_minus(self.herebody_s,1);self.herebody_s=nil}}if($truthy($truthy($o=current_literal["$words?"]())?self["$eof_codepoint?"](self.source_pts["$[]"](p))["$!"]():$o)){current_literal.$extend_space(self.ts,self.te)}else{current_literal.$extend_string(self.$tok(),self.ts,self.te);current_literal.$flush_string()}self.escape_s=p;self.escape=nil}else if(106["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($o=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$o)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($o=self.escape)?$o:self.$tok(),self.ts,self.te)}}else if(132["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($o=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$o)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($o=self.escape)?$o:self.$tok(),self.ts,self.te)}}else if(328["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($o=self.escape)?$o:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($o=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(111["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($p=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$p)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($p=self.escape)?$p:self.$tok(),self.ts,self.te)}}else if(137["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($p=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$p)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($p=self.escape)?$p:self.$tok(),self.ts,self.te)}}else if(333["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($p=self.escape)?$p:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($p=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(110["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($q=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$q)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($q=self.escape)?$q:self.$tok(),self.ts,self.te)}}else if(136["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($q=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$q)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($q=self.escape)?$q:self.$tok(),self.ts,self.te)}}else if(332["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($q=self.escape)?$q:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($q=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(108["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($r=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$r)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($r=self.escape)?$r:self.$tok(),self.ts,self.te)}}else if(134["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($r=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$r)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($r=self.escape)?$r:self.$tok(),self.ts,self.te)}}else if(330["$==="]($case)){self.escape="";self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($r=self.escape)?$r:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($r=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(104["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($s=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$s)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($s=self.escape)?$s:self.$tok(),self.ts,self.te)}}else if(130["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($s=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$s)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($s=self.escape)?$s:self.$tok(),self.ts,self.te)}}else if(326["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.te=p;p=$rb_minus(p,1);value=$truthy($s=self.escape)?$s:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($s=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(114["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($t=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$t)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($t=self.escape)?$t:self.$tok(),self.ts,self.te)}}else if(140["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($t=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$t)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($t=self.escape)?$t:self.$tok(),self.ts,self.te)}}else if(336["$==="]($case)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p));self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($t=self.escape)?$t:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($t=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(98["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($u=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$u)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($u=self.escape)?$u:self.$tok(),self.ts,self.te)}}else if(125["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($u=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$u)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($u=self.escape)?$u:self.$tok(),self.ts,self.te)}}else if(321["$==="]($case)){self.escape_s=p;self.escape=nil;self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p));self.te=p;p=$rb_minus(p,1);value=$truthy($u=self.escape)?$u:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($u=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(69["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.newline_s=p}else if(192["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(207["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(219["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(241["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1);self.cs=766;_goto_level=_again;continue}else if(256["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(268["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(292["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(354["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(364["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(384["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(85["$==="]($case)){self.sharp_s=$rb_minus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.te=p;p=$rb_minus(p,1)}else if(427["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_22=function(chars){var self=TMP_22.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}else if(397["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_23=function(chars){var self=TMP_23.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_23.$$s=self,TMP_23.$$arity=1,TMP_23))}else if(409["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_24=function(chars){var self=TMP_24.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($v=$truthy($w=digits["$empty?"]())?self.num_base["$=="](8):$w)?self["$version?"](18):$v)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($v=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(404["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_25=function(chars){var self=TMP_25.$$s||this;if(chars==null)chars=nil;return self.$emit("tFLOAT",self.$Float(chars))},TMP_25.$$s=self,TMP_25.$$arity=1,TMP_25));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(401["$==="]($case)){self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_26=function(chars){var self=TMP_26.$$s||this;if(chars==null)chars=nil;return self.$emit("tFLOAT",self.$Float(chars))},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.ts,self.num_suffix_s);if($truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits)}p=$rb_plus(p,1);_goto_level=_out;continue}else if(247["$==="]($case)){self.te=$rb_plus(p,1);self.newline_s=p;self.act=74}else if(35["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=73}else if(46["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}self.act=81}else if(72["$==="]($case)){self.te=$rb_plus(p,1);self.$emit_comment(self.sharp_s,function(){if(p["$=="](pe)){return $rb_minus(p,2)}else{return p}return nil}());self.act=134}else if(37["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=68}else if(347["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=115}else if(346["$==="]($case)){self.te=$rb_plus(p,1);tm=p;self.act=116}else if(428["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.act=141}else if(109["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($v=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$v)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($v=self.escape)?$v:self.$tok(),self.ts,self.te)}}else if(135["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($v=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$v)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($v=self.escape)?$v:self.$tok(),self.ts,self.te)}}else if(331["$==="]($case)){codepoint=self.source_pts["$[]"]($rb_minus(p,1));if($truthy((self.escape=Opal.const_get_relative($nesting,"ESCAPES")["$[]"](codepoint))["$nil?"]())){self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))}self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($v=self.escape)?$v:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($v=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(107["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($w=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$w)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($w=self.escape)?$w:self.$tok(),self.ts,self.te)}}else if(133["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);current_literal=self.$literal();escaped_char=self.source_buffer.$slice(self.escape_s).$chr();if($truthy(current_literal["$munge_escape?"](escaped_char))){if($truthy($truthy($w=current_literal["$regexp?"]())?Opal.const_get_relative($nesting,"REGEXP_META_CHARACTERS").$match(escaped_char):$w)){current_literal.$extend_string(self.$tok(),self.ts,self.te)}else{current_literal.$extend_string(escaped_char,self.ts,self.te)}}else if($truthy(current_literal["$regexp?"]())){current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te)}else{current_literal.$extend_string($truthy($w=self.escape)?$w:self.$tok(),self.ts,self.te)}}else if(329["$==="]($case)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr();self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159));self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128));self.te=p;p=$rb_minus(p,1);value=$truthy($w=self.escape)?$w:self.$tok($rb_plus(self.ts,1));if($truthy(self["$version?"](18))){if($truthy(($w=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.$emit("tINTEGER",value.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))["$[]"](0).$ord())}else{self.$emit("tINTEGER",value["$[]"](0).$ord())}}else{self.$emit("tCHARACTER",value)}self.cs=766;p=$rb_plus(p,1);_goto_level=_out;continue}else if(423["$==="]($case)){self.num_base=16;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_27=function(chars){var self=TMP_27.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(417["$==="]($case)){self.num_base=10;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_28=function(chars){var self=TMP_28.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_28.$$s=self,TMP_28.$$arity=1,TMP_28));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(420["$==="]($case)){self.num_base=8;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_29=function(chars){var self=TMP_29.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_29.$$s=self,TMP_29.$$arity=1,TMP_29));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(414["$==="]($case)){self.num_base=2;self.num_digits_s=p;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_30=function(chars){var self=TMP_30.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(426["$==="]($case)){self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_31=function(chars){var self=TMP_31.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(396["$==="]($case)){self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_32=function(chars){var self=TMP_32.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_32.$$s=self,TMP_32.$$arity=1,TMP_32));self.te=p;p=$rb_minus(p,1);digits=self.$tok(self.num_digits_s,self.num_suffix_s);if($truthy(digits["$end_with?"]("_".$freeze()))){self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te))}else if($truthy($truthy($x=$truthy($y=digits["$empty?"]())?self.num_base["$=="](8):$y)?self["$version?"](18):$x)){digits="0".$freeze()}else if($truthy(digits["$empty?"]())){self.$diagnostic("error","empty_numeric")}else if($truthy(($x=self.num_base["$=="](8))?invalid_idx=digits.$index(/[89]/):self.num_base["$=="](8))){invalid_s=$rb_plus(self.num_digits_s,invalid_idx);self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))}if($truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s);p=$rb_minus(self.num_suffix_s,1)}else{self.num_xfrm.$call(digits.$to_i(self.num_base))}p=$rb_plus(p,1);_goto_level=_out;continue}else if(31["$==="]($case)){self.te=$rb_plus(p,1);if($truthy(self.herebody_s)){p=self.herebody_s;self.herebody_s=nil}tm=p;self.act=68}else if(433["$==="]($case)){self.te=$rb_plus(p,1);self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_33=function(chars){var self=TMP_33.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));self.act=143}else if(429["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=10;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_34=function(chars){var self=TMP_34.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34));self.act=143}else if(399["$==="]($case)){self.te=$rb_plus(p,1);self.num_base=8;self.num_digits_s=self.ts;self.num_suffix_s=p;self.num_xfrm=$send(self,"lambda",[],(TMP_35=function(chars){var self=TMP_35.$$s||this;if(chars==null)chars=nil;return self.$emit("tINTEGER",chars)},TMP_35.$$s=self,TMP_35.$$arity=1,TMP_35));self.act=143}}}if($truthy($rb_le(_goto_level,_again))){$case=_lex_to_state_actions["$[]"](self.cs);if(79["$==="]($case)){self.ts=nil}if(self.cs["$=="](0)){_goto_level=_out;continue}p=$rb_plus(p,1);if($truthy(p["$!="](pe))){_goto_level=_resume;continue}}if($truthy($rb_le(_goto_level,_test_eof))){if(p["$=="](eof)){if($truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0))){_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1);_goto_level=_eof_trans;continue}}}if($truthy($rb_le(_goto_level,_out))){break}}self.p=p;if($truthy(self.token_queue["$any?"]())){return self.token_queue.$shift()}else if(self.cs["$=="](klass.$lex_error())){return[false,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]}else{eof=self.source_pts.$size();return[false,["$eof".$freeze(),self.$range(eof,eof)]]}},TMP_Lexer_advance_36.$$arity=0);self.$protected();Opal.defn(self,"$eof_codepoint?",TMP_Lexer_eof_codepoint$q_37=function(point){var self=this;return[4,26,0]["$include?"](point)},TMP_Lexer_eof_codepoint$q_37.$$arity=1);Opal.defn(self,"$version?",TMP_Lexer_version$q_38=function($a_rest){var self=this,versions;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}versions=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){versions[$arg_idx-0]=arguments[$arg_idx]}return versions["$include?"](self.version)},TMP_Lexer_version$q_38.$$arity=-1);Opal.defn(self,"$stack_pop",TMP_Lexer_stack_pop_39=function $$stack_pop(){var self=this;self.top=$rb_minus(self.top,1);return self.stack["$[]"](self.top)},TMP_Lexer_stack_pop_39.$$arity=0);if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){Opal.defn(self,"$encode_escape",TMP_Lexer_encode_escape_40=function $$encode_escape(ord){var self=this;return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding())},TMP_Lexer_encode_escape_40.$$arity=1)}else{Opal.defn(self,"$encode_escape",TMP_Lexer_encode_escape_41=function $$encode_escape(ord){var self=this;return ord.$chr()},TMP_Lexer_encode_escape_41.$$arity=1)}Opal.defn(self,"$tok",TMP_Lexer_tok_42=function $$tok(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return self.source_buffer.$slice(Opal.Range.$new(s,e,true))},TMP_Lexer_tok_42.$$arity=-1);Opal.defn(self,"$range",TMP_Lexer_range_43=function $$range(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Range").$new(self.source_buffer,s,e)},TMP_Lexer_range_43.$$arity=-1);Opal.defn(self,"$emit",TMP_Lexer_emit_44=function $$emit(type,value,s,e){var self=this,token=nil;if(value==null){value=self.$tok()}if(s==null){s=self.ts}if(e==null){e=self.te}token=[type,[value,self.$range(s,e)]];self.token_queue.$push(token);if($truthy(self.tokens)){self.tokens.$push(token)}return token},TMP_Lexer_emit_44.$$arity=-2);Opal.defn(self,"$emit_table",TMP_Lexer_emit_table_45=function $$emit_table(table,s,e){var self=this,value=nil;if(s==null){s=self.ts}if(e==null){e=self.te}value=self.$tok(s,e);return self.$emit(table["$[]"](value),value,s,e)},TMP_Lexer_emit_table_45.$$arity=-2);Opal.defn(self,"$emit_do",TMP_Lexer_emit_do_46=function $$emit_do(do_block){var $a,self=this;if(do_block==null){do_block=false}if($truthy(self.cond["$active?"]())){return self.$emit("kDO_COND","do".$freeze())}else if($truthy($truthy($a=self.cmdarg["$active?"]())?$a:do_block)){return self.$emit("kDO_BLOCK","do".$freeze())}else{return self.$emit("kDO","do".$freeze())}},TMP_Lexer_emit_do_46.$$arity=-1);Opal.defn(self,"$arg_or_cmdarg",TMP_Lexer_arg_or_cmdarg_47=function $$arg_or_cmdarg(){var self=this;if($truthy(self.command_state)){return self.$class().$lex_en_expr_cmdarg()}else{return self.$class().$lex_en_expr_arg()}},TMP_Lexer_arg_or_cmdarg_47.$$arity=0);Opal.defn(self,"$emit_comment",TMP_Lexer_emit_comment_48=function $$emit_comment(s,e){var self=this;if(s==null){s=self.ts}if(e==null){e=self.te}if($truthy(self.comments)){self.comments.$push(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Source"),"Comment").$new(self.$range(s,e)))}if($truthy(self.tokens)){self.tokens.$push(["tCOMMENT",[self.$tok(s,e),self.$range(s,e)]])}return nil},TMP_Lexer_emit_comment_48.$$arity=-1);Opal.defn(self,"$diagnostic",TMP_Lexer_diagnostic_49=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(arguments$==null){arguments$=nil}if(location==null){location=self.$range()}if(highlights==null){highlights=[]}return self.diagnostics.$process(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))},TMP_Lexer_diagnostic_49.$$arity=-3);Opal.defn(self,"$push_literal",TMP_Lexer_push_literal_50=function $$push_literal($a_rest){var $b,self=this,args,new_literal=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}new_literal=$send(Opal.const_get_relative($nesting,"Literal"),"new",[self].concat(Opal.to_a(args)));self.literal_stack.$push(new_literal);if($truthy($truthy($b=new_literal["$words?"]())?new_literal["$backslash_delimited?"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited_words()}else{return self.$class().$lex_en_plain_backslash_delimited_words()}}else if($truthy($truthy($b=new_literal["$words?"]())?new_literal["$backslash_delimited?"]()["$!"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_words()}else{return self.$class().$lex_en_plain_words()}}else if($truthy($truthy($b=new_literal["$words?"]()["$!"]())?new_literal["$backslash_delimited?"]():$b)){if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_backslash_delimited()}else{return self.$class().$lex_en_plain_backslash_delimited()}}else if($truthy(new_literal["$interpolate?"]())){return self.$class().$lex_en_interp_string()}else{return self.$class().$lex_en_plain_string()}},TMP_Lexer_push_literal_50.$$arity=-1);Opal.defn(self,"$literal",TMP_Lexer_literal_51=function $$literal(){var self=this;return self.literal_stack.$last()},TMP_Lexer_literal_51.$$arity=0);Opal.defn(self,"$pop_literal",TMP_Lexer_pop_literal_52=function $$pop_literal(){var self=this,old_literal=nil;old_literal=self.literal_stack.$pop();self.dedent_level=old_literal.$dedent_level();if(old_literal.$type()["$=="]("tREGEXP_BEG")){return self.$class().$lex_en_regexp_modifiers()}else{return self.$class().$lex_en_expr_end()}},TMP_Lexer_pop_literal_52.$$arity=0);Opal.const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"}));Opal.const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"}));Opal.const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"}));Opal.const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED"}));return $send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(TMP_Lexer_53=function(keyword){var self=TMP_Lexer_53.$$s||this;if(keyword==null)keyword=nil;$writer=[keyword,($writer=[keyword,""+"k"+keyword.$upcase()],$send(Opal.const_get_relative($nesting,"KEYWORDS"),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])];$send(Opal.const_get_relative($nesting,"KEYWORDS_BEGIN"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_Lexer_53.$$s=self,TMP_Lexer_53.$$arity=1,TMP_Lexer_53))}(Opal.const_get_relative($nesting,"Parser"),null,$nesting)};Opal.modules["parser/lexer/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$attr_reader","$attr_accessor","$coerce_encoding","$include?","$send","$+","$[]","$fetch","$==","$!","$heredoc?","$start_with?","$freeze","$clear_buffer","$emit_start_tok","$type","$words?","$=~","$delimiter?","$-","$extend_space","$!=","$flush_string","$emit","$each_char","$===","$%","$nil?","$>","$empty?","$extend_content","$protected","$lstrip","$force_encoding","$dup","$encoding","$source","$source_buffer","$length"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Literal(){}var self=$Literal=$klass($base,$super,"Literal",$Literal);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Literal_initialize_1,TMP_Literal_interpolate$q_2,TMP_Literal_words$q_3,TMP_Literal_regexp$q_4,TMP_Literal_heredoc$q_5,TMP_Literal_backslash_delimited$q_6,TMP_Literal_type_7,TMP_Literal_munge_escape$q_8,TMP_Literal_nest_and_try_closing_9,TMP_Literal_infer_indent_level_11,TMP_Literal_start_interp_brace_12,TMP_Literal_end_interp_brace_and_try_closing_13,TMP_Literal_extend_string_14,TMP_Literal_flush_string_15,TMP_Literal_extend_content_16,TMP_Literal_extend_space_17,TMP_Literal_delimiter$q_18,TMP_Literal_coerce_encoding_19,TMP_Literal_clear_buffer_20,TMP_Literal_emit_start_tok_21,TMP_Literal_emit_22;def.lexer=def.start_tok=def.str_type=def.monolithic=def.interpolate=def.heredoc_e=def.end_delim=def.start_delim=def.nesting=def.label_allowed=def.buffer=def.str_s=def.dedent_body=def.interp_braces=def.buffer_s=def.buffer_e=def.space_emitted=def.indent=nil;Opal.const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":")".$force_encoding("ASCII-8BIT"),"[":"]".$force_encoding("ASCII-8BIT"),"{":"}".$force_encoding("ASCII-8BIT"),"<":">".$force_encoding("ASCII-8BIT")}));Opal.const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",false],"<<'":["tSTRING_BEG",false],"%q":["tSTRING_BEG",false],'"':["tSTRING_BEG",true],'<<"':["tSTRING_BEG",true],"%":["tSTRING_BEG",true],"%Q":["tSTRING_BEG",true],"%w":["tQWORDS_BEG",false],"%W":["tWORDS_BEG",true],"%i":["tQSYMBOLS_BEG",false],"%I":["tSYMBOLS_BEG",true],":'":["tSYMBEG",false],"%s":["tSYMBEG",false],':"':["tSYMBEG",true],"/":["tREGEXP_BEG",true],"%r":["tREGEXP_BEG",true],"%x":["tXSTRING_BEG",true],"`":["tXSTRING_BEG",true],"<<`":["tXSTRING_BEG",true]}));self.$attr_reader("heredoc_e","str_s","dedent_level");self.$attr_accessor("saved_herebody_s");Opal.defn(self,"$initialize",TMP_Literal_initialize_1=function $$initialize(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,self=this;if(heredoc_e==null){heredoc_e=nil}if(indent==null){indent=false}if(dedent_body==null){dedent_body=false}if(label_allowed==null){label_allowed=false}self.lexer=lexer;self.nesting=1;str_type=self.$coerce_encoding(str_type);delimiter=self.$coerce_encoding(delimiter);if($truthy(Opal.const_get_relative($nesting,"TYPES")["$include?"](str_type))){}else{lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),self.lexer.$send("range",str_s,$rb_plus(str_s,2)))}self.str_type=str_type;self.str_s=str_s;$b=Opal.const_get_relative($nesting,"TYPES")["$[]"](str_type),$a=Opal.to_ary($b),self.start_tok=$a[0]==null?nil:$a[0],self.interpolate=$a[1]==null?nil:$a[1],$b;self.start_delim=function(){if($truthy(Opal.const_get_relative($nesting,"DELIMITERS")["$include?"](delimiter))){return delimiter}else{return nil}return nil}();self.end_delim=Opal.const_get_relative($nesting,"DELIMITERS").$fetch(delimiter,delimiter);self.heredoc_e=heredoc_e;self.indent=indent;self.label_allowed=label_allowed;self.dedent_body=dedent_body;self.dedent_level=nil;self.interp_braces=0;self.space_emitted=true;self.monolithic=$truthy($a=($b=self.start_tok["$=="]("tSTRING_BEG"))?["'".$force_encoding("ASCII-8BIT"),'"'.$force_encoding("ASCII-8BIT")]["$include?"](str_type):self.start_tok["$=="]("tSTRING_BEG"))?self["$heredoc?"]()["$!"]():$a;if($truthy(self.str_type["$start_with?"]("%".$force_encoding("ASCII-8BIT").$freeze()))){self.str_type=$rb_plus(self.str_type,delimiter)}self.$clear_buffer();if($truthy(self.monolithic)){return nil}else{return self.$emit_start_tok()}},TMP_Literal_initialize_1.$$arity=-5);Opal.defn(self,"$interpolate?",TMP_Literal_interpolate$q_2=function(){var self=this;return self.interpolate},TMP_Literal_interpolate$q_2.$$arity=0);Opal.defn(self,"$words?",TMP_Literal_words$q_3=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.$type()["$=="]("tWORDS_BEG"))?$c:self.$type()["$=="]("tQWORDS_BEG"))?$b:self.$type()["$=="]("tSYMBOLS_BEG"))?$a:self.$type()["$=="]("tQSYMBOLS_BEG")},TMP_Literal_words$q_3.$$arity=0);Opal.defn(self,"$regexp?",TMP_Literal_regexp$q_4=function(){var self=this;return self.$type()["$=="]("tREGEXP_BEG")},TMP_Literal_regexp$q_4.$$arity=0);Opal.defn(self,"$heredoc?",TMP_Literal_heredoc$q_5=function(){var self=this;return self.heredoc_e["$!"]()["$!"]()},TMP_Literal_heredoc$q_5.$$arity=0);Opal.defn(self,"$backslash_delimited?",TMP_Literal_backslash_delimited$q_6=function(){var self=this;return self.end_delim["$=="]("\\".$force_encoding("ASCII-8BIT").$freeze())},TMP_Literal_backslash_delimited$q_6.$$arity=0);Opal.defn(self,"$type",TMP_Literal_type_7=function $$type(){var self=this;return self.start_tok},TMP_Literal_type_7.$$arity=0);Opal.defn(self,"$munge_escape?",TMP_Literal_munge_escape$q_8=function(character){var $a,self=this;character=self.$coerce_encoding(character);if($truthy($truthy($a=self["$words?"]())?character["$=~"](/[ \t\v\r\f\n]/):$a)){return true}else{return["\\".$force_encoding("ASCII-8BIT").$freeze(),self.start_delim,self.end_delim]["$include?"](character)}},TMP_Literal_munge_escape$q_8.$$arity=1);Opal.defn(self,"$nest_and_try_closing",TMP_Literal_nest_and_try_closing_9=function $$nest_and_try_closing(delimiter,ts,te,lookahead){var $a,$b,$c,$d,self=this;if(lookahead==null){lookahead=nil}delimiter=self.$coerce_encoding(delimiter);if($truthy($truthy($a=self.start_delim)?self.start_delim["$=="](delimiter):$a)){self.nesting=$rb_plus(self.nesting,1)}else if($truthy(self["$delimiter?"](delimiter))){self.nesting=$rb_minus(self.nesting,1)}if(self.nesting["$=="](0)){if($truthy(self["$words?"]())){self.$extend_space(ts,ts)}if($truthy($truthy($a=$truthy($b=$truthy($c=$truthy($d=lookahead)?self.label_allowed:$d)?lookahead["$[]"](0)["$=="](":".$force_encoding("ASCII-8BIT")):$c)?lookahead["$[]"](1)["$!="](":".$force_encoding("ASCII-8BIT")):$b)?self.start_tok["$=="]("tSTRING_BEG"):$a)){self.$flush_string();return self.$emit("tLABEL_END",self.end_delim,ts,$rb_plus(te,1))}else if($truthy(self.monolithic)){return self.$emit("tSTRING",self.buffer,self.str_s,te)}else{if($truthy(self["$heredoc?"]())){}else{self.$flush_string()}return self.$emit("tSTRING_END",self.end_delim,ts,te)}}else{return nil}},TMP_Literal_nest_and_try_closing_9.$$arity=-4);Opal.defn(self,"$infer_indent_level",TMP_Literal_infer_indent_level_11=function $$infer_indent_level(line){var TMP_10,self=this,indent_level=nil;if($truthy(self.dedent_body["$!"]())){return nil}indent_level=0;return function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(TMP_10=function(char$){var self=TMP_10.$$s||this,$a,$case=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null)char$=nil;return function(){$case=char$;if(" "["$==="]($case)){return indent_level=$rb_plus(indent_level,1)}else if("\t"["$==="]($case)){return indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8)))}else{if($truthy($truthy($a=self.dedent_level["$nil?"]())?$a:$rb_gt(self.dedent_level,indent_level))){self.dedent_level=indent_level}Opal.brk(nil,$brk)}}()},TMP_10.$$s=self,TMP_10.$$brk=$brk,TMP_10.$$arity=1,TMP_10))}catch(err){if(err===$brk){return err.$v}else{throw err}}}()},TMP_Literal_infer_indent_level_11.$$arity=1);Opal.defn(self,"$start_interp_brace",TMP_Literal_start_interp_brace_12=function $$start_interp_brace(){var self=this;return self.interp_braces=$rb_plus(self.interp_braces,1)},TMP_Literal_start_interp_brace_12.$$arity=0);Opal.defn(self,"$end_interp_brace_and_try_closing",TMP_Literal_end_interp_brace_and_try_closing_13=function $$end_interp_brace_and_try_closing(){var self=this;self.interp_braces=$rb_minus(self.interp_braces,1);return self.interp_braces["$=="](0)},TMP_Literal_end_interp_brace_and_try_closing_13.$$arity=0);Opal.defn(self,"$extend_string",TMP_Literal_extend_string_14=function $$extend_string(string,ts,te){var $a,self=this;self.buffer_s=$truthy($a=self.buffer_s)?$a:ts;self.buffer_e=te;return self.buffer=$rb_plus(self.buffer,string)},TMP_Literal_extend_string_14.$$arity=3);Opal.defn(self,"$flush_string",TMP_Literal_flush_string_15=function $$flush_string(){var self=this;if($truthy(self.monolithic)){self.$emit_start_tok();self.monolithic=false}if($truthy(self.buffer["$empty?"]())){return nil}else{self.$emit("tSTRING_CONTENT",self.buffer,self.buffer_s,self.buffer_e);self.$clear_buffer();return self.$extend_content()}},TMP_Literal_flush_string_15.$$arity=0);Opal.defn(self,"$extend_content",TMP_Literal_extend_content_16=function $$extend_content(){var self=this;return self.space_emitted=false},TMP_Literal_extend_content_16.$$arity=0);Opal.defn(self,"$extend_space",TMP_Literal_extend_space_17=function $$extend_space(ts,te){var self=this;self.$flush_string();if($truthy(self.space_emitted)){return nil}else{self.$emit("tSPACE",nil,ts,te);return self.space_emitted=true}},TMP_Literal_extend_space_17.$$arity=2);self.$protected();Opal.defn(self,"$delimiter?",TMP_Literal_delimiter$q_18=function(delimiter){var self=this;if($truthy(self.indent)){return self.end_delim["$=="](delimiter.$lstrip())}else{return self.end_delim["$=="](delimiter)}},TMP_Literal_delimiter$q_18.$$arity=1);Opal.defn(self,"$coerce_encoding",TMP_Literal_coerce_encoding_19=function $$coerce_encoding(string){var $a,self=this;if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){return string.$dup().$force_encoding(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))}else{return string}},TMP_Literal_coerce_encoding_19.$$arity=1);Opal.defn(self,"$clear_buffer",TMP_Literal_clear_buffer_20=function $$clear_buffer(){var $a,self=this;self.buffer="".$force_encoding("ASCII-8BIT");if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding())}self.buffer_s=nil;return self.buffer_e=nil},TMP_Literal_clear_buffer_20.$$arity=0);Opal.defn(self,"$emit_start_tok",TMP_Literal_emit_start_tok_21=function $$emit_start_tok(){var $a,self=this,str_e=nil;str_e=$truthy($a=self.heredoc_e)?$a:$rb_plus(self.str_s,self.str_type.$length());return self.$emit(self.start_tok,self.str_type,self.str_s,str_e)},TMP_Literal_emit_start_tok_21.$$arity=0);return(Opal.defn(self,"$emit",TMP_Literal_emit_22=function $$emit(token,type,s,e){var self=this;return self.lexer.$send("emit",token,type,s,e)},TMP_Literal_emit_22.$$arity=4),nil)&&"emit"})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/stack_state"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$freeze","$clear","$|","$<<","$&","$>>","$==","$push","$pop","$[]","$to_s"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $StackState(){}var self=$StackState=$klass($base,$super,"StackState",$StackState);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StackState_initialize_1,TMP_StackState_clear_2,TMP_StackState_push_3,TMP_StackState_pop_4,TMP_StackState_lexpop_5,TMP_StackState_active$q_6,TMP_StackState_to_s_7;def.stack=def.name=nil;Opal.defn(self,"$initialize",TMP_StackState_initialize_1=function $$initialize(name){var self=this;self.name=name.$freeze();return self.$clear()},TMP_StackState_initialize_1.$$arity=1);Opal.defn(self,"$clear",TMP_StackState_clear_2=function $$clear(){var self=this;return self.stack=0},TMP_StackState_clear_2.$$arity=0);Opal.defn(self,"$push",TMP_StackState_push_3=function $$push(bit){var self=this,bit_value=nil;bit_value=function(){if($truthy(bit)){return 1}else{return 0}return nil}();self.stack=self.stack["$<<"](1)["$|"](bit_value);return bit},TMP_StackState_push_3.$$arity=1);Opal.defn(self,"$pop",TMP_StackState_pop_4=function $$pop(){var self=this,bit_value=nil;bit_value=self.stack["$&"](1);self.stack=self.stack["$>>"](1);return bit_value["$=="](1)},TMP_StackState_pop_4.$$arity=0);Opal.defn(self,"$lexpop",TMP_StackState_lexpop_5=function $$lexpop(){var $a,self=this;return self.$push($truthy($a=self.$pop())?$a:self.$pop())},TMP_StackState_lexpop_5.$$arity=0);Opal.defn(self,"$active?",TMP_StackState_active$q_6=function(){var self=this;return self.stack["$[]"](0)["$=="](1)},TMP_StackState_active$q_6.$$arity=0);Opal.defn(self,"$to_s",TMP_StackState_to_s_7=function $$to_s(){var self=this;return""+"["+self.stack.$to_s(2)+" <= "+self.name+"]"},TMP_StackState_to_s_7.$$arity=0);return Opal.alias(self,"inspect","to_s")})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/lexer/dedenter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$-","$length","$each_with_index","$chars","$==","$>=","$slice!","$+","$===","$%"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Dedenter(){}var self=$Dedenter=$klass($base,$super,"Dedenter",$Dedenter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Dedenter_initialize_1,TMP_Dedenter_dedent_3,TMP_Dedenter_interrupt_4;def.at_line_begin=nil;Opal.defn(self,"$initialize",TMP_Dedenter_initialize_1=function $$initialize(dedent_level){var self=this;self.dedent_level=dedent_level;self.at_line_begin=true;return self.indent_level=0},TMP_Dedenter_initialize_1.$$arity=1);Opal.defn(self,"$dedent",TMP_Dedenter_dedent_3=function $$dedent(string){var TMP_2,self=this,space_begin=nil,space_end=nil,offset=nil,last_index=nil;space_begin=space_end=offset=0;last_index=$rb_minus(string.$length(),1);$send(string.$chars(),"each_with_index",[],(TMP_2=function(char$,index){var self=TMP_2.$$s||this,$a,$case=nil;if(self.at_line_begin==null)self.at_line_begin=nil;if(self.indent_level==null)self.indent_level=nil;if(self.dedent_level==null)self.dedent_level=nil;if(char$==null)char$=nil;if(index==null)index=nil;if($truthy(self.at_line_begin)){if($truthy($truthy($a=char$["$=="]("\n"))?$a:$rb_ge(self.indent_level,self.dedent_level))){string["$slice!"](Opal.Range.$new(space_begin,space_end,true));offset=$rb_plus(offset,$rb_minus($rb_minus(space_end,space_begin),1));self.at_line_begin=false;if(char$["$=="]("\n")){return TMP_2.apply(null,$slice.call(arguments))}}return function(){$case=char$;if(" "["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,1);return space_end=$rb_plus(space_end,1)}else if("\t"["$==="]($case)){self.indent_level=$rb_plus(self.indent_level,$rb_minus(8,self.indent_level["$%"](8)));return space_end=$rb_plus(space_end,1)}else{return nil}}()}else if($truthy(($a=char$["$=="]("\n"))?index["$=="](last_index):char$["$=="]("\n"))){self.at_line_begin=true;self.indent_level=0;return space_begin=space_end=$rb_plus($rb_minus(index,offset),1)}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2));if($truthy(self.at_line_begin)){string["$slice!"](Opal.Range.$new(space_begin,space_end,false))}return nil},TMP_Dedenter_dedent_3.$$arity=1);return(Opal.defn(self,"$interrupt",TMP_Dedenter_interrupt_4=function $$interrupt(){var self=this;return self.at_line_begin=false},TMP_Dedenter_interrupt_4.$$arity=0),nil)&&"interrupt"})(Opal.const_get_relative($nesting,"Lexer"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/builders/default"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$attr_accessor","$n0","$token_map","$numeric","$n","$value","$new","$loc","$private","$updated","$-@","$join","$expression","$string_value","$delimited_string_map","$unquoted_map","$collapse_string_parts?","$nil?","$first","$children","$string_map","$prefix_string_map","$to_sym","$collection_map","$==","$version","$empty?","$diagnostic","$!","$type","$dedent","$each","$interrupt","$map","$uniq","$sort","$each_char","$to_proc","$static_regexp","$message","$<<","$regexp_map","$unary_op_map","$===","$binary_op_map","$!=","$%","$size","$last","$each_slice","$pair_keyword_map","$pair_quoted_map","$symbol_compose","$variable_map","$name","$source_buffer","$dup","$line","$declared?","$static_env","$var_send_map","$constant_map","$in_def?","$declare","$with_expression","$with_operator","$join_exprs","$[]","$module_definition_map","$definition_map","$keyword_map","$check_duplicate_args","$arg_prefix_map","$kwarg_map","$emit_procarg0","$class","$resize","$-","$end","$call_type_for_dot","$send_map","$emit_lambda","$expr_map","$keyword","$include?","$block_map","$array","$+","$send_index_map","$send_binary_op_map","$static_regexp_node","$names","$send_unary_op_map","$check_condition","$condition_map","$keyword_mod_map","$ternary_map","$for_map","$>","$count","$rescue_body_map","$any?","$eh_keyword_map","$push","$none?","$one?","$begin","$<=","$[]=","$arg_name_collides?","$begin_pos","$end_pos","$start_with?","$static_string","$encode","$valid_encoding?","$process","$diagnostics","$send"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Default(){}var self=$Default=$klass($base,$super,"Default",$Default);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Default_initialize_2,TMP_Default_nil_3,TMP_Default_true_4,TMP_Default_false_5,TMP_Default_integer_6,TMP_Default_float_7,TMP_Default_rational_8,TMP_Default_complex_9,TMP_Default_numeric_10,TMP_Default_negate_11,TMP_Default___LINE___12,TMP_Default_string_13,TMP_Default_string_internal_14,TMP_Default_string_compose_15,TMP_Default_character_16,TMP_Default___FILE___17,TMP_Default_symbol_18,TMP_Default_symbol_internal_19,TMP_Default_symbol_compose_20,TMP_Default_xstring_compose_21,TMP_Default_dedent_string_23,TMP_Default_regexp_options_24,TMP_Default_regexp_compose_25,TMP_Default_array_26,TMP_Default_splat_27,TMP_Default_word_28,TMP_Default_words_compose_29,TMP_Default_symbols_compose_31,TMP_Default_pair_32,TMP_Default_pair_list_18_34,TMP_Default_pair_keyword_35,TMP_Default_pair_quoted_36,TMP_Default_kwsplat_37,TMP_Default_associate_38,TMP_Default_range_inclusive_39,TMP_Default_range_exclusive_40,TMP_Default_self_41,TMP_Default_ident_42,TMP_Default_ivar_43,TMP_Default_gvar_44,TMP_Default_cvar_45,TMP_Default_back_ref_46,TMP_Default_nth_ref_47,TMP_Default_accessible_48,TMP_Default_const_49,TMP_Default_const_global_50,TMP_Default_const_fetch_51,TMP_Default___ENCODING___52,TMP_Default_assignable_53,TMP_Default_const_op_assignable_54,TMP_Default_assign_55,TMP_Default_op_assign_56,TMP_Default_multi_lhs_57,TMP_Default_multi_assign_58,TMP_Default_def_class_59,TMP_Default_def_sclass_60,TMP_Default_def_module_61,TMP_Default_def_method_62,TMP_Default_def_singleton_63,TMP_Default_undef_method_64,TMP_Default_alias_65,TMP_Default_args_66,TMP_Default_arg_67,TMP_Default_optarg_68,TMP_Default_restarg_69,TMP_Default_kwarg_70,TMP_Default_kwoptarg_71,TMP_Default_kwrestarg_72,TMP_Default_shadowarg_73,TMP_Default_blockarg_74,TMP_Default_procarg0_75,TMP_Default_arg_expr_76,TMP_Default_restarg_expr_77,TMP_Default_blockarg_expr_78,TMP_Default_objc_kwarg_79,TMP_Default_objc_restarg_80,TMP_Default_call_type_for_dot_81,TMP_Default_call_method_82,TMP_Default_call_lambda_83,TMP_Default_block_84,TMP_Default_block_pass_85,TMP_Default_objc_varargs_86,TMP_Default_attr_asgn_87,TMP_Default_index_88,TMP_Default_index_asgn_89,TMP_Default_binary_op_90,TMP_Default_match_op_92,TMP_Default_unary_op_93,TMP_Default_not_op_94,TMP_Default_logical_op_95,TMP_Default_condition_96,TMP_Default_condition_mod_97,TMP_Default_ternary_98,TMP_Default_when_99,TMP_Default_case_100,TMP_Default_loop_101,TMP_Default_loop_mod_102,TMP_Default_for_103,TMP_Default_keyword_cmd_104,TMP_Default_preexe_105,TMP_Default_postexe_106,TMP_Default_rescue_body_107,TMP_Default_begin_body_108,TMP_Default_compstmt_109,TMP_Default_begin_110,TMP_Default_begin_keyword_111,TMP_Default_check_condition_112,TMP_Default_check_duplicate_args_114,TMP_Default_arg_name_collides$q_115,TMP_Default_n_116,TMP_Default_n0_117,TMP_Default_join_exprs_118,TMP_Default_token_map_119,TMP_Default_delimited_string_map_120,TMP_Default_prefix_string_map_121,TMP_Default_unquoted_map_122,TMP_Default_pair_keyword_map_123,TMP_Default_pair_quoted_map_124,TMP_Default_expr_map_125,TMP_Default_collection_map_126,TMP_Default_string_map_127,TMP_Default_regexp_map_128,TMP_Default_constant_map_129,TMP_Default_variable_map_130,TMP_Default_binary_op_map_131,TMP_Default_unary_op_map_132,TMP_Default_arg_prefix_map_133,TMP_Default_kwarg_map_134,TMP_Default_module_definition_map_135,TMP_Default_definition_map_136,TMP_Default_send_map_137,TMP_Default_var_send_map_138,TMP_Default_send_binary_op_map_139,TMP_Default_send_unary_op_map_140,TMP_Default_send_index_map_141,TMP_Default_block_map_142,TMP_Default_keyword_map_143,TMP_Default_keyword_mod_map_144,TMP_Default_condition_map_145,TMP_Default_ternary_map_146,TMP_Default_for_map_147,TMP_Default_rescue_body_map_148,TMP_Default_eh_keyword_map_149,TMP_Default_static_string_151,TMP_Default_static_regexp_152,TMP_Default_static_regexp_node_153,TMP_Default_collapse_string_parts$q_154,TMP_Default_value_155,$a,TMP_Default_string_value_156,TMP_Default_loc_157,TMP_Default_diagnostic_158;def.parser=def.emit_file_line_as_literals=nil;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_lambda")})(Opal.get_singleton_class(self),$nesting);self.emit_lambda=false;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$attr_accessor("emit_procarg0")})(Opal.get_singleton_class(self),$nesting);self.emit_procarg0=false;(function(self,$parent_nesting){var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_modernize_1;return(Opal.defn(self,"$modernize",TMP_modernize_1=function $$modernize(){var self=this;self.emit_lambda=true;return self.emit_procarg0=true},TMP_modernize_1.$$arity=0),nil)&&"modernize"})(Opal.get_singleton_class(self),$nesting);self.$attr_accessor("parser");self.$attr_accessor("emit_file_line_as_literals");Opal.defn(self,"$initialize",TMP_Default_initialize_2=function $$initialize(){var self=this;return self.emit_file_line_as_literals=true},TMP_Default_initialize_2.$$arity=0);Opal.defn(self,"$nil",TMP_Default_nil_3=function $$nil(nil_t){var self=this;return self.$n0("nil",self.$token_map(nil_t))},TMP_Default_nil_3.$$arity=1);Opal.defn(self,"$true",TMP_Default_true_4=function(true_t){var self=this;return self.$n0("true",self.$token_map(true_t))},TMP_Default_true_4.$$arity=1);Opal.defn(self,"$false",TMP_Default_false_5=function(false_t){var self=this;return self.$n0("false",self.$token_map(false_t))},TMP_Default_false_5.$$arity=1);Opal.defn(self,"$integer",TMP_Default_integer_6=function $$integer(integer_t){var self=this;return self.$numeric("int",integer_t)},TMP_Default_integer_6.$$arity=1);Opal.defn(self,"$float",TMP_Default_float_7=function(float_t){var self=this;return self.$numeric("float",float_t)},TMP_Default_float_7.$$arity=1);Opal.defn(self,"$rational",TMP_Default_rational_8=function $$rational(rational_t){var self=this;return self.$numeric("rational",rational_t)},TMP_Default_rational_8.$$arity=1);Opal.defn(self,"$complex",TMP_Default_complex_9=function $$complex(complex_t){var self=this;return self.$numeric("complex",complex_t)},TMP_Default_complex_9.$$arity=1);Opal.defn(self,"$numeric",TMP_Default_numeric_10=function $$numeric(kind,token){var self=this;return self.$n(kind,[self.$value(token)],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(nil,self.$loc(token)))},TMP_Default_numeric_10.$$arity=2);self.$private("numeric");Opal.defn(self,"$negate",TMP_Default_negate_11=function $$negate(uminus_t,numeric){var $a,self=this,value=nil,operator_loc=nil;$a=[].concat(Opal.to_a(numeric)),value=$a[0]==null?nil:$a[0],$a;operator_loc=self.$loc(uminus_t);return numeric.$updated(nil,[value["$-@"]()],$hash2(["location"],{location:Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))},TMP_Default_negate_11.$$arity=2);Opal.defn(self,"$__LINE__",TMP_Default___LINE___12=function $$__LINE__(__LINE__t){var self=this;return self.$n0("__LINE__",self.$token_map(__LINE__t))},TMP_Default___LINE___12.$$arity=1);Opal.defn(self,"$string",TMP_Default_string_13=function $$string(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$delimited_string_map(string_t))},TMP_Default_string_13.$$arity=1);Opal.defn(self,"$string_internal",TMP_Default_string_internal_14=function $$string_internal(string_t){var self=this;return self.$n("str",[self.$string_value(string_t)],self.$unquoted_map(string_t))},TMP_Default_string_internal_14.$$arity=1);Opal.defn(self,"$string_compose",TMP_Default_string_compose_15=function $$string_compose(begin_t,parts,end_t){var $a,self=this;if($truthy(self["$collapse_string_parts?"](parts))){if($truthy($truthy($a=begin_t["$nil?"]())?end_t["$nil?"]():$a)){return parts.$first()}else{return self.$n("str",parts.$first().$children(),self.$string_map(begin_t,parts,end_t))}}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))}},TMP_Default_string_compose_15.$$arity=3);Opal.defn(self,"$character",TMP_Default_character_16=function $$character(char_t){var self=this;return self.$n("str",[self.$string_value(char_t)],self.$prefix_string_map(char_t))},TMP_Default_character_16.$$arity=1);Opal.defn(self,"$__FILE__",TMP_Default___FILE___17=function $$__FILE__(__FILE__t){var self=this;return self.$n0("__FILE__",self.$token_map(__FILE__t))},TMP_Default___FILE___17.$$arity=1);Opal.defn(self,"$symbol",TMP_Default_symbol_18=function $$symbol(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$prefix_string_map(symbol_t))},TMP_Default_symbol_18.$$arity=1);Opal.defn(self,"$symbol_internal",TMP_Default_symbol_internal_19=function $$symbol_internal(symbol_t){var self=this;return self.$n("sym",[self.$string_value(symbol_t).$to_sym()],self.$unquoted_map(symbol_t))},TMP_Default_symbol_internal_19.$$arity=1);Opal.defn(self,"$symbol_compose",TMP_Default_symbol_compose_20=function $$symbol_compose(begin_t,parts,end_t){var $a,self=this,str=nil;if($truthy(self["$collapse_string_parts?"](parts))){str=parts.$first();return self.$n("sym",[str.$children().$first().$to_sym()],self.$collection_map(begin_t,str.$loc().$expression(),end_t))}else if($truthy(($a=self.parser.$version()["$=="](18))?parts["$empty?"]():self.parser.$version()["$=="](18))){return self.$diagnostic("error","empty_symbol",nil,self.$loc(begin_t).$join(self.$loc(end_t)))}else{return self.$n("dsym",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))}},TMP_Default_symbol_compose_20.$$arity=3);Opal.defn(self,"$xstring_compose",TMP_Default_xstring_compose_21=function $$xstring_compose(begin_t,parts,end_t){var self=this;return self.$n("xstr",[].concat(Opal.to_a(parts)),self.$string_map(begin_t,parts,end_t))},TMP_Default_xstring_compose_21.$$arity=3);Opal.defn(self,"$dedent_string",TMP_Default_dedent_string_23=function $$dedent_string(node,dedent_level){var $a,TMP_22,self=this,dedenter=nil,str=nil;if($truthy(dedent_level["$nil?"]()["$!"]())){dedenter=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Lexer"),"Dedenter").$new(dedent_level);if(node.$type()["$=="]("str")){str=node.$children().$first();dedenter.$dedent(str)}else if($truthy($truthy($a=node.$type()["$=="]("dstr"))?$a:node.$type()["$=="]("xstr"))){$send(node.$children(),"each",[],(TMP_22=function(str_node){var self=TMP_22.$$s||this;if(str_node==null)str_node=nil;if(str_node.$type()["$=="]("str")){str=str_node.$children().$first();return dedenter.$dedent(str)}else{return dedenter.$interrupt()}},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))}}return node},TMP_Default_dedent_string_23.$$arity=2);Opal.defn(self,"$regexp_options",TMP_Default_regexp_options_24=function $$regexp_options(regopt_t){var self=this,options=nil;options=$send(self.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc());return self.$n("regopt",options,self.$token_map(regopt_t))},TMP_Default_regexp_options_24.$$arity=1);Opal.defn(self,"$regexp_compose",TMP_Default_regexp_compose_25=function $$regexp_compose(begin_t,parts,end_t,options){var self=this,e=nil;try{self.$static_regexp(parts,options)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"RegexpError")])){e=$err;try{self.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),self.$loc(begin_t).$join(self.$loc(end_t)))}finally{Opal.pop_exception()}}else{throw $err}}return self.$n("regexp",parts["$<<"](options),self.$regexp_map(begin_t,end_t,options))},TMP_Default_regexp_compose_25.$$arity=4);Opal.defn(self,"$array",TMP_Default_array_26=function $$array(begin_t,elements,end_t){var self=this;return self.$n("array",elements,self.$collection_map(begin_t,elements,end_t))},TMP_Default_array_26.$$arity=3);Opal.defn(self,"$splat",TMP_Default_splat_27=function $$splat(star_t,arg){var self=this;if(arg==null){arg=nil}if($truthy(arg["$nil?"]())){return self.$n0("splat",self.$unary_op_map(star_t))}else{return self.$n("splat",[arg],self.$unary_op_map(star_t,arg))}},TMP_Default_splat_27.$$arity=-2);Opal.defn(self,"$word",TMP_Default_word_28=function $$word(parts){var self=this;if($truthy(self["$collapse_string_parts?"](parts))){return parts.$first()}else{return self.$n("dstr",[].concat(Opal.to_a(parts)),self.$collection_map(nil,parts,nil))}},TMP_Default_word_28.$$arity=1);Opal.defn(self,"$words_compose",TMP_Default_words_compose_29=function $$words_compose(begin_t,parts,end_t){var self=this;return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},TMP_Default_words_compose_29.$$arity=3);Opal.defn(self,"$symbols_compose",TMP_Default_symbols_compose_31=function $$symbols_compose(begin_t,parts,end_t){var TMP_30,self=this;parts=$send(parts,"map",[],(TMP_30=function(part){var self=TMP_30.$$s||this,$a,$case=nil,value=nil;if(part==null)part=nil;return function(){$case=part.$type();if("str"["$==="]($case)){$a=[].concat(Opal.to_a(part)),value=$a[0]==null?nil:$a[0],$a;return part.$updated("sym",[value.$to_sym()])}else if("dstr"["$==="]($case)){return part.$updated("dsym")}else{return part}}()},TMP_30.$$s=self,TMP_30.$$arity=1,TMP_30));return self.$n("array",[].concat(Opal.to_a(parts)),self.$collection_map(begin_t,parts,end_t))},TMP_Default_symbols_compose_31.$$arity=3);Opal.defn(self,"$pair",TMP_Default_pair_32=function $$pair(key,assoc_t,value){var self=this;return self.$n("pair",[key,value],self.$binary_op_map(key,assoc_t,value))},TMP_Default_pair_32.$$arity=3);Opal.defn(self,"$pair_list_18",TMP_Default_pair_list_18_34=function $$pair_list_18(list){var TMP_33,self=this;if($truthy(list.$size()["$%"](2)["$!="](0))){return self.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression())}else{return $send(list.$each_slice(2),"map",[],(TMP_33=function(key,value){var self=TMP_33.$$s||this;if(key==null)key=nil;if(value==null)value=nil;return self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))},TMP_33.$$s=self,TMP_33.$$arity=2,TMP_33))}},TMP_Default_pair_list_18_34.$$arity=1);Opal.defn(self,"$pair_keyword",TMP_Default_pair_keyword_35=function $$pair_keyword(key_t,value){var $a,$b,self=this,key_map=nil,pair_map=nil,key=nil;$b=self.$pair_keyword_map(key_t,value),$a=Opal.to_ary($b),key_map=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$n("sym",[self.$value(key_t).$to_sym()],key_map);return self.$n("pair",[key,value],pair_map)},TMP_Default_pair_keyword_35.$$arity=2);Opal.defn(self,"$pair_quoted",TMP_Default_pair_quoted_36=function $$pair_quoted(begin_t,parts,end_t,value){var $a,$b,self=this,pair_map=nil,key=nil;$b=self.$pair_quoted_map(begin_t,end_t,value),$a=Opal.to_ary($b),end_t=$a[0]==null?nil:$a[0],pair_map=$a[1]==null?nil:$a[1],$b;key=self.$symbol_compose(begin_t,parts,end_t);return self.$n("pair",[key,value],pair_map)},TMP_Default_pair_quoted_36.$$arity=4);Opal.defn(self,"$kwsplat",TMP_Default_kwsplat_37=function $$kwsplat(dstar_t,arg){var self=this;return self.$n("kwsplat",[arg],self.$unary_op_map(dstar_t,arg))},TMP_Default_kwsplat_37.$$arity=2);Opal.defn(self,"$associate",TMP_Default_associate_38=function $$associate(begin_t,pairs,end_t){var self=this;return self.$n("hash",[].concat(Opal.to_a(pairs)),self.$collection_map(begin_t,pairs,end_t))},TMP_Default_associate_38.$$arity=3);Opal.defn(self,"$range_inclusive",TMP_Default_range_inclusive_39=function $$range_inclusive(lhs,dot2_t,rhs){var self=this;return self.$n("irange",[lhs,rhs],self.$binary_op_map(lhs,dot2_t,rhs))},TMP_Default_range_inclusive_39.$$arity=3);Opal.defn(self,"$range_exclusive",TMP_Default_range_exclusive_40=function $$range_exclusive(lhs,dot3_t,rhs){var self=this;return self.$n("erange",[lhs,rhs],self.$binary_op_map(lhs,dot3_t,rhs))},TMP_Default_range_exclusive_40.$$arity=3);Opal.defn(self,"$self",TMP_Default_self_41=function $$self(token){var self=this;return self.$n0("self",self.$token_map(token))},TMP_Default_self_41.$$arity=1);Opal.defn(self,"$ident",TMP_Default_ident_42=function $$ident(token){var self=this;return self.$n("ident",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_ident_42.$$arity=1);Opal.defn(self,"$ivar",TMP_Default_ivar_43=function $$ivar(token){var self=this;return self.$n("ivar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_ivar_43.$$arity=1);Opal.defn(self,"$gvar",TMP_Default_gvar_44=function $$gvar(token){var self=this;return self.$n("gvar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_gvar_44.$$arity=1);Opal.defn(self,"$cvar",TMP_Default_cvar_45=function $$cvar(token){var self=this;return self.$n("cvar",[self.$value(token).$to_sym()],self.$variable_map(token))},TMP_Default_cvar_45.$$arity=1);Opal.defn(self,"$back_ref",TMP_Default_back_ref_46=function $$back_ref(token){var self=this;return self.$n("back_ref",[self.$value(token).$to_sym()],self.$token_map(token))},TMP_Default_back_ref_46.$$arity=1);Opal.defn(self,"$nth_ref",TMP_Default_nth_ref_47=function $$nth_ref(token){var self=this;return self.$n("nth_ref",[self.$value(token)],self.$token_map(token))},TMP_Default_nth_ref_47.$$arity=1);Opal.defn(self,"$accessible",TMP_Default_accessible_48=function $$accessible(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("__FILE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup())}else{return node}}else if("__LINE__"["$==="]($case)){if($truthy(self.emit_file_line_as_literals)){return self.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup())}else{return node}}else if("__ENCODING__"["$==="]($case)){return self.$n("const",[self.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup())}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;if($truthy(self.parser.$static_env()["$declared?"](name))){return node.$updated("lvar")}else{$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;return self.$n("send",[nil,name],self.$var_send_map(node))}}else{return node}}()},TMP_Default_accessible_48.$$arity=1);Opal.defn(self,"$const",TMP_Default_const_49=function(name_t){var self=this;return self.$n("const",[nil,self.$value(name_t).$to_sym()],self.$constant_map(nil,nil,name_t))},TMP_Default_const_49.$$arity=1);Opal.defn(self,"$const_global",TMP_Default_const_global_50=function $$const_global(t_colon3,name_t){var self=this,cbase=nil;cbase=self.$n0("cbase",self.$token_map(t_colon3));return self.$n("const",[cbase,self.$value(name_t).$to_sym()],self.$constant_map(cbase,t_colon3,name_t))},TMP_Default_const_global_50.$$arity=2);Opal.defn(self,"$const_fetch",TMP_Default_const_fetch_51=function $$const_fetch(scope,t_colon2,name_t){var self=this;return self.$n("const",[scope,self.$value(name_t).$to_sym()],self.$constant_map(scope,t_colon2,name_t))},TMP_Default_const_fetch_51.$$arity=3);Opal.defn(self,"$__ENCODING__",TMP_Default___ENCODING___52=function $$__ENCODING__(__ENCODING__t){var self=this;return self.$n0("__ENCODING__",self.$token_map(__ENCODING__t))},TMP_Default___ENCODING___52.$$arity=1);Opal.defn(self,"$assignable",TMP_Default_assignable_53=function $$assignable(node){var $a,self=this,$case=nil,name=nil;return function(){$case=node.$type();if("cvar"["$==="]($case)){return node.$updated("cvasgn")}else if("ivar"["$==="]($case)){return node.$updated("ivasgn")}else if("gvar"["$==="]($case)){return node.$updated("gvasgn")}else if("const"["$==="]($case)){if($truthy(self.parser["$in_def?"]())){self.$diagnostic("error","dynamic_const",nil,node.$loc().$expression())}return node.$updated("casgn")}else if("ident"["$==="]($case)){$a=[].concat(Opal.to_a(node)),name=$a[0]==null?nil:$a[0],$a;self.parser.$static_env().$declare(name);return node.$updated("lvasgn")}else if("nil"["$==="]($case)||"self"["$==="]($case)||"true"["$==="]($case)||"false"["$==="]($case)||"__FILE__"["$==="]($case)||"__LINE__"["$==="]($case)||"__ENCODING__"["$==="]($case)){return self.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression())}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,node.$loc().$expression())}else{return nil}}()},TMP_Default_assignable_53.$$arity=1);Opal.defn(self,"$const_op_assignable",TMP_Default_const_op_assignable_54=function $$const_op_assignable(node){var self=this;return node.$updated("casgn")},TMP_Default_const_op_assignable_54.$$arity=1);Opal.defn(self,"$assign",TMP_Default_assign_55=function $$assign(lhs,eql_t,rhs){var self=this;return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs,rhs))}))},TMP_Default_assign_55.$$arity=3);Opal.defn(self,"$op_assign",TMP_Default_op_assign_56=function $$op_assign(lhs,op_t,rhs){var self=this,$case=nil,operator=nil,source_map=nil;return function(){$case=lhs.$type();if("gvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"lvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"send"["$==="]($case)||"csend"["$==="]($case)){operator=self.$value(op_t)["$[]"]($range(0,-1,false)).$to_sym();source_map=lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs,rhs));return function(){$case=operator;if("&&"["$==="]($case)){return self.$n("and_asgn",[lhs,rhs],source_map)}else if("||"["$==="]($case)){return self.$n("or_asgn",[lhs,rhs],source_map)}else{return self.$n("op_asgn",[lhs,operator,rhs],source_map)}}()}else if("back_ref"["$==="]($case)||"nth_ref"["$==="]($case)){return self.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression())}else{return nil}}()},TMP_Default_op_assign_56.$$arity=3);Opal.defn(self,"$multi_lhs",TMP_Default_multi_lhs_57=function $$multi_lhs(begin_t,items,end_t){var self=this;return self.$n("mlhs",[].concat(Opal.to_a(items)),self.$collection_map(begin_t,items,end_t))},TMP_Default_multi_lhs_57.$$arity=3);Opal.defn(self,"$multi_assign",TMP_Default_multi_assign_58=function $$multi_assign(lhs,eql_t,rhs){var self=this;return self.$n("masgn",[lhs,rhs],self.$binary_op_map(lhs,eql_t,rhs))},TMP_Default_multi_assign_58.$$arity=3);Opal.defn(self,"$def_class",TMP_Default_def_class_59=function $$def_class(class_t,name,lt_t,superclass,body,end_t){var self=this;return self.$n("class",[name,superclass,body],self.$module_definition_map(class_t,name,lt_t,end_t))},TMP_Default_def_class_59.$$arity=6);Opal.defn(self,"$def_sclass",TMP_Default_def_sclass_60=function $$def_sclass(class_t,lshft_t,expr,body,end_t){var self=this;return self.$n("sclass",[expr,body],self.$module_definition_map(class_t,nil,lshft_t,end_t))},TMP_Default_def_sclass_60.$$arity=5);Opal.defn(self,"$def_module",TMP_Default_def_module_61=function $$def_module(module_t,name,body,end_t){var self=this;return self.$n("module",[name,body],self.$module_definition_map(module_t,name,nil,end_t))},TMP_Default_def_module_61.$$arity=4);Opal.defn(self,"$def_method",TMP_Default_def_method_62=function $$def_method(def_t,name_t,args,body,end_t){var self=this;return self.$n("def",[self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,nil,name_t,end_t))},TMP_Default_def_method_62.$$arity=5);Opal.defn(self,"$def_singleton",TMP_Default_def_singleton_63=function $$def_singleton(def_t,definee,dot_t,name_t,args,body,end_t){var self=this,$case=nil;return function(){$case=definee.$type();if("int"["$==="]($case)||"str"["$==="]($case)||"dstr"["$==="]($case)||"sym"["$==="]($case)||"dsym"["$==="]($case)||"regexp"["$==="]($case)||"array"["$==="]($case)||"hash"["$==="]($case)){return self.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression())}else{return self.$n("defs",[definee,self.$value(name_t).$to_sym(),args,body],self.$definition_map(def_t,dot_t,name_t,end_t))}}()},TMP_Default_def_singleton_63.$$arity=7);Opal.defn(self,"$undef_method",TMP_Default_undef_method_64=function $$undef_method(undef_t,names){var self=this;return self.$n("undef",[].concat(Opal.to_a(names)),self.$keyword_map(undef_t,nil,names,nil))},TMP_Default_undef_method_64.$$arity=2);Opal.defn(self,"$alias",TMP_Default_alias_65=function $$alias(alias_t,to,from){var self=this;return self.$n("alias",[to,from],self.$keyword_map(alias_t,nil,[to,from],nil))},TMP_Default_alias_65.$$arity=3);Opal.defn(self,"$args",TMP_Default_args_66=function $$args(begin_t,args,end_t,check_args){var self=this;if(check_args==null){check_args=true}if($truthy(check_args)){args=self.$check_duplicate_args(args)}return self.$n("args",args,self.$collection_map(begin_t,args,end_t))},TMP_Default_args_66.$$arity=-4);Opal.defn(self,"$arg",TMP_Default_arg_67=function $$arg(name_t){var self=this;return self.$n("arg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},TMP_Default_arg_67.$$arity=1);Opal.defn(self,"$optarg",TMP_Default_optarg_68=function $$optarg(name_t,eql_t,value){var self=this;return self.$n("optarg",[self.$value(name_t).$to_sym(),value],self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression())))},TMP_Default_optarg_68.$$arity=3);Opal.defn(self,"$restarg",TMP_Default_restarg_69=function $$restarg(star_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("restarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(star_t,name_t))}else{return self.$n0("restarg",self.$arg_prefix_map(star_t))}},TMP_Default_restarg_69.$$arity=-2);Opal.defn(self,"$kwarg",TMP_Default_kwarg_70=function $$kwarg(name_t){var self=this;return self.$n("kwarg",[self.$value(name_t).$to_sym()],self.$kwarg_map(name_t))},TMP_Default_kwarg_70.$$arity=1);Opal.defn(self,"$kwoptarg",TMP_Default_kwoptarg_71=function $$kwoptarg(name_t,value){var self=this;return self.$n("kwoptarg",[self.$value(name_t).$to_sym(),value],self.$kwarg_map(name_t,value))},TMP_Default_kwoptarg_71.$$arity=2);Opal.defn(self,"$kwrestarg",TMP_Default_kwrestarg_72=function $$kwrestarg(dstar_t,name_t){var self=this;if(name_t==null){name_t=nil}if($truthy(name_t)){return self.$n("kwrestarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(dstar_t,name_t))}else{return self.$n0("kwrestarg",self.$arg_prefix_map(dstar_t))}},TMP_Default_kwrestarg_72.$$arity=-2);Opal.defn(self,"$shadowarg",TMP_Default_shadowarg_73=function $$shadowarg(name_t){var self=this;return self.$n("shadowarg",[self.$value(name_t).$to_sym()],self.$variable_map(name_t))},TMP_Default_shadowarg_73.$$arity=1);Opal.defn(self,"$blockarg",TMP_Default_blockarg_74=function $$blockarg(amper_t,name_t){var self=this;return self.$n("blockarg",[self.$value(name_t).$to_sym()],self.$arg_prefix_map(amper_t,name_t))},TMP_Default_blockarg_74.$$arity=2);Opal.defn(self,"$procarg0",TMP_Default_procarg0_75=function $$procarg0(arg){var self=this;if($truthy(self.$class().$emit_procarg0())){return arg.$updated("procarg0")}else{return arg}},TMP_Default_procarg0_75.$$arity=1);Opal.defn(self,"$arg_expr",TMP_Default_arg_expr_76=function $$arg_expr(expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("arg")}else{return self.$n("arg_expr",[expr],expr.$loc().$dup())}},TMP_Default_arg_expr_76.$$arity=1);Opal.defn(self,"$restarg_expr",TMP_Default_restarg_expr_77=function $$restarg_expr(star_t,expr){var self=this;if(expr==null){expr=nil}if($truthy(expr["$nil?"]())){return self.$n0("restarg",self.$token_map(star_t))}else if(expr.$type()["$=="]("lvasgn")){return expr.$updated("restarg")}else{return self.$n("restarg_expr",[expr],expr.$loc().$dup())}},TMP_Default_restarg_expr_77.$$arity=-2);Opal.defn(self,"$blockarg_expr",TMP_Default_blockarg_expr_78=function $$blockarg_expr(amper_t,expr){var self=this;if(expr.$type()["$=="]("lvasgn")){return expr.$updated("blockarg")}else{return self.$n("blockarg_expr",[expr],expr.$loc().$dup())}},TMP_Default_blockarg_expr_78.$$arity=2);Opal.defn(self,"$objc_kwarg",TMP_Default_objc_kwarg_79=function $$objc_kwarg(kwname_t,assoc_t,name_t){var self=this,kwname_l=nil,operator_l=nil;kwname_l=self.$loc(kwname_t);if($truthy(assoc_t["$nil?"]())){kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1));operator_l=kwname_l.$end().$resize(1)}else{operator_l=self.$loc(assoc_t)}return self.$n("objc_kwarg",[self.$value(kwname_t).$to_sym(),self.$value(name_t).$to_sym()],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,self.$loc(name_t),kwname_l.$join(self.$loc(name_t))))},TMP_Default_objc_kwarg_79.$$arity=3);Opal.defn(self,"$objc_restarg",TMP_Default_objc_restarg_80=function $$objc_restarg(star_t,name){var self=this;if(name==null){name=nil}if($truthy(name["$nil?"]())){return self.$n0("restarg",self.$arg_prefix_map(star_t))}else if(name.$type()["$=="]("arg")){return name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(self.$loc(star_t))}))}else{return self.$n("objc_restarg",[name],self.$unary_op_map(star_t,name))}},TMP_Default_objc_restarg_80.$$arity=-2);Opal.defn(self,"$call_type_for_dot",TMP_Default_call_type_for_dot_81=function $$call_type_for_dot(dot_t){var $a,self=this;if($truthy($truthy($a=dot_t["$nil?"]()["$!"]())?self.$value(dot_t)["$=="]("anddot"):$a)){return"csend"}else{return"send"}},TMP_Default_call_type_for_dot_81.$$arity=1);Opal.defn(self,"$call_method",TMP_Default_call_method_82=function $$call_method(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var self=this,type=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}type=self.$call_type_for_dot(dot_t);if($truthy(selector_t["$nil?"]())){return self.$n(type,[receiver,"call"].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t))}else{return self.$n(type,[receiver,self.$value(selector_t).$to_sym()].concat(Opal.to_a(args)),self.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}},TMP_Default_call_method_82.$$arity=-4);Opal.defn(self,"$call_lambda",TMP_Default_call_lambda_83=function $$call_lambda(lambda_t){var self=this;if($truthy(self.$class().$emit_lambda())){return self.$n0("lambda",self.$expr_map(self.$loc(lambda_t)))}else{return self.$n("send",[nil,"lambda"],self.$send_map(nil,nil,lambda_t))}},TMP_Default_call_lambda_83.$$arity=1);Opal.defn(self,"$block",TMP_Default_block_84=function $$block(method_call,begin_t,args,body,end_t){var $a,self=this,_receiver=nil,_selector=nil,call_args=nil,last_arg=nil,actual_send=nil,block=nil;$a=[].concat(Opal.to_a(method_call)),_receiver=$a[0]==null?nil:$a[0],_selector=$a[1]==null?nil:$a[1],call_args=$slice.call($a,2),$a;if(method_call.$type()["$=="]("yield")){self.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[self.$loc(begin_t)])}last_arg=call_args.$last();if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("block_pass"):$a)){self.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[self.$loc(begin_t)])}if($truthy(["send","csend","super","zsuper","lambda"]["$include?"](method_call.$type()))){return self.$n("block",[method_call,args,body],self.$block_map(method_call.$loc().$expression(),begin_t,end_t))}else{$a=[].concat(Opal.to_a(method_call)),actual_send=$a[0]==null?nil:$a[0],$a;block=self.$n("block",[actual_send,args,body],self.$block_map(actual_send.$loc().$expression(),begin_t,end_t));return self.$n(method_call.$type(),[block],method_call.$loc().$with_expression(self.$join_exprs(method_call,block)))}},TMP_Default_block_84.$$arity=5);Opal.defn(self,"$block_pass",TMP_Default_block_pass_85=function $$block_pass(amper_t,arg){var self=this;return self.$n("block_pass",[arg],self.$unary_op_map(amper_t,arg))},TMP_Default_block_pass_85.$$arity=2);Opal.defn(self,"$objc_varargs",TMP_Default_objc_varargs_86=function $$objc_varargs(pair,rest_of_varargs){var $a,self=this,value=nil,first_vararg=nil,vararg_array=nil;$a=[].concat(Opal.to_a(pair)),value=$a[0]==null?nil:$a[0],first_vararg=$a[1]==null?nil:$a[1],$a;vararg_array=self.$array(nil,[first_vararg].concat(Opal.to_a(rest_of_varargs)),nil).$updated("objc_varargs");return pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))},TMP_Default_objc_varargs_86.$$arity=2);Opal.defn(self,"$attr_asgn",TMP_Default_attr_asgn_87=function $$attr_asgn(receiver,dot_t,selector_t){var self=this,method_name=nil,type=nil;method_name=$rb_plus(self.$value(selector_t),"=").$to_sym();type=self.$call_type_for_dot(dot_t);return self.$n(type,[receiver,method_name],self.$send_map(receiver,dot_t,selector_t))},TMP_Default_attr_asgn_87.$$arity=3);Opal.defn(self,"$index",TMP_Default_index_88=function $$index(receiver,lbrack_t,indexes,rbrack_t){var self=this;return self.$n("send",[receiver,"[]"].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))},TMP_Default_index_88.$$arity=4);Opal.defn(self,"$index_asgn",TMP_Default_index_asgn_89=function $$index_asgn(receiver,lbrack_t,indexes,rbrack_t){var self=this;return self.$n("send",[receiver,"[]="].concat(Opal.to_a(indexes)),self.$send_index_map(receiver,lbrack_t,rbrack_t))},TMP_Default_index_asgn_89.$$arity=4);Opal.defn(self,"$binary_op",TMP_Default_binary_op_90=function $$binary_op(receiver,operator_t,arg){var self=this,source_map=nil,operator=nil,method_call=nil;source_map=self.$send_binary_op_map(receiver,operator_t,arg);if(self.parser.$version()["$=="](18)){operator=self.$value(operator_t);if(operator["$=="]("!=")){method_call=self.$n("send",[receiver,"==",arg],source_map)}else if(operator["$=="]("!~")){method_call=self.$n("send",[receiver,"=~",arg],source_map)}if($truthy(["!=","!~"]["$include?"](operator))){return self.$n("not",[method_call],self.$expr_map(source_map.$expression()))}}return self.$n("send",[receiver,self.$value(operator_t).$to_sym(),arg],source_map)},TMP_Default_binary_op_90.$$arity=3);Opal.defn(self,"$match_op",TMP_Default_match_op_92=function $$match_op(receiver,match_t,arg){var TMP_91,self=this,source_map=nil,regexp=nil;source_map=self.$send_binary_op_map(receiver,match_t,arg);if($truthy(regexp=self.$static_regexp_node(receiver))){$send(regexp.$names(),"each",[],(TMP_91=function(name){var self=TMP_91.$$s||this;if(self.parser==null)self.parser=nil;if(name==null)name=nil;return self.parser.$static_env().$declare(name)},TMP_91.$$s=self,TMP_91.$$arity=1,TMP_91));return self.$n("match_with_lvasgn",[receiver,arg],source_map)}else{return self.$n("send",[receiver,"=~",arg],source_map)}},TMP_Default_match_op_92.$$arity=3);Opal.defn(self,"$unary_op",TMP_Default_unary_op_93=function $$unary_op(op_t,receiver){var self=this,$case=nil,method=nil;$case=self.$value(op_t);if("+"["$==="]($case)||"-"["$==="]($case)){method=$rb_plus(self.$value(op_t),"@")}else{method=self.$value(op_t)}return self.$n("send",[receiver,method.$to_sym()],self.$send_unary_op_map(op_t,receiver))},TMP_Default_unary_op_93.$$arity=2);Opal.defn(self,"$not_op",TMP_Default_not_op_94=function $$not_op(not_t,begin_t,receiver,end_t){var self=this,nil_node=nil;if(begin_t==null){begin_t=nil}if(receiver==null){receiver=nil}if(end_t==null){end_t=nil}if(self.parser.$version()["$=="](18)){return self.$n("not",[receiver],self.$unary_op_map(not_t,receiver))}else if($truthy(receiver["$nil?"]())){nil_node=self.$n0("begin",self.$collection_map(begin_t,nil,end_t));return self.$n("send",[nil_node,"!"],self.$send_unary_op_map(not_t,nil_node))}else{return self.$n("send",[receiver,"!"],self.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}},TMP_Default_not_op_94.$$arity=-2);Opal.defn(self,"$logical_op",TMP_Default_logical_op_95=function $$logical_op(type,lhs,op_t,rhs){var self=this;return self.$n(type,[lhs,rhs],self.$binary_op_map(lhs,op_t,rhs))},TMP_Default_logical_op_95.$$arity=4);Opal.defn(self,"$condition",TMP_Default_condition_96=function $$condition(cond_t,cond,then_t,if_true,else_t,if_false,end_t){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))},TMP_Default_condition_96.$$arity=7);Opal.defn(self,"$condition_mod",TMP_Default_condition_mod_97=function $$condition_mod(if_true,if_false,cond_t,cond){var $a,self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$keyword_mod_map($truthy($a=if_true)?$a:if_false,cond_t,cond))},TMP_Default_condition_mod_97.$$arity=4);Opal.defn(self,"$ternary",TMP_Default_ternary_98=function $$ternary(cond,question_t,if_true,colon_t,if_false){var self=this;return self.$n("if",[self.$check_condition(cond),if_true,if_false],self.$ternary_map(cond,question_t,if_true,colon_t,if_false))},TMP_Default_ternary_98.$$arity=5);Opal.defn(self,"$when",TMP_Default_when_99=function $$when(when_t,patterns,then_t,body){var self=this,children=nil;children=patterns["$<<"](body);return self.$n("when",children,self.$keyword_map(when_t,then_t,children,nil))},TMP_Default_when_99.$$arity=4);Opal.defn(self,"$case",TMP_Default_case_100=function(case_t,expr,when_bodies,else_t,else_body,end_t){var self=this;return self.$n("case",[expr].concat(Opal.to_a(when_bodies["$<<"](else_body))),self.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))},TMP_Default_case_100.$$arity=6);Opal.defn(self,"$loop",TMP_Default_loop_101=function $$loop(type,keyword_t,cond,do_t,body,end_t){var self=this;return self.$n(type,[self.$check_condition(cond),body],self.$keyword_map(keyword_t,do_t,nil,end_t))},TMP_Default_loop_101.$$arity=6);Opal.defn(self,"$loop_mod",TMP_Default_loop_mod_102=function $$loop_mod(type,body,keyword_t,cond){var self=this;if(body.$type()["$=="]("kwbegin")){type=""+type+"_post"}return self.$n(type,[self.$check_condition(cond),body],self.$keyword_mod_map(body,keyword_t,cond))},TMP_Default_loop_mod_102.$$arity=4);Opal.defn(self,"$for",TMP_Default_for_103=function(for_t,iterator,in_t,iteratee,do_t,body,end_t){var self=this;return self.$n("for",[iterator,iteratee,body],self.$for_map(for_t,in_t,do_t,end_t))},TMP_Default_for_103.$$arity=7);Opal.defn(self,"$keyword_cmd",TMP_Default_keyword_cmd_104=function $$keyword_cmd(type,keyword_t,lparen_t,args,rparen_t){var $a,self=this,last_arg=nil;if(lparen_t==null){lparen_t=nil}if(args==null){args=[]}if(rparen_t==null){rparen_t=nil}if($truthy(($a=type["$=="]("yield"))?$rb_gt(args.$count(),0):type["$=="]("yield"))){last_arg=args.$last();if(last_arg.$type()["$=="]("block_pass")){self.$diagnostic("error","block_given_to_yield",nil,self.$loc(keyword_t),[last_arg.$loc().$expression()])}}return self.$n(type,args,self.$keyword_map(keyword_t,lparen_t,args,rparen_t))},TMP_Default_keyword_cmd_104.$$arity=-3);Opal.defn(self,"$preexe",TMP_Default_preexe_105=function $$preexe(preexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("preexe",[compstmt],self.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))},TMP_Default_preexe_105.$$arity=4);Opal.defn(self,"$postexe",TMP_Default_postexe_106=function $$postexe(postexe_t,lbrace_t,compstmt,rbrace_t){var self=this;return self.$n("postexe",[compstmt],self.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))},TMP_Default_postexe_106.$$arity=4);Opal.defn(self,"$rescue_body",TMP_Default_rescue_body_107=function $$rescue_body(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){var self=this;return self.$n("resbody",[exc_list,exc_var,compound_stmt],self.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))},TMP_Default_rescue_body_107.$$arity=6);Opal.defn(self,"$begin_body",TMP_Default_begin_body_108=function $$begin_body(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var self=this,statements=nil;if(rescue_bodies==null){rescue_bodies=[]}if(else_t==null){else_t=nil}if(else_==null){else_=nil}if(ensure_t==null){ensure_t=nil}if(ensure_==null){ensure_=nil}if($truthy(rescue_bodies["$any?"]())){if($truthy(else_t)){compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[else_]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_))}else{compound_stmt=self.$n("rescue",[compound_stmt].concat(Opal.to_a($rb_plus(rescue_bodies,[nil]))),self.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil))}}else if($truthy(else_t)){statements=[];if($truthy(compound_stmt["$nil?"]()["$!"]())){if(compound_stmt.$type()["$=="]("begin")){statements=$rb_plus(statements,compound_stmt.$children())}else{statements.$push(compound_stmt)}}statements.$push(self.$n("begin",[else_],self.$collection_map(else_t,[else_],nil)));compound_stmt=self.$n("begin",statements,self.$collection_map(nil,statements,nil))}if($truthy(ensure_t)){compound_stmt=self.$n("ensure",[compound_stmt,ensure_],self.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))}return compound_stmt},TMP_Default_begin_body_108.$$arity=-2);Opal.defn(self,"$compstmt",TMP_Default_compstmt_109=function $$compstmt(statements){var self=this;return function(){if($truthy(statements["$none?"]())){return nil}else if($truthy(statements["$one?"]())){return statements.$first()}else{return self.$n("begin",statements,self.$collection_map(nil,statements,nil))}}()},TMP_Default_compstmt_109.$$arity=1);Opal.defn(self,"$begin",TMP_Default_begin_110=function $$begin(begin_t,body,end_t){var $a,$b,$c,self=this;if($truthy(body["$nil?"]())){return self.$n0("begin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=body.$type()["$=="]("mlhs"))?$a:$truthy($b=($c=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$b)){return self.$n(body.$type(),body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("begin",[body],self.$collection_map(begin_t,[body],end_t))}},TMP_Default_begin_110.$$arity=3);Opal.defn(self,"$begin_keyword",TMP_Default_begin_keyword_111=function $$begin_keyword(begin_t,body,end_t){var $a,$b,self=this;if($truthy(body["$nil?"]())){return self.$n0("kwbegin",self.$collection_map(begin_t,nil,end_t))}else if($truthy($truthy($a=($b=body.$type()["$=="]("begin"))?body.$loc().$begin()["$nil?"]():body.$type()["$=="]("begin"))?body.$loc().$end()["$nil?"]():$a)){return self.$n("kwbegin",body.$children(),self.$collection_map(begin_t,body.$children(),end_t))}else{return self.$n("kwbegin",[body],self.$collection_map(begin_t,[body],end_t))}},TMP_Default_begin_keyword_111.$$arity=3);self.$private();Opal.defn(self,"$check_condition",TMP_Default_check_condition_112=function $$check_condition(cond){var $a,self=this,$case=nil,lhs=nil,rhs=nil,type=nil;return function(){$case=cond.$type();if("masgn"["$==="]($case)){if($truthy($rb_le(self.parser.$version(),23))){return self.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression())}else{return nil}}else if("begin"["$==="]($case)){if(cond.$children().$count()["$=="](1)){return cond.$updated(nil,[self.$check_condition(cond.$children().$last())])}else{return cond}}else if("and"["$==="]($case)||"or"["$==="]($case)||"irange"["$==="]($case)||"erange"["$==="]($case)){$a=[].concat(Opal.to_a(cond)),lhs=$a[0]==null?nil:$a[0],rhs=$a[1]==null?nil:$a[1],$a;type=function(){$case=cond.$type();if("irange"["$==="]($case)){return"iflipflop"}else if("erange"["$==="]($case)){return"eflipflop"}else{return nil}}();if($truthy($truthy($a=["and","or"]["$include?"](cond.$type()))?self.parser.$version()["$=="](18):$a)){return cond}else{return cond.$updated(type,[self.$check_condition(lhs),self.$check_condition(rhs)])}}else if("regexp"["$==="]($case)){return self.$n("match_current_line",[cond],self.$expr_map(cond.$loc().$expression()))}else{return cond}}()},TMP_Default_check_condition_112.$$arity=1);Opal.defn(self,"$check_duplicate_args",TMP_Default_check_duplicate_args_114=function $$check_duplicate_args(args,map){var TMP_113,self=this;if(map==null){map=$hash2([],{})}return $send(args,"each",[],(TMP_113=function(this_arg){var self=TMP_113.$$s||this,$a,$case=nil,this_name=nil,that_arg=nil,that_name=nil,$writer=nil;if(this_arg==null)this_arg=nil;return function(){$case=this_arg.$type();if("arg"["$==="]($case)||"optarg"["$==="]($case)||"restarg"["$==="]($case)||"blockarg"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)||"shadowarg"["$==="]($case)||"procarg0"["$==="]($case)){$a=[].concat(Opal.to_a(this_arg)),this_name=$a[0]==null?nil:$a[0],$a;that_arg=map["$[]"](this_name);$a=[].concat(Opal.to_a(that_arg)),that_name=$a[0]==null?nil:$a[0],$a;if($truthy(that_arg["$nil?"]())){$writer=[this_name,this_arg];$send(map,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else if($truthy(self["$arg_name_collides?"](this_name,that_name))){return self.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()])}else{return nil}}else if("mlhs"["$==="]($case)){return self.$check_duplicate_args(this_arg.$children(),map)}else{return nil}}()},TMP_113.$$s=self,TMP_113.$$arity=1,TMP_113))},TMP_Default_check_duplicate_args_114.$$arity=-2);Opal.defn(self,"$arg_name_collides?",TMP_Default_arg_name_collides$q_115=function(this_name,that_name){var $a,$b,self=this,$case=nil;return function(){$case=self.parser.$version();if(18["$==="]($case)){return this_name["$=="](that_name)}else if(19["$==="]($case)){return $truthy($a=this_name["$!="]("_"))?this_name["$=="](that_name):$a}else{return $truthy($a=$truthy($b=this_name)?this_name["$[]"](0)["$!="]("_"):$b)?this_name["$=="](that_name):$a}}()},TMP_Default_arg_name_collides$q_115.$$arity=2);Opal.defn(self,"$n",TMP_Default_n_116=function $$n(type,children,source_map){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))},TMP_Default_n_116.$$arity=3);Opal.defn(self,"$n0",TMP_Default_n0_117=function $$n0(type,source_map){var self=this;return self.$n(type,[],source_map)},TMP_Default_n0_117.$$arity=2);Opal.defn(self,"$join_exprs",TMP_Default_join_exprs_118=function $$join_exprs(left_expr,right_expr){var self=this;return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())},TMP_Default_join_exprs_118.$$arity=2);Opal.defn(self,"$token_map",TMP_Default_token_map_119=function $$token_map(token){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map").$new(self.$loc(token))},TMP_Default_token_map_119.$$arity=1);Opal.defn(self,"$delimited_string_map",TMP_Default_delimited_string_map_120=function $$delimited_string_map(string_t){var self=this,str_range=nil,begin_l=nil,end_l=nil;str_range=self.$loc(string_t);begin_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),str_range.$begin_pos(),$rb_plus(str_range.$begin_pos(),1));end_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),$rb_minus(str_range.$end_pos(),1),str_range.$end_pos());return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(begin_l,end_l,self.$loc(string_t))},TMP_Default_delimited_string_map_120.$$arity=1);Opal.defn(self,"$prefix_string_map",TMP_Default_prefix_string_map_121=function $$prefix_string_map(symbol){var self=this,str_range=nil,begin_l=nil;str_range=self.$loc(symbol);begin_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(str_range.$source_buffer(),str_range.$begin_pos(),$rb_plus(str_range.$begin_pos(),1));return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(begin_l,nil,self.$loc(symbol))},TMP_Default_prefix_string_map_121.$$arity=1);Opal.defn(self,"$unquoted_map",TMP_Default_unquoted_map_122=function $$unquoted_map(token){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(nil,nil,self.$loc(token))},TMP_Default_unquoted_map_122.$$arity=1);Opal.defn(self,"$pair_keyword_map",TMP_Default_pair_keyword_map_123=function $$pair_keyword_map(key_t,value_e){var self=this,key_range=nil,key_l=nil,colon_l=nil;key_range=self.$loc(key_t);key_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(key_range.$source_buffer(),key_range.$begin_pos(),$rb_minus(key_range.$end_pos(),1));colon_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(key_range.$source_buffer(),$rb_minus(key_range.$end_pos(),1),key_range.$end_pos());return[Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(nil,nil,key_l),Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]},TMP_Default_pair_keyword_map_123.$$arity=2);Opal.defn(self,"$pair_quoted_map",TMP_Default_pair_quoted_map_124=function $$pair_quoted_map(begin_t,end_t,value_e){var self=this,end_l=nil,quote_l=nil,colon_l=nil;end_l=self.$loc(end_t);quote_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(end_l.$source_buffer(),$rb_minus(end_l.$end_pos(),2),$rb_minus(end_l.$end_pos(),1));colon_l=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(end_l.$source_buffer(),$rb_minus(end_l.$end_pos(),1),end_l.$end_pos());return[[self.$value(end_t),quote_l],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(colon_l,self.$loc(begin_t).$join(value_e.$loc().$expression()))]},TMP_Default_pair_quoted_map_124.$$arity=3);Opal.defn(self,"$expr_map",TMP_Default_expr_map_125=function $$expr_map(loc){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map").$new(loc)},TMP_Default_expr_map_125.$$arity=1);Opal.defn(self,"$collection_map",TMP_Default_collection_map_126=function $$collection_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t["$nil?"]())?$a:end_t["$nil?"]())){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}}else{expr_l=self.$loc(begin_t).$join(self.$loc(end_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),expr_l)},TMP_Default_collection_map_126.$$arity=3);Opal.defn(self,"$string_map",TMP_Default_string_map_127=function $$string_map(begin_t,parts,end_t){var $a,self=this,expr_l=nil;if($truthy($truthy($a=begin_t)?self.$value(begin_t)["$start_with?"]("<<"):$a)){if($truthy(parts["$any?"]())){expr_l=self.$join_exprs(parts.$first(),parts.$last())}else{expr_l=self.$loc(end_t).$begin()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Heredoc").$new(self.$loc(begin_t),expr_l,self.$loc(end_t))}else{return self.$collection_map(begin_t,parts,end_t)}},TMP_Default_string_map_127.$$arity=3);Opal.defn(self,"$regexp_map",TMP_Default_regexp_map_128=function $$regexp_map(begin_t,end_t,options_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),self.$loc(begin_t).$join(options_e.$loc().$expression()))},TMP_Default_regexp_map_128.$$arity=3);Opal.defn(self,"$constant_map",TMP_Default_constant_map_129=function $$constant_map(scope,colon2_t,name_t){var self=this,expr_l=nil;if($truthy(scope["$nil?"]())){expr_l=self.$loc(name_t)}else{expr_l=scope.$loc().$expression().$join(self.$loc(name_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Constant").$new(self.$loc(colon2_t),self.$loc(name_t),expr_l)},TMP_Default_constant_map_129.$$arity=3);Opal.defn(self,"$variable_map",TMP_Default_variable_map_130=function $$variable_map(name_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t))},TMP_Default_variable_map_130.$$arity=1);Opal.defn(self,"$binary_op_map",TMP_Default_binary_op_map_131=function $$binary_op_map(left_e,op_t,right_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),self.$join_exprs(left_e,right_e))},TMP_Default_binary_op_map_131.$$arity=3);Opal.defn(self,"$unary_op_map",TMP_Default_unary_op_map_132=function $$unary_op_map(op_t,arg_e){var self=this,expr_l=nil;if(arg_e==null){arg_e=nil}if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(arg_e.$loc().$expression())}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Operator").$new(self.$loc(op_t),expr_l)},TMP_Default_unary_op_map_132.$$arity=-2);Opal.defn(self,"$arg_prefix_map",TMP_Default_arg_prefix_map_133=function $$arg_prefix_map(op_t,name_t){var self=this,expr_l=nil;if(name_t==null){name_t=nil}if($truthy(name_t["$nil?"]())){expr_l=self.$loc(op_t)}else{expr_l=self.$loc(op_t).$join(self.$loc(name_t))}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(self.$loc(name_t),expr_l)},TMP_Default_arg_prefix_map_133.$$arity=-2);Opal.defn(self,"$kwarg_map",TMP_Default_kwarg_map_134=function $$kwarg_map(name_t,value_e){var self=this,label_range=nil,name_range=nil,expr_l=nil;if(value_e==null){value_e=nil}label_range=self.$loc(name_t);name_range=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Range").$new(label_range.$source_buffer(),label_range.$begin_pos(),$rb_minus(label_range.$end_pos(),1));if($truthy(value_e)){expr_l=self.$loc(name_t).$join(value_e.$loc().$expression())}else{expr_l=self.$loc(name_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Variable").$new(name_range,expr_l)},TMP_Default_kwarg_map_134.$$arity=-2);Opal.defn(self,"$module_definition_map",TMP_Default_module_definition_map_135=function $$module_definition_map(keyword_t,name_e,operator_t,end_t){var self=this,name_l=nil;if($truthy(name_e)){name_l=name_e.$loc().$expression()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),name_l,self.$loc(end_t))},TMP_Default_module_definition_map_135.$$arity=4);Opal.defn(self,"$definition_map",TMP_Default_definition_map_136=function $$definition_map(keyword_t,operator_t,name_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Definition").$new(self.$loc(keyword_t),self.$loc(operator_t),self.$loc(name_t),self.$loc(end_t))},TMP_Default_definition_map_136.$$arity=4);Opal.defn(self,"$send_map",TMP_Default_send_map_137=function $$send_map(receiver_e,dot_t,selector_t,begin_t,args,end_t){var self=this,begin_l=nil,end_l=nil;if(begin_t==null){begin_t=nil}if(args==null){args=[]}if(end_t==null){end_t=nil}if($truthy(receiver_e)){begin_l=receiver_e.$loc().$expression()}else if($truthy(selector_t)){begin_l=self.$loc(selector_t)}if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy(args["$any?"]())){end_l=args.$last().$loc().$expression()}else if($truthy(selector_t)){end_l=self.$loc(selector_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(self.$loc(dot_t),self.$loc(selector_t),self.$loc(begin_t),self.$loc(end_t),begin_l.$join(end_l))},TMP_Default_send_map_137.$$arity=-4);Opal.defn(self,"$var_send_map",TMP_Default_var_send_map_138=function $$var_send_map(variable_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())},TMP_Default_var_send_map_138.$$arity=1);Opal.defn(self,"$send_binary_op_map",TMP_Default_send_binary_op_map_139=function $$send_binary_op_map(lhs_e,selector_t,rhs_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,self.$join_exprs(lhs_e,rhs_e))},TMP_Default_send_binary_op_map_139.$$arity=3);Opal.defn(self,"$send_unary_op_map",TMP_Default_send_unary_op_map_140=function $$send_unary_op_map(selector_t,arg_e){var self=this,expr_l=nil;if($truthy(arg_e["$nil?"]())){expr_l=self.$loc(selector_t)}else{expr_l=self.$loc(selector_t).$join(arg_e.$loc().$expression())}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(selector_t),nil,nil,expr_l)},TMP_Default_send_unary_op_map_140.$$arity=2);Opal.defn(self,"$send_index_map",TMP_Default_send_index_map_141=function $$send_index_map(receiver_e,lbrack_t,rbrack_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Send").$new(nil,self.$loc(lbrack_t).$join(self.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(self.$loc(rbrack_t)))},TMP_Default_send_index_map_141.$$arity=3);Opal.defn(self,"$block_map",TMP_Default_block_map_142=function $$block_map(receiver_l,begin_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Collection").$new(self.$loc(begin_t),self.$loc(end_t),receiver_l.$join(self.$loc(end_t)))},TMP_Default_block_map_142.$$arity=3);Opal.defn(self,"$keyword_map",TMP_Default_keyword_map_143=function $$keyword_map(keyword_t,begin_t,args,end_t){var $a,self=this,end_l=nil;args=$truthy($a=args)?$a:[];if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=args["$any?"]())?args.$last()["$nil?"]()["$!"]():$a)){end_l=args.$last().$loc().$expression()}else if($truthy($truthy($a=args["$any?"]())?$rb_gt(args.$count(),1):$a)){end_l=args["$[]"](-2).$loc().$expression()}else{end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_keyword_map_143.$$arity=4);Opal.defn(self,"$keyword_mod_map",TMP_Default_keyword_mod_map_144=function $$keyword_mod_map(pre_e,keyword_t,post_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Keyword").$new(self.$loc(keyword_t),nil,nil,self.$join_exprs(pre_e,post_e))},TMP_Default_keyword_mod_map_144.$$arity=3);Opal.defn(self,"$condition_map",TMP_Default_condition_map_145=function $$condition_map(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var $a,self=this,end_l=nil;if($truthy(end_t)){end_l=self.$loc(end_t)}else if($truthy($truthy($a=else_e)?else_e.$loc().$expression():$a)){end_l=else_e.$loc().$expression()}else if($truthy(self.$loc(else_t))){end_l=self.$loc(else_t)}else if($truthy($truthy($a=body_e)?body_e.$loc().$expression():$a)){end_l=body_e.$loc().$expression()}else if($truthy(self.$loc(begin_t))){end_l=self.$loc(begin_t)}else{end_l=cond_e.$loc().$expression()}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),self.$loc(begin_t),self.$loc(else_t),self.$loc(end_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_condition_map_145.$$arity=7);Opal.defn(self,"$ternary_map",TMP_Default_ternary_map_146=function $$ternary_map(begin_e,question_t,mid_e,colon_t,end_e){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Ternary").$new(self.$loc(question_t),self.$loc(colon_t),self.$join_exprs(begin_e,end_e))},TMP_Default_ternary_map_146.$$arity=5);Opal.defn(self,"$for_map",TMP_Default_for_map_147=function $$for_map(keyword_t,in_t,begin_t,end_t){var self=this;return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"For").$new(self.$loc(keyword_t),self.$loc(in_t),self.$loc(begin_t),self.$loc(end_t),self.$loc(keyword_t).$join(self.$loc(end_t)))},TMP_Default_for_map_147.$$arity=4);Opal.defn(self,"$rescue_body_map",TMP_Default_rescue_body_map_148=function $$rescue_body_map(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var $a,self=this,end_l=nil;if($truthy(compstmt_e)){end_l=compstmt_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?then_t:$a)){end_l=self.$loc(then_t)}if($truthy($truthy($a=end_l["$nil?"]())?exc_var_e:$a)){end_l=exc_var_e.$loc().$expression()}if($truthy($truthy($a=end_l["$nil?"]())?exc_list_e:$a)){end_l=exc_list_e.$loc().$expression()}if($truthy(end_l["$nil?"]())){end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"RescueBody").$new(self.$loc(keyword_t),self.$loc(assoc_t),self.$loc(then_t),self.$loc(keyword_t).$join(end_l))},TMP_Default_rescue_body_map_148.$$arity=6);Opal.defn(self,"$eh_keyword_map",TMP_Default_eh_keyword_map_149=function $$eh_keyword_map(compstmt_e,keyword_t,body_es,else_t,else_e){var self=this,begin_l=nil,end_l=nil;if($truthy(compstmt_e["$nil?"]())){if($truthy(keyword_t["$nil?"]())){begin_l=body_es.$first().$loc().$expression()}else{begin_l=self.$loc(keyword_t)}}else{begin_l=compstmt_e.$loc().$expression()}if($truthy(else_t)){if($truthy(else_e["$nil?"]())){end_l=self.$loc(else_t)}else{end_l=else_e.$loc().$expression()}}else if($truthy(body_es.$last()["$nil?"]()["$!"]())){end_l=body_es.$last().$loc().$expression()}else{end_l=self.$loc(keyword_t)}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Map"),"Condition").$new(self.$loc(keyword_t),nil,self.$loc(else_t),nil,begin_l.$join(end_l))},TMP_Default_eh_keyword_map_149.$$arity=5);Opal.defn(self,"$static_string",TMP_Default_static_string_151=function $$static_string(nodes){try{var TMP_150,self=this;return $send(nodes,"map",[],(TMP_150=function(node){var self=TMP_150.$$s||this,$case=nil,string=nil;if(node==null)node=nil;return function(){$case=node.$type();if("str"["$==="]($case)){return node.$children()["$[]"](0)}else if("begin"["$==="]($case)){if($truthy(string=self.$static_string(node.$children()))){return string}else{Opal.ret(nil)}}else{Opal.ret(nil)}}()},TMP_150.$$s=self,TMP_150.$$arity=1,TMP_150)).$join()}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Default_static_string_151.$$arity=1);Opal.defn(self,"$static_regexp",TMP_Default_static_regexp_152=function $$static_regexp(parts,options){var $a,self=this,source=nil;source=self.$static_string(parts);if($truthy(source["$nil?"]())){return nil}if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){source=function(){if($truthy(options.$children()["$include?"]("u"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"))}else if($truthy(options.$children()["$include?"]("e"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"EUC_JP"))}else if($truthy(options.$children()["$include?"]("s"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"WINDOWS_31J"))}else if($truthy(options.$children()["$include?"]("n"))){return source.$encode(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"BINARY"))}else{return source}}()}return Opal.const_get_relative($nesting,"Regexp").$new(source,function(){if($truthy(options.$children()["$include?"]("x"))){return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Regexp"),"EXTENDED")}else{return nil}return nil}())},TMP_Default_static_regexp_152.$$arity=2);Opal.defn(self,"$static_regexp_node",TMP_Default_static_regexp_node_153=function $$static_regexp_node(node){var $a,self=this,parts=nil,options=nil;if(node.$type()["$=="]("regexp")){$a=[node.$children()["$[]"]($range(0,-2,false)),node.$children()["$[]"](-1)],parts=$a[0],options=$a[1],$a;return self.$static_regexp(parts,options)}else{return nil}},TMP_Default_static_regexp_node_153.$$arity=1);Opal.defn(self,"$collapse_string_parts?",TMP_Default_collapse_string_parts$q_154=function(parts){var $a,self=this;return $truthy($a=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$a},TMP_Default_collapse_string_parts$q_154.$$arity=1);Opal.defn(self,"$value",TMP_Default_value_155=function $$value(token){var self=this;return token["$[]"](0)},TMP_Default_value_155.$$arity=1);if($truthy(($a=Opal.const_get_relative($nesting,"Encoding","skip_raise"))?"constant":nil)){Opal.defn(self,"$string_value",TMP_Default_string_value_156=function $$string_value(token){var self=this;if($truthy(token["$[]"](0)["$valid_encoding?"]())){}else{self.$diagnostic("error","invalid_encoding",nil,token["$[]"](1))}return token["$[]"](0)},TMP_Default_string_value_156.$$arity=1)}else{Opal.alias(self,"string_value","value")}Opal.defn(self,"$loc",TMP_Default_loc_157=function $$loc(token){var $a,self=this;if($truthy($truthy($a=token)?token["$[]"](0):$a)){return token["$[]"](1)}else{return nil}},TMP_Default_loc_157.$$arity=1);return(Opal.defn(self,"$diagnostic",TMP_Default_diagnostic_158=function $$diagnostic(type,reason,arguments$,location,highlights){var self=this;if(highlights==null){highlights=[]}self.parser.$diagnostics().$process(Opal.const_get_relative($nesting,"Diagnostic").$new(type,reason,arguments$,location,highlights));if(type["$=="]("error")){return self.parser.$send("yyerror")}else{return nil}},TMP_Default_diagnostic_158.$$arity=-5),nil)&&"diagnostic"})(Opal.const_get_relative($nesting,"Builders"),null,$nesting)}($nesting[0],$nesting)};Opal.modules["parser/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$default_parser","$setup_source_buffer","$default_encoding","$parse","$parse_with_comments","$read","$new","$all_errors_are_fatal=","$diagnostics","$-","$ignore_warnings=","$lambda","$puts","$render","$consumer=","$respond_to?","$force_encoding","$dup","$==","$name","$raw_source=","$source=","$private_class_method","$attr_reader","$version","$diagnostics=","$static_env=","$parser=","$class","$[]","$reset","$source_buffer=","$do_parse","$comments=","$comments","$tokens=","$!","$raise","$tokens","$>","$private","$advance","$===","$diagnostic","$map","$process","$yyerror","$token_to_str"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Base_parse_1,TMP_Base_parse_with_comments_2,TMP_Base_parse_file_3,TMP_Base_parse_file_with_comments_4,TMP_Base_default_parser_6,TMP_Base_setup_source_buffer_7,TMP_Base_initialize_8,TMP_Base_reset_9,TMP_Base_parse_10,TMP_Base_parse_with_comments_11,TMP_Base_tokenize_12,TMP_Base_in_def$q_13,TMP_Base_next_token_14,TMP_Base_check_kwarg_name_15,TMP_Base_diagnostic_17,TMP_Base_on_error_18;def.diagnostics=def.lexer=def.static_env=def.builder=def.def_level=nil;Opal.defs(self,"$parse",TMP_Base_parse_1=function $$parse(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse(source_buffer)},TMP_Base_parse_1.$$arity=-2);Opal.defs(self,"$parse_with_comments",TMP_Base_parse_with_comments_2=function $$parse_with_comments(string,file,line){var self=this,parser=nil,source_buffer=nil;if(file==null){file="(string)"}if(line==null){line=1}parser=self.$default_parser();source_buffer=self.$setup_source_buffer(file,line,string,parser.$default_encoding());return parser.$parse_with_comments(source_buffer)},TMP_Base_parse_with_comments_2.$$arity=-2);Opal.defs(self,"$parse_file",TMP_Base_parse_file_3=function $$parse_file(filename){var self=this;return self.$parse(Opal.const_get_relative($nesting,"File").$read(filename),filename)},TMP_Base_parse_file_3.$$arity=1);Opal.defs(self,"$parse_file_with_comments",TMP_Base_parse_file_with_comments_4=function $$parse_file_with_comments(filename){var self=this;return self.$parse_with_comments(Opal.const_get_relative($nesting,"File").$read(filename),filename)},TMP_Base_parse_file_with_comments_4.$$arity=1);Opal.defs(self,"$default_parser",TMP_Base_default_parser_6=function $$default_parser(){var TMP_5,self=this,parser=nil,$writer=nil;parser=self.$new();$writer=[true];$send(parser.$diagnostics(),"all_errors_are_fatal=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[true];$send(parser.$diagnostics(),"ignore_warnings=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[$send(self,"lambda",[],(TMP_5=function(diagnostic){var self=TMP_5.$$s||this;if($gvars.stderr==null)$gvars.stderr=nil;if(diagnostic==null)diagnostic=nil;return $gvars.stderr.$puts(diagnostic.$render())},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))];$send(parser.$diagnostics(),"consumer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return parser},TMP_Base_default_parser_6.$$arity=0);Opal.defs(self,"$setup_source_buffer",TMP_Base_setup_source_buffer_7=function $$setup_source_buffer(file,line,string,encoding){var self=this,source_buffer=nil,$writer=nil;if($truthy(string["$respond_to?"]("force_encoding"))){string=string.$dup().$force_encoding(encoding)}source_buffer=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Buffer").$new(file,line);if(self.$name()["$=="]("Parser::Ruby18")){$writer=[string];$send(source_buffer,"raw_source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[string];$send(source_buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}return source_buffer},TMP_Base_setup_source_buffer_7.$$arity=4);self.$private_class_method("setup_source_buffer");self.$attr_reader("diagnostics");self.$attr_reader("builder");self.$attr_reader("static_env");self.$attr_reader("source_buffer");Opal.defn(self,"$initialize",TMP_Base_initialize_8=function $$initialize(builder){var $a,self=this,$writer=nil;if(builder==null){builder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"Builders"),"Default").$new()}self.diagnostics=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Diagnostic"),"Engine").$new();self.static_env=Opal.const_get_relative($nesting,"StaticEnvironment").$new();self.lexer=Opal.const_get_relative($nesting,"Lexer").$new(self.$version());$writer=[self.diagnostics];$send(self.lexer,"diagnostics=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[self.static_env];$send(self.lexer,"static_env=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.builder=builder;$writer=[self];$send(self.builder,"parser=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if($truthy($truthy($a=Opal.const_get_qualified(self.$class(),"Racc_debug_parser"))?Opal.const_get_relative($nesting,"ENV")["$[]"]("RACC_DEBUG"):$a)){self.yydebug=true}return self.$reset()},TMP_Base_initialize_8.$$arity=-1);Opal.defn(self,"$reset",TMP_Base_reset_9=function $$reset(){var self=this;self.source_buffer=nil;self.def_level=0;self.lexer.$reset();self.static_env.$reset();return self},TMP_Base_reset_9.$$arity=0);Opal.defn(self,"$parse",TMP_Base_parse_10=function $$parse(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[source_buffer];$send(self.lexer,"source_buffer=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.source_buffer=source_buffer;return self.$do_parse()}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_parse_10.$$arity=1);Opal.defn(self,"$parse_with_comments",TMP_Base_parse_with_comments_11=function $$parse_with_comments(source_buffer){var self=this,$writer=nil;return function(){try{$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_parse_with_comments_11.$$arity=1);Opal.defn(self,"$tokenize",TMP_Base_tokenize_12=function $$tokenize(source_buffer,recover){var self=this,$writer=nil,ast=nil;if(recover==null){recover=false}return function(){try{$writer=[[]];$send(self.lexer,"tokens=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$writer=[[]];$send(self.lexer,"comments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];try{ast=self.$parse(source_buffer)}catch($err){if(Opal.rescue($err,[Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"SyntaxError")])){try{if($truthy(recover["$!"]())){self.$raise()}}finally{Opal.pop_exception()}}else{throw $err}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)],$writer=[nil],$send(self.lexer,"comments=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)]}}()},TMP_Base_tokenize_12.$$arity=-2);Opal.defn(self,"$in_def?",TMP_Base_in_def$q_13=function(){var self=this;return $rb_gt(self.def_level,0)},TMP_Base_in_def$q_13.$$arity=0);self.$private();Opal.defn(self,"$next_token",TMP_Base_next_token_14=function $$next_token(){var self=this;return self.lexer.$advance()},TMP_Base_next_token_14.$$arity=0);Opal.defn(self,"$check_kwarg_name",TMP_Base_check_kwarg_name_15=function $$check_kwarg_name(name_t){var self=this,$case=nil;return function(){$case=name_t["$[]"](0);if(/^[a-z_]/["$==="]($case)){return nil}else if(/^[A-Z]/["$==="]($case)){return self.$diagnostic("error","argument_const",nil,name_t)}else{return nil}}()},TMP_Base_check_kwarg_name_15.$$arity=1);Opal.defn(self,"$diagnostic",TMP_Base_diagnostic_17=function $$diagnostic(level,reason,arguments$,location_t,highlights_ts){var $a,$b,TMP_16,self=this,_=nil,location=nil,highlights=nil;if(highlights_ts==null){highlights_ts=[]}$b=location_t,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;highlights=$send(highlights_ts,"map",[],(TMP_16=function(token){var self=TMP_16.$$s||this,$c,$d,range=nil;if(token==null)token=nil;$d=token,$c=Opal.to_ary($d),_=$c[0]==null?nil:$c[0],range=$c[1]==null?nil:$c[1],$d;return range},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16));self.diagnostics.$process(Opal.const_get_relative($nesting,"Diagnostic").$new(level,reason,arguments$,location,highlights));if(level["$=="]("error")){return self.$yyerror()}else{return nil}},TMP_Base_diagnostic_17.$$arity=-5);return(Opal.defn(self,"$on_error",TMP_Base_on_error_18=function $$on_error(error_token_id,error_value,value_stack){var $a,$b,self=this,token_name=nil,_=nil,location=nil;token_name=self.$token_to_str(error_token_id);$b=error_value,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],location=$a[1]==null?nil:$a[1],$b;return self.diagnostics.$process(Opal.const_get_relative($nesting,"Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))},TMP_Base_on_error_18.$$arity=3),nil)&&"on_error"})($nesting[0],Opal.const_get_qualified(Opal.const_get_relative($nesting,"Racc"),"Parser"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$new","$process","$include?","$type","$remove","$insert_before","$insert_after","$replace"]);return function($base,$parent_nesting){var $Parser,self=$Parser=$module($base,"Parser");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Rewriter(){}var self=$Rewriter=$klass($base,$super,"Rewriter",$Rewriter);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Rewriter_rewrite_1,TMP_Rewriter_assignment$q_2,TMP_Rewriter_remove_3,TMP_Rewriter_insert_before_4,TMP_Rewriter_insert_after_5,TMP_Rewriter_replace_6;def.source_rewriter=nil;Opal.defn(self,"$rewrite",TMP_Rewriter_rewrite_1=function $$rewrite(source_buffer,ast){var self=this;self.source_rewriter=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Source"),"Rewriter").$new(source_buffer);self.$process(ast);return self.source_rewriter.$process()},TMP_Rewriter_rewrite_1.$$arity=2);Opal.defn(self,"$assignment?",TMP_Rewriter_assignment$q_2=function(node){var self=this;return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())},TMP_Rewriter_assignment$q_2.$$arity=1);Opal.defn(self,"$remove",TMP_Rewriter_remove_3=function $$remove(range){var self=this;return self.source_rewriter.$remove(range)},TMP_Rewriter_remove_3.$$arity=1);Opal.defn(self,"$insert_before",TMP_Rewriter_insert_before_4=function $$insert_before(range,content){var self=this;return self.source_rewriter.$insert_before(range,content)},TMP_Rewriter_insert_before_4.$$arity=2);Opal.defn(self,"$insert_after",TMP_Rewriter_insert_after_5=function $$insert_after(range,content){var self=this;return self.source_rewriter.$insert_after(range,content)},TMP_Rewriter_insert_after_5.$$arity=2);return(Opal.defn(self,"$replace",TMP_Rewriter_replace_6=function $$replace(range,content){var self=this;return self.source_rewriter.$replace(range,content)},TMP_Rewriter_replace_6.$$arity=2),nil)&&"replace"})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)};Opal.modules["parser"]=function(Opal){function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs|\&|\||\^|\%|\~|\[/["$=~"](mid.$to_s()))){return""+"['$"+mid+"']"}else{return $rb_plus(".$",mid)}},TMP_Helpers_mid_to_jsid_3.$$arity=1);Opal.defn(self,"$indent",TMP_Helpers_indent_4=function $$indent(){var self=this,$iter=TMP_Helpers_indent_4.$$p,block=$iter||nil;if($iter)TMP_Helpers_indent_4.$$p=null;return $send(self.$compiler(),"indent",[],block.$to_proc())},TMP_Helpers_indent_4.$$arity=0);Opal.defn(self,"$current_indent",TMP_Helpers_current_indent_5=function $$current_indent(){var self=this;return self.$compiler().$parser_indent()},TMP_Helpers_current_indent_5.$$arity=0);Opal.defn(self,"$line",TMP_Helpers_line_6=function $$line($a_rest){var self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}self.$push(""+"\n"+self.$current_indent());return $send(self,"push",Opal.to_a(strs))},TMP_Helpers_line_6.$$arity=-1);Opal.defn(self,"$empty_line",TMP_Helpers_empty_line_7=function $$empty_line(){var self=this;return self.$push("\n")},TMP_Helpers_empty_line_7.$$arity=0);Opal.defn(self,"$js_truthy",TMP_Helpers_js_truthy_8=function $$js_truthy(sexp){var self=this,optimize=nil;if($truthy(optimize=self.$js_truthy_optimize(sexp))){return optimize}self.$helper("truthy");return[self.$fragment("$truthy("),self.$expr(sexp),self.$fragment(")")]},TMP_Helpers_js_truthy_8.$$arity=1);Opal.defn(self,"$js_falsy",TMP_Helpers_js_falsy_9=function $$js_falsy(sexp){var self=this,mid=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);if(mid["$=="]("block_given?")){self.$scope()["$uses_block!"]();return""+self.$scope().$block_name()+" === nil"}}self.$helper("falsy");return[self.$fragment("$falsy("),self.$expr(sexp),self.$fragment(")")]},TMP_Helpers_js_falsy_9.$$arity=1);Opal.defn(self,"$js_truthy_optimize",TMP_Helpers_js_truthy_optimize_10=function $$js_truthy_optimize(sexp){var $a,$b,self=this,mid=nil,receiver_handler_class=nil,receiver=nil,allow_optimization_on_type=nil;if(sexp.$type()["$=="]("send")){mid=sexp.$children()["$[]"](1);receiver_handler_class=$truthy($a=receiver=sexp.$children()["$[]"](0))?self.$compiler().$handlers()["$[]"](receiver.$type()):$a;allow_optimization_on_type=$truthy($a=$truthy($b=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$b)?receiver_handler_class["$truthy_optimize?"]():$a;if($truthy($truthy($a=$truthy($b=allow_optimization_on_type)?$b:mid["$=="]("block_given?"))?$a:mid["$=="]("=="))){return self.$expr(sexp)}else{return nil}}else{return nil}},TMP_Helpers_js_truthy_optimize_10.$$arity=1);Opal.defn(self,"$conditional_send",TMP_Helpers_conditional_send_11=function $$conditional_send(recvr){var self=this,$iter=TMP_Helpers_conditional_send_11.$$p,$yield=$iter||nil,receiver_temp=nil;if($iter)TMP_Helpers_conditional_send_11.$$p=null;receiver_temp=self.$scope().$new_temp();self.$push(""+receiver_temp+" = ",recvr);self.$push(""+", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : ");Opal.yield1($yield,receiver_temp);return self.$wrap("(",")")},TMP_Helpers_conditional_send_11.$$arity=1)})($nesting[0],$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/base"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send;Opal.add_stubs(["$require","$include","$each","$[]=","$handlers","$-","$each_with_index","$define_method","$[]","$children","$attr_reader","$type","$compile","$raise","$is_a?","$fragment","$<<","$reverse","$unshift","$push","$new","$scope","$error","$s","$==","$process","$expr","$add_scope_local","$to_sym","$add_scope_ivar","$add_scope_gvar","$add_scope_temp","$helper","$with_temp","$to_proc","$in_while?","$instance_variable_get","$has_rescue_else?","$in_ensure","$in_ensure?","$!","$class_scope?","$parent","$closest_module_node","$name","$comments","$compiler","$loc"]);self.$require("opal/nodes/helpers");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $Base(){}var self=$Base=$klass($base,$super,"Base",$Base);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Base_handlers_1,TMP_Base_handle_3,TMP_Base_children_6,TMP_Base_truthy_optimize$q_7,TMP_Base_initialize_8,TMP_Base_children_9,TMP_Base_compile_to_fragments_10,TMP_Base_compile_11,TMP_Base_push_13,TMP_Base_unshift_15,TMP_Base_wrap_16,TMP_Base_fragment_17,TMP_Base_error_18,TMP_Base_scope_19,TMP_Base_s_20,TMP_Base_expr$q_21,TMP_Base_recv$q_22,TMP_Base_stmt$q_23,TMP_Base_process_24,TMP_Base_expr_25,TMP_Base_recv_26,TMP_Base_stmt_27,TMP_Base_expr_or_nil_28,TMP_Base_add_local_29,TMP_Base_add_ivar_30,TMP_Base_add_gvar_31,TMP_Base_add_temp_32,TMP_Base_helper_33,TMP_Base_with_temp_34,TMP_Base_in_while$q_35,TMP_Base_while_loop_36,TMP_Base_has_rescue_else$q_37,TMP_Base_in_ensure_38,TMP_Base_in_ensure$q_39,TMP_Base_closest_module_node_40,TMP_Base_class_variable_owner_41,TMP_Base_comments_42;def.sexp=def.fragments=def.compiler=def.level=nil;self.$include(Opal.const_get_relative($nesting,"Helpers"));Opal.defs(self,"$handlers",TMP_Base_handlers_1=function $$handlers(){var $a,self=this;if(self.handlers==null)self.handlers=nil;return self.handlers=$truthy($a=self.handlers)?$a:$hash2([],{})},TMP_Base_handlers_1.$$arity=0);Opal.defs(self,"$handle",TMP_Base_handle_3=function $$handle($a_rest){var TMP_2,self=this,types;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}types=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){types[$arg_idx-0]=arguments[$arg_idx]}return $send(types,"each",[],(TMP_2=function(type){var self=TMP_2.$$s||this,$writer=nil;if(type==null)type=nil;$writer=[type,self];$send(Opal.const_get_relative($nesting,"Base").$handlers(),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_Base_handle_3.$$arity=-1);Opal.defs(self,"$children",TMP_Base_children_6=function $$children($a_rest){var TMP_4,self=this,names;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}names=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){names[$arg_idx-0]=arguments[$arg_idx]}return $send(names,"each_with_index",[],(TMP_4=function(name,idx){var self=TMP_4.$$s||this,TMP_5;if(name==null)name=nil;if(idx==null)idx=nil;return $send(self,"define_method",[name],(TMP_5=function(){var self=TMP_5.$$s||this;if(self.sexp==null)self.sexp=nil;return self.sexp.$children()["$[]"](idx)},TMP_5.$$s=self,TMP_5.$$arity=0,TMP_5))},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4))},TMP_Base_children_6.$$arity=-1);Opal.defs(self,"$truthy_optimize?",TMP_Base_truthy_optimize$q_7=function(){var self=this;return false},TMP_Base_truthy_optimize$q_7.$$arity=0);self.$attr_reader("compiler","type");Opal.defn(self,"$initialize",TMP_Base_initialize_8=function $$initialize(sexp,level,compiler){var self=this;self.sexp=sexp;self.type=sexp.$type();self.level=level;return self.compiler=compiler},TMP_Base_initialize_8.$$arity=3);Opal.defn(self,"$children",TMP_Base_children_9=function $$children(){var self=this;return self.sexp.$children()},TMP_Base_children_9.$$arity=0);Opal.defn(self,"$compile_to_fragments",TMP_Base_compile_to_fragments_10=function $$compile_to_fragments(){var $a,self=this;if($truthy(($a=self["fragments"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.fragments}self.fragments=[];self.$compile();return self.fragments},TMP_Base_compile_to_fragments_10.$$arity=0);Opal.defn(self,"$compile",TMP_Base_compile_11=function $$compile(){var self=this;return self.$raise("Not Implemented")},TMP_Base_compile_11.$$arity=0);Opal.defn(self,"$push",TMP_Base_push_13=function $$push($a_rest){var TMP_12,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send(strs,"each",[],(TMP_12=function(str){var self=TMP_12.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if($truthy(str["$is_a?"](Opal.const_get_relative($nesting,"String")))){str=self.$fragment(str)}return self.fragments["$<<"](str)},TMP_12.$$s=self,TMP_12.$$arity=1,TMP_12))},TMP_Base_push_13.$$arity=-1);Opal.defn(self,"$unshift",TMP_Base_unshift_15=function $$unshift($a_rest){var TMP_14,self=this,strs;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}strs=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){strs[$arg_idx-0]=arguments[$arg_idx]}return $send(strs.$reverse(),"each",[],(TMP_14=function(str){var self=TMP_14.$$s||this;if(self.fragments==null)self.fragments=nil;if(str==null)str=nil;if($truthy(str["$is_a?"](Opal.const_get_relative($nesting,"String")))){str=self.$fragment(str)}return self.fragments.$unshift(str)},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_Base_unshift_15.$$arity=-1);Opal.defn(self,"$wrap",TMP_Base_wrap_16=function $$wrap(pre,post){var self=this;self.$unshift(pre);return self.$push(post)},TMP_Base_wrap_16.$$arity=2);Opal.defn(self,"$fragment",TMP_Base_fragment_17=function $$fragment(str){var self=this;return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Fragment").$new(str,self.$scope(),self.sexp)},TMP_Base_fragment_17.$$arity=1);Opal.defn(self,"$error",TMP_Base_error_18=function $$error(msg){var self=this;return self.compiler.$error(msg)},TMP_Base_error_18.$$arity=1);Opal.defn(self,"$scope",TMP_Base_scope_19=function $$scope(){var self=this;return self.compiler.$scope()},TMP_Base_scope_19.$$arity=0);Opal.defn(self,"$s",TMP_Base_s_20=function $$s($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return $send(self.compiler,"s",Opal.to_a(args))},TMP_Base_s_20.$$arity=-1);Opal.defn(self,"$expr?",TMP_Base_expr$q_21=function(){var self=this;return self.level["$=="]("expr")},TMP_Base_expr$q_21.$$arity=0);Opal.defn(self,"$recv?",TMP_Base_recv$q_22=function(){var self=this;return self.level["$=="]("recv")},TMP_Base_recv$q_22.$$arity=0);Opal.defn(self,"$stmt?",TMP_Base_stmt$q_23=function(){var self=this;return self.level["$=="]("stmt")},TMP_Base_stmt$q_23.$$arity=0);Opal.defn(self,"$process",TMP_Base_process_24=function $$process(sexp,level){var self=this;if(level==null){level="expr"}return self.compiler.$process(sexp,level)},TMP_Base_process_24.$$arity=-2);Opal.defn(self,"$expr",TMP_Base_expr_25=function $$expr(sexp){var self=this;return self.compiler.$process(sexp,"expr")},TMP_Base_expr_25.$$arity=1);Opal.defn(self,"$recv",TMP_Base_recv_26=function $$recv(sexp){var self=this;return self.compiler.$process(sexp,"recv")},TMP_Base_recv_26.$$arity=1);Opal.defn(self,"$stmt",TMP_Base_stmt_27=function $$stmt(sexp){var self=this;return self.compiler.$process(sexp,"stmt")},TMP_Base_stmt_27.$$arity=1);Opal.defn(self,"$expr_or_nil",TMP_Base_expr_or_nil_28=function $$expr_or_nil(sexp){var self=this;if($truthy(sexp)){return self.$expr(sexp)}else{return"nil"}},TMP_Base_expr_or_nil_28.$$arity=1);Opal.defn(self,"$add_local",TMP_Base_add_local_29=function $$add_local(name){var self=this;return self.$scope().$add_scope_local(name.$to_sym())},TMP_Base_add_local_29.$$arity=1);Opal.defn(self,"$add_ivar",TMP_Base_add_ivar_30=function $$add_ivar(name){var self=this;return self.$scope().$add_scope_ivar(name)},TMP_Base_add_ivar_30.$$arity=1);Opal.defn(self,"$add_gvar",TMP_Base_add_gvar_31=function $$add_gvar(name){var self=this;return self.$scope().$add_scope_gvar(name)},TMP_Base_add_gvar_31.$$arity=1);Opal.defn(self,"$add_temp",TMP_Base_add_temp_32=function $$add_temp(temp){var self=this;return self.$scope().$add_scope_temp(temp)},TMP_Base_add_temp_32.$$arity=1);Opal.defn(self,"$helper",TMP_Base_helper_33=function $$helper(name){var self=this;return self.compiler.$helper(name)},TMP_Base_helper_33.$$arity=1);Opal.defn(self,"$with_temp",TMP_Base_with_temp_34=function $$with_temp(){var self=this,$iter=TMP_Base_with_temp_34.$$p,block=$iter||nil;if($iter)TMP_Base_with_temp_34.$$p=null;return $send(self.compiler,"with_temp",[],block.$to_proc())},TMP_Base_with_temp_34.$$arity=0);Opal.defn(self,"$in_while?",TMP_Base_in_while$q_35=function(){var self=this;return self.compiler["$in_while?"]()},TMP_Base_in_while$q_35.$$arity=0);Opal.defn(self,"$while_loop",TMP_Base_while_loop_36=function $$while_loop(){var self=this;return self.compiler.$instance_variable_get("@while_loop")},TMP_Base_while_loop_36.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_Base_has_rescue_else$q_37=function(){var self=this;return self.$scope()["$has_rescue_else?"]()},TMP_Base_has_rescue_else$q_37.$$arity=0);Opal.defn(self,"$in_ensure",TMP_Base_in_ensure_38=function $$in_ensure(){var self=this,$iter=TMP_Base_in_ensure_38.$$p,block=$iter||nil;if($iter)TMP_Base_in_ensure_38.$$p=null;return $send(self.$scope(),"in_ensure",[],block.$to_proc())},TMP_Base_in_ensure_38.$$arity=0);Opal.defn(self,"$in_ensure?",TMP_Base_in_ensure$q_39=function(){var self=this;return self.$scope()["$in_ensure?"]()},TMP_Base_in_ensure$q_39.$$arity=0);Opal.defn(self,"$closest_module_node",TMP_Base_closest_module_node_40=function $$closest_module_node(){var $a,$b,self=this,current=nil;current=self.$scope();while($truthy($truthy($b=current)?current["$class_scope?"]()["$!"]():$b)){current=current.$parent()}return current},TMP_Base_closest_module_node_40.$$arity=0);Opal.defn(self,"$class_variable_owner",TMP_Base_class_variable_owner_41=function $$class_variable_owner(){var self=this;if($truthy(self.$closest_module_node())){return""+"$"+self.$closest_module_node().$name()}else{return"Opal.Object"}},TMP_Base_class_variable_owner_41.$$arity=0);return(Opal.defn(self,"$comments",TMP_Base_comments_42=function $$comments(){var self=this;return self.$compiler().$comments()["$[]"](self.sexp.$loc())},TMP_Base_comments_42.$$arity=0),nil)&&"comments"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/literal"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_le(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs<=rhs:lhs["$<="](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$require","$handle","$push","$to_s","$type","$children","$value","$recv?","$wrap","$join","$keys","$gsub","$even?","$length","$+","$chop","$[]","$encoding","$!=","$force_encoding","$inspect","$to_i","$to_utf16","$translate_escape_chars","$name","$lambda","$upcase","$<=","$call","$-","$>>","$&","$attr_accessor","$extract_flags_and_value","$select!","$flags","$=~","$warning","$compiler","$===","$compile_dynamic_regexp","$compile_static_regexp","$any?","$expr","$new","$map","$to_proc","$flags=","$s","$value=","$include?","$is_a?","$==","$updated","$delete","$source","$expression","$loc","$regexp","$each","$first","$raise","$each_with_index","$compile_inline?","$helper","$compile_inline","$compile_range_initialize","$start","$finish","$numerator","$denominator","$real","$imag"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ValueNode(){}var self=$ValueNode=$klass($base,$super,"ValueNode",$ValueNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ValueNode_compile_1,TMP_ValueNode_truthy_optimize$q_2;self.$handle("true","false","self","nil");Opal.defn(self,"$compile",TMP_ValueNode_compile_1=function $$compile(){var self=this;return self.$push(self.$type().$to_s())},TMP_ValueNode_compile_1.$$arity=0);return Opal.defs(self,"$truthy_optimize?",TMP_ValueNode_truthy_optimize$q_2=function(){var self=this;return true},TMP_ValueNode_truthy_optimize$q_2.$$arity=0)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $NumericNode(){}var self=$NumericNode=$klass($base,$super,"NumericNode",$NumericNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NumericNode_compile_3,TMP_NumericNode_truthy_optimize$q_4;self.$handle("int","float");self.$children("value");Opal.defn(self,"$compile",TMP_NumericNode_compile_3=function $$compile(){var self=this;self.$push(self.$value().$to_s());if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_NumericNode_compile_3.$$arity=0);return Opal.defs(self,"$truthy_optimize?",TMP_NumericNode_truthy_optimize$q_4=function(){var self=this;return true},TMP_NumericNode_truthy_optimize$q_4.$$arity=0)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $StringNode(){}var self=$StringNode=$klass($base,$super,"StringNode",$StringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_StringNode_translate_escape_chars_6,TMP_StringNode_compile_8,TMP_StringNode_to_utf16_10;self.$handle("str");self.$children("value");Opal.const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}));Opal.const_set($nesting[0],"ESCAPE_REGEX",new RegExp(""+"(\\\\+)(["+Opal.const_get_relative($nesting,"ESCAPE_CHARS").$keys().$join("")+"])"));Opal.defn(self,"$translate_escape_chars",TMP_StringNode_translate_escape_chars_6=function $$translate_escape_chars(inspect_string){var TMP_5,self=this;return $send(inspect_string,"gsub",[Opal.const_get_relative($nesting,"ESCAPE_REGEX")],(TMP_5=function(original){var self=TMP_5.$$s||this,$a;if(original==null)original=nil;if($truthy((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$length()["$even?"]())){return original}else{return $rb_plus((($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$chop(),Opal.const_get_relative($nesting,"ESCAPE_CHARS")["$[]"](($a=$gvars["~"])===nil?nil:$a["$[]"](2)))}},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_StringNode_translate_escape_chars_6.$$arity=1);Opal.defn(self,"$compile",TMP_StringNode_compile_8=function $$compile(){var TMP_7,$a,self=this,string_value=nil,encoding=nil,should_encode=nil,sanitized_value=nil;string_value=self.$value();encoding=string_value.$encoding();should_encode=encoding["$!="](Opal.const_get_qualified(Opal.const_get_relative($nesting,"Encoding"),"UTF_8"));if($truthy(should_encode)){string_value=string_value.$force_encoding("UTF-8")}sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(TMP_7=function(match){var self=TMP_7.$$s||this,$a,code_point=nil;if(match==null)match=nil;code_point=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$to_i(16);return self.$to_utf16(code_point)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7));self.$push(self.$translate_escape_chars(sanitized_value));if($truthy($truthy($a=should_encode)?Opal.const_get_relative($nesting,"RUBY_ENGINE")["$!="]("opal"):$a)){return self.$push('.$force_encoding("',encoding.$name(),'")')}else{return nil}},TMP_StringNode_compile_8.$$arity=0);return(Opal.defn(self,"$to_utf16",TMP_StringNode_to_utf16_10=function $$to_utf16(code_point){var TMP_9,self=this,ten_bits=nil,u=nil,lead_surrogate=nil,tail_surrogate=nil;ten_bits=1023;u=$send(self,"lambda",[],(TMP_9=function(code_unit){var self=TMP_9.$$s||this;if(code_unit==null)code_unit=nil;return $rb_plus("\\u",code_unit.$to_s(16).$upcase())},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9));if($truthy($rb_le(code_point,65535))){return u.$call(code_point)}code_point=$rb_minus(code_point,65536);lead_surrogate=$rb_plus(55296,code_point["$>>"](10));tail_surrogate=$rb_plus(56320,code_point["$&"](ten_bits));return $rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate))},TMP_StringNode_to_utf16_10.$$arity=1),nil)&&"to_utf16"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $SymbolNode(){}var self=$SymbolNode=$klass($base,$super,"SymbolNode",$SymbolNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SymbolNode_compile_11;self.$handle("sym");self.$children("value");return(Opal.defn(self,"$compile",TMP_SymbolNode_compile_11=function $$compile(){var self=this;return self.$push(self.$value().$to_s().$inspect())},TMP_SymbolNode_compile_11.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RegexpNode(){}var self=$RegexpNode=$klass($base,$super,"RegexpNode",$RegexpNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RegexpNode_initialize_12,TMP_RegexpNode_compile_14,TMP_RegexpNode_compile_dynamic_regexp_15,TMP_RegexpNode_compile_static_regexp_16,TMP_RegexpNode_extract_flags_and_value_18,TMP_RegexpNode_raw_value_19;def.sexp=nil;self.$handle("regexp");self.$attr_accessor("value","flags");Opal.const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/);Opal.defn(self,"$initialize",TMP_RegexpNode_initialize_12=function $$initialize($a_rest){var self=this,$iter=TMP_RegexpNode_initialize_12.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_RegexpNode_initialize_12.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_RegexpNode_initialize_12,false),$zuper,$iter);return self.$extract_flags_and_value()},TMP_RegexpNode_initialize_12.$$arity=-1);Opal.defn(self,"$compile",TMP_RegexpNode_compile_14=function $$compile(){var TMP_13,self=this,$case=nil;$send(self.$flags(),"select!",[],(TMP_13=function(flag){var self=TMP_13.$$s||this;if(flag==null)flag=nil;if($truthy(Opal.const_get_relative($nesting,"SUPPORTED_FLAGS")["$=~"](flag))){return true}else{self.$compiler().$warning(""+"Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors.");return false}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));return function(){$case=self.$value().$type();if("dstr"["$==="]($case)||"begin"["$==="]($case)){return self.$compile_dynamic_regexp()}else if("str"["$==="]($case)){return self.$compile_static_regexp()}else{return nil}}()},TMP_RegexpNode_compile_14.$$arity=0);Opal.defn(self,"$compile_dynamic_regexp",TMP_RegexpNode_compile_dynamic_regexp_15=function $$compile_dynamic_regexp(){var self=this;if($truthy(self.$flags()["$any?"]())){return self.$push("new RegExp(",self.$expr(self.$value()),""+", '"+self.$flags().$join()+"')")}else{return self.$push("new RegExp(",self.$expr(self.$value()),")")}},TMP_RegexpNode_compile_dynamic_regexp_15.$$arity=0);Opal.defn(self,"$compile_static_regexp",TMP_RegexpNode_compile_static_regexp_16=function $$compile_static_regexp(){var self=this,value=nil,$case=nil,message=nil;value=self.$value().$children()["$[]"](0);return function(){$case=value;if(""["$==="]($case)){return self.$push("/(?:)/")}else if(/\?<\w+\>/["$==="]($case)){message=""+"named captures are not supported in javascript: "+value.$inspect();return self.$push(""+"self.$raise(new SyntaxError('"+message+"'))")}else{return self.$push(""+Opal.const_get_relative($nesting,"Regexp").$new(value).$inspect()+self.$flags().$join())}}()},TMP_RegexpNode_compile_static_regexp_16.$$arity=0);Opal.defn(self,"$extract_flags_and_value",TMP_RegexpNode_extract_flags_and_value_18=function $$extract_flags_and_value(){var $a,$b,TMP_17,self=this,values=nil,flags_sexp=nil,$writer=nil,$case=nil,parts=nil;$a=[].concat(Opal.to_a(self.$children())),$b=$a.length-1,$b=$b<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=$a[$b]==null?nil:$a[$b],$a;$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())];$send(self,"flags=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$case=values.$length();if((0)["$==="]($case)){$writer=[self.$s("str","")];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else if(1["$==="]($case)){$writer=[values["$[]"](0)];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{$writer=[$send(self,"s",["dstr"].concat(Opal.to_a(values)))];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(self.$flags()["$include?"]("x"))){parts=$send(self.$value().$children(),"map",[],(TMP_17=function(part){var self=TMP_17.$$s||this,$c,trimmed_value=nil;if(part==null)part=nil;if($truthy($truthy($c=part["$is_a?"](Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node")))?part.$type()["$=="]("str"):$c)){trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,"");return self.$s("str",trimmed_value)}else{return part}},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17));$writer=[self.$value().$updated(nil,parts)];$send(self,"value=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$flags().$delete("x")}if(self.$value().$type()["$=="]("str")){$writer=[self.$s("str",self.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]}else{return nil}},TMP_RegexpNode_extract_flags_and_value_18.$$arity=0);return(Opal.defn(self,"$raw_value",TMP_RegexpNode_raw_value_19=function $$raw_value(){var self=this,$writer=nil;$writer=[self.sexp.$loc().$expression().$source()];$send(self,"value=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_RegexpNode_raw_value_19.$$arity=0),nil)&&"raw_value"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $MatchCurrentLineNode(){}var self=$MatchCurrentLineNode=$klass($base,$super,"MatchCurrentLineNode",$MatchCurrentLineNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MatchCurrentLineNode_compile_20;self.$handle("match_current_line");self.$children("regexp");return(Opal.defn(self,"$compile",TMP_MatchCurrentLineNode_compile_20=function $$compile(){var self=this,gvar_sexp=nil,send_node=nil;gvar_sexp=self.$s("gvar","$_");send_node=self.$s("send",gvar_sexp,"=~",self.$regexp());return self.$push(self.$expr(send_node))},TMP_MatchCurrentLineNode_compile_20.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $XStringNode(){}var self=$XStringNode=$klass($base,$super,"XStringNode",$XStringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_XStringNode_compile_22;self.$handle("xstr");return(Opal.defn(self,"$compile",TMP_XStringNode_compile_22=function $$compile(){var TMP_21,self=this;$send(self.$children(),"each",[],(TMP_21=function(child){var self=TMP_21.$$s||this,$case=nil,value=nil,str=nil;if(child==null)child=nil;return function(){$case=child.$type();if("str"["$==="]($case)){value=child.$loc().$expression().$source();return self.$push(Opal.const_get_relative($nesting,"Fragment").$new(value,nil))}else if("begin"["$==="]($case)){return self.$push(self.$expr(child))}else if("gvar"["$==="]($case)||"ivar"["$==="]($case)){return self.$push(self.$expr(child))}else if("js_return"["$==="]($case)){self.$push("return ");str=child.$children().$first();value=str.$loc().$expression().$source();return self.$push(Opal.const_get_relative($nesting,"Fragment").$new(value,nil))}else{return self.$raise(""+"Unsupported xstr part: "+child.$type())}}()},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21));if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_XStringNode_compile_22.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $DynamicStringNode(){}var self=$DynamicStringNode=$klass($base,$super,"DynamicStringNode",$DynamicStringNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DynamicStringNode_compile_24;self.$handle("dstr");return(Opal.defn(self,"$compile",TMP_DynamicStringNode_compile_24=function $$compile(){var TMP_23,self=this;self.$push('""');return $send(self.$children(),"each_with_index",[],(TMP_23=function(part,idx){var self=TMP_23.$$s||this;if(part==null)part=nil;if(idx==null)idx=nil;self.$push(" + ");if(part.$type()["$=="]("str")){self.$push(part.$children()["$[]"](0).$inspect())}else{self.$push("(",self.$expr(part),")")}if($truthy(self["$recv?"]())){return self.$wrap("(",")")}else{return nil}},TMP_23.$$s=self,TMP_23.$$arity=2,TMP_23))},TMP_DynamicStringNode_compile_24.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $DynamicSymbolNode(){}var self=$DynamicSymbolNode=$klass($base,$super,"DynamicSymbolNode",$DynamicSymbolNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("dsym")})($nesting[0],Opal.const_get_relative($nesting,"DynamicStringNode"),$nesting);(function($base,$super,$parent_nesting){function $RangeNode(){}var self=$RangeNode=$klass($base,$super,"RangeNode",$RangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RangeNode_compile_25,TMP_RangeNode_compile_inline$q_26,TMP_RangeNode_compile_inline_27,TMP_RangeNode_compile_range_initialize_28;self.$children("start","finish");Opal.const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"]);Opal.defn(self,"$compile",TMP_RangeNode_compile_25=function $$compile(){var self=this;if($truthy(self["$compile_inline?"]())){self.$helper("range");return self.$compile_inline()}else{return self.$compile_range_initialize()}},TMP_RangeNode_compile_25.$$arity=0);Opal.defn(self,"$compile_inline?",TMP_RangeNode_compile_inline$q_26=function(){var $a,$b,self=this;return $truthy($a=($b=self.$start().$type()["$=="](self.$finish().$type()))?Opal.const_get_relative($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$start().$type()):self.$start().$type()["$=="](self.$finish().$type()))?Opal.const_get_relative($nesting,"SIMPLE_CHILDREN_TYPES")["$include?"](self.$finish().$type()):$a},TMP_RangeNode_compile_inline$q_26.$$arity=0);Opal.defn(self,"$compile_inline",TMP_RangeNode_compile_inline_27=function $$compile_inline(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_RangeNode_compile_inline_27.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_RangeNode_compile_range_initialize_28=function $$compile_range_initialize(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_RangeNode_compile_range_initialize_28.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InclusiveRangeNode(){}var self=$InclusiveRangeNode=$klass($base,$super,"InclusiveRangeNode",$InclusiveRangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InclusiveRangeNode_compile_inline_29,TMP_InclusiveRangeNode_compile_range_initialize_30;self.$handle("irange");Opal.defn(self,"$compile_inline",TMP_InclusiveRangeNode_compile_inline_29=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},TMP_InclusiveRangeNode_compile_inline_29.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_InclusiveRangeNode_compile_range_initialize_30=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", false)")},TMP_InclusiveRangeNode_compile_range_initialize_30.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){function $ExclusiveRangeNode(){}var self=$ExclusiveRangeNode=$klass($base,$super,"ExclusiveRangeNode",$ExclusiveRangeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ExclusiveRangeNode_compile_inline_31,TMP_ExclusiveRangeNode_compile_range_initialize_32;self.$handle("erange");Opal.defn(self,"$compile_inline",TMP_ExclusiveRangeNode_compile_inline_31=function $$compile_inline(){var self=this;return self.$push("$range(",self.$expr(self.$start()),", ",self.$expr(self.$finish()),", true)")},TMP_ExclusiveRangeNode_compile_inline_31.$$arity=0);return(Opal.defn(self,"$compile_range_initialize",TMP_ExclusiveRangeNode_compile_range_initialize_32=function $$compile_range_initialize(){var self=this;return self.$push("Opal.Range.$new(",self.$expr(self.$start()),",",self.$expr(self.$finish()),", true)")},TMP_ExclusiveRangeNode_compile_range_initialize_32.$$arity=0),nil)&&"compile_range_initialize"})($nesting[0],Opal.const_get_relative($nesting,"RangeNode"),$nesting);(function($base,$super,$parent_nesting){function $RationalNode(){}var self=$RationalNode=$klass($base,$super,"RationalNode",$RationalNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RationalNode_compile_33;self.$handle("rational");self.$children("value");return(Opal.defn(self,"$compile",TMP_RationalNode_compile_33=function $$compile(){var self=this;return self.$push(""+"Opal.Rational.$new("+self.$value().$numerator()+", "+self.$value().$denominator()+")")},TMP_RationalNode_compile_33.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ComplexNode(){}var self=$ComplexNode=$klass($base,$super,"ComplexNode",$ComplexNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ComplexNode_compile_34;self.$handle("complex");self.$children("value");return(Opal.defn(self,"$compile",TMP_ComplexNode_compile_34=function $$compile(){var self=this;return self.$push(""+"Opal.Complex.$new("+self.$value().$real()+", "+self.$value().$imag()+")")},TMP_ComplexNode_compile_34.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$irb?","$compiler","$top?","$scope","$using_irb?","$push","$to_s","$var_name","$with_temp","$property","$wrap","$add_local","$expr","$value","$recv?","$expr?","$[]","$name","$add_ivar","$helper","$add_gvar","$===","$handle_global_match","$handle_post_match","$handle_pre_match","$raise","$index","$class_variable_owner"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $LocalVariableNode(){}var self=$LocalVariableNode=$klass($base,$super,"LocalVariableNode",$LocalVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalVariableNode_using_irb$q_1,TMP_LocalVariableNode_compile_3;self.$handle("lvar");self.$children("var_name");Opal.defn(self,"$using_irb?",TMP_LocalVariableNode_using_irb$q_1=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},TMP_LocalVariableNode_using_irb$q_1.$$arity=0);return(Opal.defn(self,"$compile",TMP_LocalVariableNode_compile_3=function $$compile(){var TMP_2,self=this;if($truthy(self["$using_irb?"]())){}else{return self.$push(self.$var_name().$to_s())}return $send(self,"with_temp",[],(TMP_2=function(tmp){var self=TMP_2.$$s||this;if(tmp==null)tmp=nil;self.$push(self.$property(self.$var_name().$to_s()));return self.$wrap(""+"(("+tmp+" = Opal.irb_vars",""+") == null ? nil : "+tmp+")")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_LocalVariableNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $LocalAssignNode(){}var self=$LocalAssignNode=$klass($base,$super,"LocalAssignNode",$LocalAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalAssignNode_using_irb$q_4,TMP_LocalAssignNode_compile_5;self.$handle("lvasgn");self.$children("var_name","value");Opal.defn(self,"$using_irb?",TMP_LocalAssignNode_using_irb$q_4=function(){var $a,self=this;return $truthy($a=self.$compiler()["$irb?"]())?self.$scope()["$top?"]():$a},TMP_LocalAssignNode_using_irb$q_4.$$arity=0);return(Opal.defn(self,"$compile",TMP_LocalAssignNode_compile_5=function $$compile(){var $a,$b,self=this;if($truthy(self["$using_irb?"]())){self.$push(""+"Opal.irb_vars"+self.$property(self.$var_name().$to_s())+" = ")}else{self.$add_local(self.$var_name().$to_s());self.$push(""+self.$var_name()+" = ")}self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_LocalAssignNode_compile_5.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $LocalDeclareNode(){}var self=$LocalDeclareNode=$klass($base,$super,"LocalDeclareNode",$LocalDeclareNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_LocalDeclareNode_compile_6;self.$handle("lvdeclare");self.$children("var_name");return(Opal.defn(self,"$compile",TMP_LocalDeclareNode_compile_6=function $$compile(){var self=this;self.$add_local(self.$var_name().$to_s());return nil},TMP_LocalDeclareNode_compile_6.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InstanceVariableNode(){}var self=$InstanceVariableNode=$klass($base,$super,"InstanceVariableNode",$InstanceVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InstanceVariableNode_var_name_7,TMP_InstanceVariableNode_compile_8;self.$handle("ivar");self.$children("name");Opal.defn(self,"$var_name",TMP_InstanceVariableNode_var_name_7=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_InstanceVariableNode_var_name_7.$$arity=0);return(Opal.defn(self,"$compile",TMP_InstanceVariableNode_compile_8=function $$compile(){var self=this,name=nil;name=self.$property(self.$var_name());self.$add_ivar(name);return self.$push(""+"self"+name)},TMP_InstanceVariableNode_compile_8.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $InstanceAssignNode(){}var self=$InstanceAssignNode=$klass($base,$super,"InstanceAssignNode",$InstanceAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InstanceAssignNode_var_name_9,TMP_InstanceAssignNode_compile_10;self.$handle("ivasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_InstanceAssignNode_var_name_9=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_InstanceAssignNode_var_name_9.$$arity=0);return(Opal.defn(self,"$compile",TMP_InstanceAssignNode_compile_10=function $$compile(){var $a,$b,self=this,name=nil;name=self.$property(self.$var_name());self.$push(""+"self"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_InstanceAssignNode_compile_10.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $GlobalVariableNode(){}var self=$GlobalVariableNode=$klass($base,$super,"GlobalVariableNode",$GlobalVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_GlobalVariableNode_var_name_11,TMP_GlobalVariableNode_compile_12;self.$handle("gvar");self.$children("name");Opal.defn(self,"$var_name",TMP_GlobalVariableNode_var_name_11=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_GlobalVariableNode_var_name_11.$$arity=0);return(Opal.defn(self,"$compile",TMP_GlobalVariableNode_compile_12=function $$compile(){var self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$add_gvar(name);return self.$push(""+"$gvars"+name)},TMP_GlobalVariableNode_compile_12.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BackRefNode(){}var self=$BackRefNode=$klass($base,$super,"BackRefNode",$BackRefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BackRefNode_compile_13,TMP_BackRefNode_handle_global_match_15,TMP_BackRefNode_handle_pre_match_17,TMP_BackRefNode_handle_post_match_19;self.$handle("back_ref");Opal.defn(self,"$compile",TMP_BackRefNode_compile_13=function $$compile(){var self=this,$iter=TMP_BackRefNode_compile_13.$$p,$yield=$iter||nil,$case=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_BackRefNode_compile_13.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}self.$helper("gvars");return function(){$case=self.$var_name();if("&"["$==="]($case)){return self.$handle_global_match()}else if("'"["$==="]($case)){return self.$handle_post_match()}else if("`"["$==="]($case)){return self.$handle_pre_match()}else if("+"["$==="]($case)){return $send(self,Opal.find_super_dispatcher(self,"compile",TMP_BackRefNode_compile_13,false),$zuper,$iter)}else{return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))}}()},TMP_BackRefNode_compile_13.$$arity=0);Opal.defn(self,"$handle_global_match",TMP_BackRefNode_handle_global_match_15=function $$handle_global_match(){var TMP_14,self=this;return $send(self,"with_temp",[],(TMP_14=function(tmp){var self=TMP_14.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_BackRefNode_handle_global_match_15.$$arity=0);Opal.defn(self,"$handle_pre_match",TMP_BackRefNode_handle_pre_match_17=function $$handle_pre_match(){var TMP_16,self=this;return $send(self,"with_temp",[],(TMP_16=function(tmp){var self=TMP_16.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16))},TMP_BackRefNode_handle_pre_match_17.$$arity=0);return(Opal.defn(self,"$handle_post_match",TMP_BackRefNode_handle_post_match_19=function $$handle_post_match(){var TMP_18,self=this;return $send(self,"with_temp",[],(TMP_18=function(tmp){var self=TMP_18.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")},TMP_18.$$s=self,TMP_18.$$arity=1,TMP_18))},TMP_BackRefNode_handle_post_match_19.$$arity=0),nil)&&"handle_post_match"})($nesting[0],Opal.const_get_relative($nesting,"GlobalVariableNode"),$nesting);(function($base,$super,$parent_nesting){function $GlobalAssignNode(){}var self=$GlobalAssignNode=$klass($base,$super,"GlobalAssignNode",$GlobalAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_GlobalAssignNode_var_name_20,TMP_GlobalAssignNode_compile_21;self.$handle("gvasgn");self.$children("name","value");Opal.defn(self,"$var_name",TMP_GlobalAssignNode_var_name_20=function $$var_name(){var self=this;return self.$name().$to_s()["$[]"]($range(1,-1,false))},TMP_GlobalAssignNode_var_name_20.$$arity=0);return(Opal.defn(self,"$compile",TMP_GlobalAssignNode_compile_21=function $$compile(){var $a,$b,self=this,name=nil;self.$helper("gvars");name=self.$property(self.$var_name());self.$push(""+"$gvars"+name+" = ");self.$push(self.$expr(self.$value()));if($truthy($truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?self.$value():$a)){return self.$wrap("(",")")}else{return nil}},TMP_GlobalAssignNode_compile_21.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $NthrefNode(){}var self=$NthrefNode=$klass($base,$super,"NthrefNode",$NthrefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NthrefNode_compile_23;self.$handle("nth_ref");self.$children("index");return(Opal.defn(self,"$compile",TMP_NthrefNode_compile_23=function $$compile(){var TMP_22,self=this;self.$helper("gvars");return $send(self,"with_temp",[],(TMP_22=function(tmp){var self=TMP_22.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22))},TMP_NthrefNode_compile_23.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ClassVariableNode(){}var self=$ClassVariableNode=$klass($base,$super,"ClassVariableNode",$ClassVariableNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassVariableNode_compile_25;self.$handle("cvar");self.$children("name");return(Opal.defn(self,"$compile",TMP_ClassVariableNode_compile_25=function $$compile(){var TMP_24,self=this;return $send(self,"with_temp",[],(TMP_24=function(tmp){var self=TMP_24.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"(("+tmp+" = "+self.$class_variable_owner()+".$$cvars['"+self.$name()+"']) == null ? nil : "+tmp+")")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))},TMP_ClassVariableNode_compile_25.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ClassVarAssignNode(){}var self=$ClassVarAssignNode=$klass($base,$super,"ClassVarAssignNode",$ClassVarAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassVarAssignNode_compile_26;self.$handle("cvasgn");self.$children("name","value");return(Opal.defn(self,"$compile",TMP_ClassVarAssignNode_compile_26=function $$compile(){var self=this;return self.$push(""+"(Opal.class_variable_set("+self.$class_variable_owner()+", '"+self.$name()+"', ",self.$expr(self.$value()),"))")},TMP_ClassVarAssignNode_compile_26.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$magical_data_const?","$push","$const_scope","$recv","$name","$eval?","$compiler","$nil?","$==","$eof_content","$base","$expr","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ConstNode(){}var self=$ConstNode=$klass($base,$super,"ConstNode",$ConstNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ConstNode_compile_1,TMP_ConstNode_magical_data_const$q_2;self.$handle("const");self.$children("const_scope","name");Opal.defn(self,"$compile",TMP_ConstNode_compile_1=function $$compile(){var self=this;if($truthy(self["$magical_data_const?"]())){return self.$push("$__END__")}else if($truthy(self.$const_scope())){return self.$push("Opal.const_get_qualified(",self.$recv(self.$const_scope()),""+", '"+self.$name()+"')")}else if($truthy(self.$compiler()["$eval?"]())){return self.$push(""+"Opal.const_get_relative($nesting, '"+self.$name()+"')")}else{return self.$push(""+"Opal.const_get_relative($nesting, '"+self.$name()+"')")}},TMP_ConstNode_compile_1.$$arity=0);return(Opal.defn(self,"$magical_data_const?",TMP_ConstNode_magical_data_const$q_2=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self.$const_scope()["$nil?"]())?self.$name()["$=="]("DATA"):$b)?self.$compiler().$eof_content():$a},TMP_ConstNode_magical_data_const$q_2.$$arity=0),nil)&&"magical_data_const?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $CbaseNode(){}var self=$CbaseNode=$klass($base,$super,"CbaseNode",$CbaseNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CbaseNode_compile_3;self.$handle("cbase");return(Opal.defn(self,"$compile",TMP_CbaseNode_compile_3=function $$compile(){var self=this;return self.$push("'::'")},TMP_CbaseNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ConstAssignNode(){}var self=$ConstAssignNode=$klass($base,$super,"ConstAssignNode",$ConstAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ConstAssignNode_compile_4;self.$handle("casgn");self.$children("base","name","value");return(Opal.defn(self,"$compile",TMP_ConstAssignNode_compile_4=function $$compile(){var self=this;if($truthy(self.$base())){return self.$push("Opal.const_set(",self.$expr(self.$base()),""+", '"+self.$name()+"', ",self.$expr(self.$value()),")")}else{return self.$push(""+"Opal.const_set($nesting[0], '"+self.$name()+"', ",self.$expr(self.$value()),")")}},TMP_ConstAssignNode_compile_4.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["pathname"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$module=Opal.module;Opal.add_stubs(["$require","$include","$quote","$===","$to_s","$path","$respond_to?","$to_path","$is_a?","$nil?","$raise","$class","$==","$attr_reader","$!","$relative?","$chop_basename","$basename","$=~","$new","$source","$[]","$rindex","$sub","$absolute?","$expand_path","$plus","$unshift","$length","$!=","$empty?","$first","$shift","$+","$join","$dirname","$pop","$reverse_each","$directory?","$extname","$<=>","$nonzero?","$proc","$casecmp","$cleanpath","$inspect","$include?","$fill","$map","$entries"]);self.$require("corelib/comparable");(function($base,$super,$parent_nesting){function $Pathname(){}var self=$Pathname=$klass($base,$super,"Pathname",$Pathname);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Pathname_initialize_1,TMP_Pathname_$eq$eq_2,TMP_Pathname_absolute$q_3,TMP_Pathname_relative$q_4,TMP_Pathname_chop_basename_5,TMP_Pathname_root$q_6,TMP_Pathname_parent_7,TMP_Pathname_sub_8,TMP_Pathname_cleanpath_9,TMP_Pathname_to_path_10,TMP_Pathname_hash_11,TMP_Pathname_expand_path_12,TMP_Pathname_$_13,TMP_Pathname_plus_14,TMP_Pathname_join_16,TMP_Pathname_split_17,TMP_Pathname_dirname_18,TMP_Pathname_basename_19,TMP_Pathname_directory$q_20,TMP_Pathname_extname_21,TMP_Pathname_$lt$eq$gt_22,TMP_Pathname_23,TMP_Pathname_24,TMP_Pathname_relative_path_from_25,TMP_Pathname_entries_27;def.path=nil;self.$include(Opal.const_get_relative($nesting,"Comparable"));Opal.const_set($nesting[0],"SEPARATOR_PAT",new RegExp(Opal.const_get_relative($nesting,"Regexp").$quote(Opal.const_get_qualified(Opal.const_get_relative($nesting,"File"),"SEPARATOR"))));Opal.defn(self,"$initialize",TMP_Pathname_initialize_1=function $$initialize(path){var self=this;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](path))){self.path=path.$path().$to_s()}else if($truthy(path["$respond_to?"]("to_path"))){self.path=path.$to_path()}else if($truthy(path["$is_a?"](Opal.const_get_relative($nesting,"String")))){self.path=path}else if($truthy(path["$nil?"]())){self.$raise(Opal.const_get_relative($nesting,"TypeError"),"no implicit conversion of nil into String")}else{self.$raise(Opal.const_get_relative($nesting,"TypeError"),""+"no implicit conversion of "+path.$class()+" into String")}if(self.path["$=="]("\0")){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"))}else{return nil}},TMP_Pathname_initialize_1.$$arity=1);self.$attr_reader("path");Opal.defn(self,"$==",TMP_Pathname_$eq$eq_2=function(other){var self=this;return other.$path()["$=="](self.path)},TMP_Pathname_$eq$eq_2.$$arity=1);Opal.defn(self,"$absolute?",TMP_Pathname_absolute$q_3=function(){var self=this;return self["$relative?"]()["$!"]()},TMP_Pathname_absolute$q_3.$$arity=0);Opal.defn(self,"$relative?",TMP_Pathname_relative$q_4=function(){var $a,$b,$c,self=this,path=nil,r=nil;path=self.path;while($truthy(r=self.$chop_basename(path))){$c=r,$b=Opal.to_ary($c),path=$b[0]==null?nil:$b[0],$c}return path["$=="]("")},TMP_Pathname_relative$q_4.$$arity=0);Opal.defn(self,"$chop_basename",TMP_Pathname_chop_basename_5=function $$chop_basename(path){var self=this,base=nil;base=Opal.const_get_relative($nesting,"File").$basename(path);if($truthy(Opal.const_get_relative($nesting,"Regexp").$new(""+"^"+Opal.const_get_qualified(Opal.const_get_relative($nesting,"Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))){return nil}else{return[path["$[]"](0,path.$rindex(base)),base]}},TMP_Pathname_chop_basename_5.$$arity=1);Opal.defn(self,"$root?",TMP_Pathname_root$q_6=function(){var self=this;return self.path["$=="]("/")},TMP_Pathname_root$q_6.$$arity=0);Opal.defn(self,"$parent",TMP_Pathname_parent_7=function $$parent(){var self=this,new_path=nil;new_path=self.path.$sub(/\/([^\/]+\/?$)/,"");if(new_path["$=="]("")){new_path=function(){if($truthy(self["$absolute?"]())){return"/"}else{return"."}return nil}()}return Opal.const_get_relative($nesting,"Pathname").$new(new_path)},TMP_Pathname_parent_7.$$arity=0);Opal.defn(self,"$sub",TMP_Pathname_sub_8=function $$sub($a_rest){var self=this,args;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"Pathname").$new($send(self.path,"sub",Opal.to_a(args)))},TMP_Pathname_sub_8.$$arity=-1);Opal.defn(self,"$cleanpath",TMP_Pathname_cleanpath_9=function $$cleanpath(){var self=this;return Opal.normalize(self.path)},TMP_Pathname_cleanpath_9.$$arity=0);Opal.defn(self,"$to_path",TMP_Pathname_to_path_10=function $$to_path(){var self=this;return self.path},TMP_Pathname_to_path_10.$$arity=0);Opal.defn(self,"$hash",TMP_Pathname_hash_11=function $$hash(){var self=this;return self.path},TMP_Pathname_hash_11.$$arity=0);Opal.defn(self,"$expand_path",TMP_Pathname_expand_path_12=function $$expand_path(){var self=this;return Opal.const_get_relative($nesting,"File").$expand_path(self.path)},TMP_Pathname_expand_path_12.$$arity=0);Opal.defn(self,"$+",TMP_Pathname_$_13=function(other){var self=this;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](other))){}else{other=Opal.const_get_relative($nesting,"Pathname").$new(other)}return Opal.const_get_relative($nesting,"Pathname").$new(self.$plus(self.path,other.$to_s()))},TMP_Pathname_$_13.$$arity=1);Opal.defn(self,"$plus",TMP_Pathname_plus_14=function $$plus(path1,path2){var $a,$b,$c,self=this,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,r1=nil,basename1=nil,suffix2=nil;prefix2=path2;index_list2=[];basename_list2=[];while($truthy(r2=self.$chop_basename(prefix2))){$c=r2,$b=Opal.to_ary($c),prefix2=$b[0]==null?nil:$b[0],basename2=$b[1]==null?nil:$b[1],$c;index_list2.$unshift(prefix2.$length());basename_list2.$unshift(basename2)}if($truthy(prefix2["$!="](""))){return path2}prefix1=path1;while($truthy(true)){while($truthy($truthy($c=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$c)){index_list2.$shift();basename_list2.$shift()}if($truthy(r1=self.$chop_basename(prefix1))){}else{break}$c=r1,$b=Opal.to_ary($c),prefix1=$b[0]==null?nil:$b[0],basename1=$b[1]==null?nil:$b[1],$c;if(basename1["$=="](".")){continue}if($truthy($truthy($b=$truthy($c=basename1["$=="](".."))?$c:basename_list2["$empty?"]())?$b:basename_list2.$first()["$!="](".."))){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift();basename_list2.$shift()}r1=self.$chop_basename(prefix1);if($truthy($truthy($a=r1["$!"]())?new RegExp(Opal.const_get_relative($nesting,"SEPARATOR_PAT"))["$=~"](Opal.const_get_relative($nesting,"File").$basename(prefix1)):$a)){while($truthy($truthy($b=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$b)){index_list2.$shift();basename_list2.$shift()}}if($truthy(basename_list2["$empty?"]()["$!"]())){suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,false));if($truthy(r1)){return Opal.const_get_relative($nesting,"File").$join(prefix1,suffix2)}else{return $rb_plus(prefix1,suffix2)}}else if($truthy(r1)){return prefix1}else{return Opal.const_get_relative($nesting,"File").$dirname(prefix1)}},TMP_Pathname_plus_14.$$arity=2);Opal.defn(self,"$join",TMP_Pathname_join_16=function $$join($a_rest){try{var TMP_15,self=this,args,result=nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($truthy(args["$empty?"]())){return self}result=args.$pop();if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](result))){}else{result=Opal.const_get_relative($nesting,"Pathname").$new(result)}if($truthy(result["$absolute?"]())){return result}$send(args,"reverse_each",[],(TMP_15=function(arg){var self=TMP_15.$$s||this;if(arg==null)arg=nil;if($truthy(Opal.const_get_relative($nesting,"Pathname")["$==="](arg))){}else{arg=Opal.const_get_relative($nesting,"Pathname").$new(arg)}result=$rb_plus(arg,result);if($truthy(result["$absolute?"]())){Opal.ret(result)}else{return nil}},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));return $rb_plus(self,result)}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_Pathname_join_16.$$arity=-1);Opal.defn(self,"$split",TMP_Pathname_split_17=function $$split(){var self=this;return[self.$dirname(),self.$basename()]},TMP_Pathname_split_17.$$arity=0);Opal.defn(self,"$dirname",TMP_Pathname_dirname_18=function $$dirname(){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(Opal.const_get_relative($nesting,"File").$dirname(self.path))},TMP_Pathname_dirname_18.$$arity=0);Opal.defn(self,"$basename",TMP_Pathname_basename_19=function $$basename(){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(Opal.const_get_relative($nesting,"File").$basename(self.path))},TMP_Pathname_basename_19.$$arity=0);Opal.defn(self,"$directory?",TMP_Pathname_directory$q_20=function(){var self=this;return Opal.const_get_relative($nesting,"File")["$directory?"](self.path)},TMP_Pathname_directory$q_20.$$arity=0);Opal.defn(self,"$extname",TMP_Pathname_extname_21=function $$extname(){var self=this;return Opal.const_get_relative($nesting,"File").$extname(self.path)},TMP_Pathname_extname_21.$$arity=0);Opal.defn(self,"$<=>",TMP_Pathname_$lt$eq$gt_22=function(other){var self=this;return self.$path()["$<=>"](other.$path())},TMP_Pathname_$lt$eq$gt_22.$$arity=1);Opal.alias(self,"eql?","==");Opal.alias(self,"===","==");Opal.alias(self,"to_str","to_path");Opal.alias(self,"to_s","to_path");Opal.const_set($nesting[0],"SAME_PATHS",function(){if($truthy(Opal.const_get_qualified(Opal.const_get_relative($nesting,"File"),"FNM_SYSCASE")["$nonzero?"]())){return $send(self,"proc",[],(TMP_Pathname_23=function(a,b){var self=TMP_Pathname_23.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a.$casecmp(b)["$=="](0)},TMP_Pathname_23.$$s=self,TMP_Pathname_23.$$arity=2,TMP_Pathname_23))}else{return $send(self,"proc",[],(TMP_Pathname_24=function(a,b){var self=TMP_Pathname_24.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$=="](b)},TMP_Pathname_24.$$s=self,TMP_Pathname_24.$$arity=2,TMP_Pathname_24))}return nil}());Opal.defn(self,"$relative_path_from",TMP_Pathname_relative_path_from_25=function $$relative_path_from(base_directory){var $a,$b,$c,self=this,dest_directory=nil,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,relpath_names=nil;dest_directory=self.$cleanpath().$to_s();base_directory=base_directory.$cleanpath().$to_s();dest_prefix=dest_directory;dest_names=[];while($truthy(r=self.$chop_basename(dest_prefix))){$c=r,$b=Opal.to_ary($c),dest_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){dest_names.$unshift(basename)}}base_prefix=base_directory;base_names=[];while($truthy(r=self.$chop_basename(base_prefix))){$c=r,$b=Opal.to_ary($c),base_prefix=$b[0]==null?nil:$b[0],basename=$b[1]==null?nil:$b[1],$c;if($truthy(basename["$!="]("."))){base_names.$unshift(basename)}}if($truthy(Opal.const_get_relative($nesting,"SAME_PATHS")["$[]"](dest_prefix,base_prefix))){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect())}while($truthy($truthy($b=$truthy($c=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$c)?Opal.const_get_relative($nesting,"SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$b)){dest_names.$shift();base_names.$shift()}if($truthy(base_names["$include?"](".."))){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),""+"base_directory has ..: "+base_directory.$inspect())}base_names.$fill("..");relpath_names=$rb_plus(base_names,dest_names);if($truthy(relpath_names["$empty?"]())){return Opal.const_get_relative($nesting,"Pathname").$new(".")}else{return Opal.const_get_relative($nesting,"Pathname").$new($send(Opal.const_get_relative($nesting,"File"),"join",Opal.to_a(relpath_names)))}},TMP_Pathname_relative_path_from_25.$$arity=1);return(Opal.defn(self,"$entries",TMP_Pathname_entries_27=function $$entries(){var TMP_26,self=this;return $send(Opal.const_get_relative($nesting,"Dir").$entries(self.path),"map",[],(TMP_26=function(f){var self=TMP_26.$$s||this;if(f==null)f=nil;return self.$class().$new(f)},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26))},TMP_Pathname_entries_27.$$arity=0),nil)&&"entries"})($nesting[0],null,$nesting);return function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_Pathname_28;Opal.defn(self,"$Pathname",TMP_Kernel_Pathname_28=function $$Pathname(path){var self=this;return Opal.const_get_relative($nesting,"Pathname").$new(path)},TMP_Kernel_Pathname_28.$$arity=1)}($nesting[0],$nesting)};Opal.modules["opal/nodes/runtime_helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$new","$children","$==","$s","$include?","$to_sym","$<<","$define_method","$to_proc","$meth","$__send__","$raise","$helper","$[]","$arglist","$js_truthy","$js_falsy"]);self.$require("set");self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RuntimeHelpers(){}var self=$RuntimeHelpers=$klass($base,$super,"RuntimeHelpers",$RuntimeHelpers);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RuntimeHelpers_s_1,TMP_RuntimeHelpers_compatible$q_2,TMP_RuntimeHelpers_helper_3,TMP_RuntimeHelpers_compile_4,TMP_RuntimeHelpers_5,TMP_RuntimeHelpers_6;Opal.const_set($nesting[0],"HELPERS",Opal.const_get_relative($nesting,"Set").$new());self.$children("recvr","meth","arglist");Opal.defs(self,"$s",TMP_RuntimeHelpers_s_1=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node").$new(type,children)},TMP_RuntimeHelpers_s_1.$$arity=-2);Opal.defs(self,"$compatible?",TMP_RuntimeHelpers_compatible$q_2=function(recvr,meth,arglist){var $a,self=this;return($a=recvr["$=="](self.$s("const",nil,"Opal")))?Opal.const_get_relative($nesting,"HELPERS")["$include?"](meth.$to_sym()):recvr["$=="](self.$s("const",nil,"Opal"))},TMP_RuntimeHelpers_compatible$q_2.$$arity=3);Opal.defs(self,"$helper",TMP_RuntimeHelpers_helper_3=function $$helper(name){var self=this,$iter=TMP_RuntimeHelpers_helper_3.$$p,block=$iter||nil;if($iter)TMP_RuntimeHelpers_helper_3.$$p=null;Opal.const_get_relative($nesting,"HELPERS")["$<<"](name);return $send(self,"define_method",[""+"compile_"+name],block.$to_proc())},TMP_RuntimeHelpers_helper_3.$$arity=1);Opal.defn(self,"$compile",TMP_RuntimeHelpers_compile_4=function $$compile(){var self=this;if($truthy(Opal.const_get_relative($nesting,"HELPERS")["$include?"](self.$meth().$to_sym()))){return self.$__send__(""+"compile_"+self.$meth())}else{return self.$raise(""+"Helper not supported: "+self.$meth())}},TMP_RuntimeHelpers_compile_4.$$arity=0);$send(self,"helper",["truthy?"],(TMP_RuntimeHelpers_5=function(){var self=TMP_RuntimeHelpers_5.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("truthy? requires an object")}return self.$js_truthy(sexp)},TMP_RuntimeHelpers_5.$$s=self,TMP_RuntimeHelpers_5.$$arity=0,TMP_RuntimeHelpers_5));return $send(self,"helper",["falsy?"],(TMP_RuntimeHelpers_6=function(){var self=TMP_RuntimeHelpers_6.$$s||this,sexp=nil;if($truthy(sexp=self.$arglist().$children()["$[]"](0))){}else{self.$raise("falsy? requires an object")}return self.$js_falsy(sexp)},TMP_RuntimeHelpers_6.$$s=self,TMP_RuntimeHelpers_6.$$arity=0,TMP_RuntimeHelpers_6))})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require"]);self.$require("opal/rewriter");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Rewriters,self=$Rewriters=$module($base,"Rewriters");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BreakFinder(){}var self=$BreakFinder=$klass($base,$super,"BreakFinder",$BreakFinder);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BreakFinder_initialize_1,TMP_BreakFinder_found_break$q_2,TMP_BreakFinder_on_break_3,TMP_BreakFinder_stop_lookup_4;def.found_break=nil;Opal.defn(self,"$initialize",TMP_BreakFinder_initialize_1=function $$initialize(){var self=this;return self.found_break=false},TMP_BreakFinder_initialize_1.$$arity=0);Opal.defn(self,"$found_break?",TMP_BreakFinder_found_break$q_2=function(){var self=this;return self.found_break},TMP_BreakFinder_found_break$q_2.$$arity=0);Opal.defn(self,"$on_break",TMP_BreakFinder_on_break_3=function $$on_break(node){var self=this;self.found_break=true;return node},TMP_BreakFinder_on_break_3.$$arity=1);Opal.defn(self,"$stop_lookup",TMP_BreakFinder_stop_lookup_4=function $$stop_lookup(node){var self=this;return nil},TMP_BreakFinder_stop_lookup_4.$$arity=1);Opal.alias(self,"on_for","stop_lookup");Opal.alias(self,"on_while","stop_lookup");Opal.alias(self,"on_while_post","stop_lookup");Opal.alias(self,"on_until","stop_lookup");Opal.alias(self,"on_until_post","stop_lookup");return Opal.alias(self,"on_block","stop_lookup")})($nesting[0],Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$attr_reader","$[]=","$-","$define_method","$to_proc","$include?","$type","$s","$handle_special","$record_method?","$<<","$method_calls","$compiler","$to_sym","$meth","$using_irb?","$compile_irb_var","$default_compile","$private","$iter","$new","$process","$found_break?","$splat?","$invoke_using_send?","$compile_using_send","$compile_simple_call_chain","$compile_break_catcher","$helper","$push","$compile_receiver","$compile_method_name","$compile_arguments","$compile_block_pass","$recv","$receiver_sexp","$expr","$arglist","$empty?","$children","$iter_has_break?","$unshift","$line","$method_jsid","$any?","$==","$recvr","$mid_to_jsid","$to_s","$with_temp","$intern","$irb?","$top?","$scope","$nil?","$updated","$method","$arity","$[]","$compatible?","$compile","$sexp_with_arglist","$call","$each","$add_special","$inline_operators?","$operator_helpers","$fragment","$resolve","$requires","$file","$dirname","$cleanpath","$join","$Pathname","$inspect","$class_scope?","$required_trees","$force_encoding","$encoding","$+","$handle_block_given_call","$def?","$mid","$arity_check?","$push_nesting?","$first","$size","$last","$handle_part","$map","$===","$expand_path","$split","$dynamic_require_severity","$error","$warning","$inject","$pop"]);self.$require("set");self.$require("pathname");self.$require("opal/nodes/base");self.$require("opal/nodes/runtime_helpers");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CallNode(){}var self=$CallNode=$klass($base,$super,"CallNode",$CallNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CallNode_add_special_1,TMP_CallNode_initialize_2,TMP_CallNode_compile_4,TMP_CallNode_iter_has_break$q_5,TMP_CallNode_invoke_using_send$q_6,TMP_CallNode_default_compile_7,TMP_CallNode_compile_using_send_8,TMP_CallNode_compile_receiver_9,TMP_CallNode_compile_method_name_10,TMP_CallNode_compile_arguments_11,TMP_CallNode_compile_block_pass_12,TMP_CallNode_compile_break_catcher_13,TMP_CallNode_compile_simple_call_chain_14,TMP_CallNode_splat$q_16,TMP_CallNode_receiver_sexp_17,TMP_CallNode_method_jsid_18,TMP_CallNode_record_method$q_19,TMP_CallNode_compile_irb_var_21,TMP_CallNode_using_irb$q_22,TMP_CallNode_sexp_with_arglist_23,TMP_CallNode_handle_special_24,TMP_CallNode_25,TMP_CallNode_27,TMP_CallNode_28,TMP_CallNode_29,TMP_CallNode_30,TMP_CallNode_31,TMP_CallNode_32,TMP_CallNode_33,TMP_CallNode_34,TMP_CallNode_35,TMP_CallNode_36,TMP_CallNode_37,TMP_CallNode_push_nesting$q_38;def.sexp=def.compiler=def.level=nil;self.$handle("send");self.$attr_reader("recvr","meth","arglist","iter");Opal.const_set($nesting[0],"SPECIALS",$hash2([],{}));Opal.const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}));Opal.defs(self,"$add_special",TMP_CallNode_add_special_1=function $$add_special(name,options){var self=this,$iter=TMP_CallNode_add_special_1.$$p,handler=$iter||nil,$writer=nil;if(options==null){options=$hash2([],{})}if($iter)TMP_CallNode_add_special_1.$$p=null;$writer=[name,options];$send(Opal.const_get_relative($nesting,"SPECIALS"),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return $send(self,"define_method",[""+"handle_"+name],handler.$to_proc())},TMP_CallNode_add_special_1.$$arity=-2);Opal.defn(self,"$initialize",TMP_CallNode_initialize_2=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_CallNode_initialize_2.$$p,$yield=$iter||nil,args=nil,rest=nil,last_arg=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_CallNode_initialize_2.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_CallNode_initialize_2,false),$zuper,$iter);$b=[].concat(Opal.to_a(self.sexp)),self.recvr=$b[0]==null?nil:$b[0],self.meth=$b[1]==null?nil:$b[1],args=$slice.call($b,2),$b;$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_arg=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_arg)?["iter","block_pass"]["$include?"](last_arg.$type()):$b)){self.iter=last_arg;args=rest}else{self.iter=nil}return self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)))},TMP_CallNode_initialize_2.$$arity=-1);Opal.defn(self,"$compile",TMP_CallNode_compile_4=function $$compile(){try{var TMP_3,self=this;return $send(self,"handle_special",[],(TMP_3=function(){var self=TMP_3.$$s||this;if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym())}if($truthy(self["$using_irb?"]())){Opal.ret(self.$compile_irb_var())}return self.$default_compile()},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))}catch($returner){if($returner===Opal.returner){return $returner.$v}throw $returner}},TMP_CallNode_compile_4.$$arity=0);self.$private();Opal.defn(self,"$iter_has_break?",TMP_CallNode_iter_has_break$q_5=function(){var self=this,finder=nil;if($truthy(self.$iter())){}else{return false}finder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.$iter());return finder["$found_break?"]()},TMP_CallNode_iter_has_break$q_5.$$arity=0);Opal.defn(self,"$invoke_using_send?",TMP_CallNode_invoke_using_send$q_6=function(){var $a,self=this;return $truthy($a=self.$iter())?$a:self["$splat?"]()},TMP_CallNode_invoke_using_send$q_6.$$arity=0);Opal.defn(self,"$default_compile",TMP_CallNode_default_compile_7=function $$default_compile(){var self=this;if($truthy(self["$invoke_using_send?"]())){self.$compile_using_send()}else{self.$compile_simple_call_chain()}return self.$compile_break_catcher()},TMP_CallNode_default_compile_7.$$arity=0);Opal.defn(self,"$compile_using_send",TMP_CallNode_compile_using_send_8=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_CallNode_compile_using_send_8.$$arity=0);Opal.defn(self,"$compile_receiver",TMP_CallNode_compile_receiver_9=function $$compile_receiver(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()))},TMP_CallNode_compile_receiver_9.$$arity=0);Opal.defn(self,"$compile_method_name",TMP_CallNode_compile_method_name_10=function $$compile_method_name(){var self=this;return self.$push(""+", '"+self.$meth()+"'")},TMP_CallNode_compile_method_name_10.$$arity=0);Opal.defn(self,"$compile_arguments",TMP_CallNode_compile_arguments_11=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self["$splat?"]())){return self.$push(self.$expr(self.$arglist()))}else if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push("[",self.$expr(self.$arglist()),"]")}},TMP_CallNode_compile_arguments_11.$$arity=0);Opal.defn(self,"$compile_block_pass",TMP_CallNode_compile_block_pass_12=function $$compile_block_pass(){var self=this;if($truthy(self.$iter())){return self.$push(", ",self.$expr(self.$iter()))}else{return nil}},TMP_CallNode_compile_block_pass_12.$$arity=0);Opal.defn(self,"$compile_break_catcher",TMP_CallNode_compile_break_catcher_13=function $$compile_break_catcher(){var self=this;if($truthy(self["$iter_has_break?"]())){self.$unshift("return ");self.$unshift("(function(){var $brk = Opal.new_brk(); try {");return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")}else{return nil}},TMP_CallNode_compile_break_catcher_13.$$arity=0);Opal.defn(self,"$compile_simple_call_chain",TMP_CallNode_compile_simple_call_chain_14=function $$compile_simple_call_chain(){var self=this;return self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),"(",self.$expr(self.$arglist()),")")},TMP_CallNode_compile_simple_call_chain_14.$$arity=0);Opal.defn(self,"$splat?",TMP_CallNode_splat$q_16=function(){var TMP_15,self=this;return $send(self.$arglist().$children(),"any?",[],(TMP_15=function(a){var self=TMP_15.$$s||this;if(a==null)a=nil;return a.$type()["$=="]("splat")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15))},TMP_CallNode_splat$q_16.$$arity=0);Opal.defn(self,"$receiver_sexp",TMP_CallNode_receiver_sexp_17=function $$receiver_sexp(){var $a,self=this;return $truthy($a=self.$recvr())?$a:self.$s("self")},TMP_CallNode_receiver_sexp_17.$$arity=0);Opal.defn(self,"$method_jsid",TMP_CallNode_method_jsid_18=function $$method_jsid(){var self=this;return self.$mid_to_jsid(self.$meth().$to_s())},TMP_CallNode_method_jsid_18.$$arity=0);Opal.defn(self,"$record_method?",TMP_CallNode_record_method$q_19=function(){var self=this;return true},TMP_CallNode_record_method$q_19.$$arity=0);Opal.defn(self,"$compile_irb_var",TMP_CallNode_compile_irb_var_21=function $$compile_irb_var(){var TMP_20,self=this;return $send(self,"with_temp",[],(TMP_20=function(tmp){var self=TMP_20.$$s||this,lvar=nil,call=nil;if(tmp==null)tmp=nil;lvar=self.$meth();call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist"));return self.$push(""+"(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call),""+" : "+tmp+")")},TMP_20.$$s=self,TMP_20.$$arity=1,TMP_20))},TMP_CallNode_compile_irb_var_21.$$arity=0);Opal.defn(self,"$using_irb?",TMP_CallNode_using_irb$q_22=function(){var $a,$b,$c,$d,self=this;return $truthy($a=$truthy($b=$truthy($c=$truthy($d=self.compiler["$irb?"]())?self.$scope()["$top?"]():$d)?self.$arglist()["$=="](self.$s("arglist")):$c)?self.$recvr()["$nil?"]():$b)?self.$iter()["$nil?"]():$a},TMP_CallNode_using_irb$q_22.$$arity=0);Opal.defn(self,"$sexp_with_arglist",TMP_CallNode_sexp_with_arglist_23=function $$sexp_with_arglist(){var self=this;return self.sexp.$updated(nil,[self.$recvr(),self.$meth(),self.$arglist()])},TMP_CallNode_sexp_with_arglist_23.$$arity=0);Opal.defn(self,"$handle_special",TMP_CallNode_handle_special_24=function $$handle_special(){var self=this,$iter=TMP_CallNode_handle_special_24.$$p,compile_default=$iter||nil,method=nil;if($iter)TMP_CallNode_handle_special_24.$$p=null;if($truthy(Opal.const_get_relative($nesting,"SPECIALS")["$include?"](self.$meth()))){method=self.$method(""+"handle_"+self.$meth());if(method.$arity()["$=="](1)){return method["$[]"](compile_default)}else{return method["$[]"]()}}else if($truthy(Opal.const_get_relative($nesting,"RuntimeHelpers")["$compatible?"](self.$recvr(),self.$meth(),self.$arglist()))){return self.$push(Opal.const_get_relative($nesting,"RuntimeHelpers").$new(self.$sexp_with_arglist(),self.level,self.compiler).$compile())}else{return compile_default.$call()}},TMP_CallNode_handle_special_24.$$arity=0);$send(Opal.const_get_relative($nesting,"OPERATORS"),"each",[],(TMP_CallNode_25=function(operator,name){var self=TMP_CallNode_25.$$s||this,TMP_26;if(operator==null)operator=nil;if(name==null)name=nil;return $send(self,"add_special",[operator.$to_sym()],(TMP_26=function(compile_default){var self=TMP_26.$$s||this,$a,lhs=nil,rhs=nil;if(compile_default==null)compile_default=nil;if($truthy(self.$compiler()["$inline_operators?"]())){if($truthy(self["$record_method?"]())){self.$compiler().$method_calls()["$<<"](operator.$to_sym())}self.$compiler().$operator_helpers()["$<<"](operator.$to_sym());$a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())],lhs=$a[0],rhs=$a[1],$a;self.$push(self.$fragment(""+"$rb_"+name+"("));self.$push(lhs);self.$push(self.$fragment(", "));self.$push(rhs);return self.$push(self.$fragment(")"))}else{return compile_default.$call()}},TMP_26.$$s=self,TMP_26.$$arity=1,TMP_26))},TMP_CallNode_25.$$s=self,TMP_CallNode_25.$$arity=2,TMP_CallNode_25));$send(self,"add_special",["require"],(TMP_CallNode_27=function(compile_default){var self=TMP_CallNode_27.$$s||this,str=nil;if(compile_default==null)compile_default=nil;str=Opal.const_get_relative($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()},TMP_CallNode_27.$$s=self,TMP_CallNode_27.$$arity=1,TMP_CallNode_27));$send(self,"add_special",["require_relative"],(TMP_CallNode_28=function(_compile_default){var self=TMP_CallNode_28.$$s||this,arg=nil,file=nil,dir=nil;if(_compile_default==null)_compile_default=nil;arg=self.$arglist().$children()["$[]"](0);file=self.$compiler().$file();if(arg.$type()["$=="]("str")){dir=Opal.const_get_relative($nesting,"File").$dirname(file);self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())}self.$push(self.$fragment(""+"self.$require("+file.$inspect()+"+ '/../' + "));self.$push(self.$process(self.$arglist()));return self.$push(self.$fragment(")"))},TMP_CallNode_28.$$s=self,TMP_CallNode_28.$$arity=1,TMP_CallNode_28));$send(self,"add_special",["autoload"],(TMP_CallNode_29=function(compile_default){var self=TMP_CallNode_29.$$s||this,str=nil;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$class_scope?"]())){str=Opal.const_get_relative($nesting,"DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](1)).$resolve();if($truthy(str["$nil?"]())){}else{self.$compiler().$requires()["$<<"](str)}return compile_default.$call()}else{return nil}},TMP_CallNode_29.$$s=self,TMP_CallNode_29.$$arity=1,TMP_CallNode_29));$send(self,"add_special",["require_tree"],(TMP_CallNode_30=function(compile_default){var self=TMP_CallNode_30.$$s||this,$a,first_arg=nil,rest=nil,relative_path=nil,dir=nil,full_path=nil;if(compile_default==null)compile_default=nil;$a=[].concat(Opal.to_a(self.$arglist().$children())),first_arg=$a[0]==null?nil:$a[0],rest=$slice.call($a,1),$a;if(first_arg.$type()["$=="]("str")){relative_path=first_arg.$children()["$[]"](0);self.$compiler().$required_trees()["$<<"](relative_path);dir=Opal.const_get_relative($nesting,"File").$dirname(self.$compiler().$file());full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s();full_path.$force_encoding(relative_path.$encoding());first_arg=first_arg.$updated(nil,[full_path])}self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest));return compile_default.$call()},TMP_CallNode_30.$$s=self,TMP_CallNode_30.$$arity=1,TMP_CallNode_30));$send(self,"add_special",["block_given?"],(TMP_CallNode_31=function(compile_default){var self=TMP_CallNode_31.$$s||this;if(self.sexp==null)self.sexp=nil;if(compile_default==null)compile_default=nil;return self.$push(self.$compiler().$handle_block_given_call(self.sexp))},TMP_CallNode_31.$$s=self,TMP_CallNode_31.$$arity=1,TMP_CallNode_31));$send(self,"add_special",["__callee__"],(TMP_CallNode_32=function(compile_default){var self=TMP_CallNode_32.$$s||this;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_CallNode_32.$$s=self,TMP_CallNode_32.$$arity=1,TMP_CallNode_32));$send(self,"add_special",["__method__"],(TMP_CallNode_33=function(compile_default){var self=TMP_CallNode_33.$$s||this;if(compile_default==null)compile_default=nil;if($truthy(self.$scope()["$def?"]())){return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect()))}else{return self.$push(self.$fragment("nil"))}},TMP_CallNode_33.$$s=self,TMP_CallNode_33.$$arity=1,TMP_CallNode_33));$send(self,"add_special",["debugger"],(TMP_CallNode_34=function(compile_default){var self=TMP_CallNode_34.$$s||this;if(compile_default==null)compile_default=nil;return self.$push(self.$fragment("debugger"))},TMP_CallNode_34.$$s=self,TMP_CallNode_34.$$arity=1,TMP_CallNode_34));$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(TMP_CallNode_35=function(compile_default){var self=TMP_CallNode_35.$$s||this;if(compile_default==null)compile_default=nil;return self.$push(self.$fragment(""+"Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))},TMP_CallNode_35.$$s=self,TMP_CallNode_35.$$arity=1,TMP_CallNode_35));$send(self,"add_special",["nesting"],(TMP_CallNode_36=function(compile_default){var self=TMP_CallNode_36.$$s||this,push_nesting=nil;if(compile_default==null)compile_default=nil;push_nesting=self["$push_nesting?"](self.$children());if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},TMP_CallNode_36.$$s=self,TMP_CallNode_36.$$arity=1,TMP_CallNode_36));$send(self,"add_special",["constants"],(TMP_CallNode_37=function(compile_default){var self=TMP_CallNode_37.$$s||this,push_nesting=nil;if(compile_default==null)compile_default=nil;push_nesting=self["$push_nesting?"](self.$children());if($truthy(push_nesting)){self.$push("(Opal.Module.$$nesting = $nesting, ")}compile_default.$call();if($truthy(push_nesting)){return self.$push(")")}else{return nil}},TMP_CallNode_37.$$s=self,TMP_CallNode_37.$$arity=1,TMP_CallNode_37));Opal.defn(self,"$push_nesting?",TMP_CallNode_push_nesting$q_38=function(recv){var $a,$b,$c,self=this;recv=self.$children().$first();return($a=self.$children().$size()["$=="](2))?$truthy($b=recv["$nil?"]())?$b:($c=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):recv.$type()["$=="]("const"):self.$children().$size()["$=="](2)},TMP_CallNode_push_nesting$q_38.$$arity=1);return function($base,$super,$parent_nesting){function $DependencyResolver(){}var self=$DependencyResolver=$klass($base,$super,"DependencyResolver",$DependencyResolver);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DependencyResolver_initialize_39,TMP_DependencyResolver_resolve_40,TMP_DependencyResolver_handle_part_42,TMP_DependencyResolver_expand_path_44;def.sexp=def.compiler=nil;Opal.defn(self,"$initialize",TMP_DependencyResolver_initialize_39=function $$initialize(compiler,sexp){var self=this;self.compiler=compiler;return self.sexp=sexp},TMP_DependencyResolver_initialize_39.$$arity=2);Opal.defn(self,"$resolve",TMP_DependencyResolver_resolve_40=function $$resolve(){var self=this;return self.$handle_part(self.sexp)},TMP_DependencyResolver_resolve_40.$$arity=0);Opal.defn(self,"$handle_part",TMP_DependencyResolver_handle_part_42=function $$handle_part(sexp){var $a,$b,TMP_41,self=this,type=nil,recv=nil,meth=nil,args=nil,parts=nil,msg=nil,$case=nil;type=sexp.$type();if(type["$=="]("str")){return sexp.$children()["$[]"](0)}else if(type["$=="]("send")){$b=sexp.$children(),$a=Opal.to_ary($b),recv=$a[0]==null?nil:$a[0],meth=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$b;parts=$send(args,"map",[],(TMP_41=function(s){var self=TMP_41.$$s||this;if(s==null)s=nil;return self.$handle_part(s)},TMP_41.$$s=self,TMP_41.$$arity=1,TMP_41));if($truthy($truthy($a=$truthy($b=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node")["$==="](recv))?recv.$type()["$=="]("const"):$b)?recv.$children().$last()["$=="]("File"):$a)){if(meth["$=="]("expand_path")){return $send(self,"expand_path",Opal.to_a(parts))}else if(meth["$=="]("join")){return self.$expand_path(parts.$join("/"))}else if(meth["$=="]("dirname")){return self.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,true)).$join("/"))}}}msg="Cannot handle dynamic require";return function(){$case=self.compiler.$dynamic_require_severity();if("error"["$==="]($case)){return self.compiler.$error(msg,self.sexp.$line())}else if("warning"["$==="]($case)){return self.compiler.$warning(msg,self.sexp.$line())}else{return nil}}()},TMP_DependencyResolver_handle_part_42.$$arity=1);return(Opal.defn(self,"$expand_path",TMP_DependencyResolver_expand_path_44=function $$expand_path(path,base){var TMP_43,self=this;if(base==null){base=""}return $send((""+base+"/"+path).$split("/"),"inject",[[]],(TMP_43=function(p,part){var self=TMP_43.$$s||this;if(p==null)p=nil;if(part==null)part=nil;if(part["$=="]("")){}else if(part["$=="]("..")){p.$pop()}else{p["$<<"](part)}return p},TMP_43.$$s=self,TMP_43.$$arity=2,TMP_43)).$join("/")},TMP_DependencyResolver_expand_path_44.$$arity=-2),nil)&&"expand_path"}($nesting[0],null,$nesting)})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$helper","$conditional_send","$recv","$receiver_sexp","$push","$compile_method_name","$compile_arguments","$compile_block_pass"]);self.$require("opal/nodes/call");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CSendNode(){}var self=$CSendNode=$klass($base,$super,"CSendNode",$CSendNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CSendNode_default_compile_2;self.$handle("csend");return(Opal.defn(self,"$default_compile",TMP_CSendNode_default_compile_2=function $$default_compile(){var TMP_1,self=this;self.$helper("send");return $send(self,"conditional_send",[self.$recv(self.$receiver_sexp())],(TMP_1=function(receiver_temp){var self=TMP_1.$$s||this;if(receiver_temp==null)receiver_temp=nil;self.$push("$send(",receiver_temp);self.$compile_method_name();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_CSendNode_default_compile_2.$$arity=0),nil)&&"default_compile"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$recv","$recvr","$expr","$property","$value","$<<","$default_compile","$meth","$receiver_sexp","$method_jsid","$compile_arguments","$iter","$s","$lhs","$rhs","$process"]);self.$require("opal/nodes/base");self.$require("opal/nodes/call");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $JsAttrNode(){}var self=$JsAttrNode=$klass($base,$super,"JsAttrNode",$JsAttrNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsAttrNode_compile_1;self.$handle("jsattr");self.$children("recvr","property");return(Opal.defn(self,"$compile",TMP_JsAttrNode_compile_1=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"]")},TMP_JsAttrNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JsAttrAsgnNode(){}var self=$JsAttrAsgnNode=$klass($base,$super,"JsAttrAsgnNode",$JsAttrAsgnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsAttrAsgnNode_compile_2;self.$handle("jsattrasgn");self.$children("recvr","property","value");return(Opal.defn(self,"$compile",TMP_JsAttrAsgnNode_compile_2=function $$compile(){var self=this;return self.$push(self.$recv(self.$recvr()),"[",self.$expr(self.$property()),"] = ",self.$expr(self.$value()))},TMP_JsAttrAsgnNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JsCallNode(){}var self=$JsCallNode=$klass($base,$super,"JsCallNode",$JsCallNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JsCallNode_initialize_3,TMP_JsCallNode_compile_4,TMP_JsCallNode_method_jsid_5,TMP_JsCallNode_compile_using_send_6;def.iter=def.arglist=nil;self.$handle("jscall");Opal.defn(self,"$initialize",TMP_JsCallNode_initialize_3=function $$initialize($a_rest){var self=this,$iter=TMP_JsCallNode_initialize_3.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_JsCallNode_initialize_3.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_JsCallNode_initialize_3,false),$zuper,$iter);if($truthy(self.iter)){self.arglist=self.arglist["$<<"](self.iter)}return self.iter=nil},TMP_JsCallNode_initialize_3.$$arity=-1);Opal.defn(self,"$compile",TMP_JsCallNode_compile_4=function $$compile(){var self=this;return self.$default_compile()},TMP_JsCallNode_compile_4.$$arity=0);Opal.defn(self,"$method_jsid",TMP_JsCallNode_method_jsid_5=function $$method_jsid(){var self=this;return""+"."+self.$meth()},TMP_JsCallNode_method_jsid_5.$$arity=0);return(Opal.defn(self,"$compile_using_send",TMP_JsCallNode_compile_using_send_6=function $$compile_using_send(){var self=this;self.$push(self.$recv(self.$receiver_sexp()),self.$method_jsid(),".apply(null");self.$compile_arguments();if($truthy(self.$iter())){self.$push(".concat(",self.$expr(self.$iter()),")")}return self.$push(")")},TMP_JsCallNode_compile_using_send_6.$$arity=0),nil)&&"compile_using_send"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){function $Match3Node(){}var self=$Match3Node=$klass($base,$super,"Match3Node",$Match3Node);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Match3Node_compile_7;def.level=nil;self.$handle("match_with_lvasgn");self.$children("lhs","rhs");return(Opal.defn(self,"$compile",TMP_Match3Node_compile_7=function $$compile(){var self=this,sexp=nil;sexp=self.$s("send",self.$lhs(),"=~",self.$rhs());return self.$push(self.$process(sexp,self.level))},TMP_Match3Node_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/scope"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$attr_accessor","$attr_reader","$indent","$scope","$compiler","$scope=","$-","$call","$==","$!","$class?","$dup","$push","$map","$ivars","$gvars","$parser_indent","$empty?","$join","$+","$proto","$%","$fragment","$def_in_class?","$add_proto_ivar","$include?","$<<","$has_local?","$has_temp?","$pop","$next_temp","$succ","$uses_block!","$identify!","$compact","$parent","$name","$scope_name","$mid","$unique_temp","$add_scope_temp","$def?","$type","$rescue_else_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ScopeNode(){}var self=$ScopeNode=$klass($base,$super,"ScopeNode",$ScopeNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ScopeNode_initialize_1,TMP_ScopeNode_in_scope_2,TMP_ScopeNode_class_scope$q_4,TMP_ScopeNode_class$q_5,TMP_ScopeNode_module$q_6,TMP_ScopeNode_sclass$q_7,TMP_ScopeNode_top$q_8,TMP_ScopeNode_iter$q_9,TMP_ScopeNode_def$q_10,TMP_ScopeNode_def_in_class$q_11,TMP_ScopeNode_proto_12,TMP_ScopeNode_to_vars_17,TMP_ScopeNode_add_scope_ivar_18,TMP_ScopeNode_add_scope_gvar_19,TMP_ScopeNode_add_proto_ivar_20,TMP_ScopeNode_add_arg_21,TMP_ScopeNode_add_scope_local_22,TMP_ScopeNode_has_local$q_23,TMP_ScopeNode_add_scope_temp_24,TMP_ScopeNode_has_temp$q_25,TMP_ScopeNode_new_temp_26,TMP_ScopeNode_next_temp_27,TMP_ScopeNode_queue_temp_28,TMP_ScopeNode_push_while_29,TMP_ScopeNode_pop_while_30,TMP_ScopeNode_in_while$q_31,TMP_ScopeNode_uses_block$B_32,TMP_ScopeNode_identify$B_33,TMP_ScopeNode_identity_34,TMP_ScopeNode_find_parent_def_35,TMP_ScopeNode_get_super_chain_36,TMP_ScopeNode_uses_block$q_37,TMP_ScopeNode_has_rescue_else$q_38,TMP_ScopeNode_in_ensure_39,TMP_ScopeNode_in_ensure$q_40;def.type=def.defs=def.parent=def.temps=def.locals=def.compiler=def.proto_ivars=def.ivars=def.gvars=def.args=def.queue=def.unique=def.while_stack=def.identity=def.uses_block=def.in_ensure=nil;self.$attr_accessor("parent");self.$attr_accessor("name");self.$attr_accessor("block_name");self.$attr_reader("scope_name");self.$attr_reader("locals");self.$attr_reader("ivars");self.$attr_reader("gvars");self.$attr_accessor("mid");self.$attr_accessor("defs");self.$attr_reader("methods");self.$attr_accessor("uses_super");self.$attr_accessor("uses_zuper");self.$attr_accessor("catch_return","has_break");self.$attr_accessor("rescue_else_sexp");Opal.defn(self,"$initialize",TMP_ScopeNode_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_ScopeNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_ScopeNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ScopeNode_initialize_1,false),$zuper,$iter);self.locals=[];self.temps=[];self.args=[];self.ivars=[];self.gvars=[];self.parent=nil;self.queue=[];self.unique="a";self.while_stack=[];self.identity=nil;self.defs=nil;self.methods=[];self.uses_block=false;self.in_ensure=false;return self.proto_ivars=[]},TMP_ScopeNode_initialize_1.$$arity=-1);Opal.defn(self,"$in_scope",TMP_ScopeNode_in_scope_2=function $$in_scope(){var TMP_3,self=this,$iter=TMP_ScopeNode_in_scope_2.$$p,block=$iter||nil;if($iter)TMP_ScopeNode_in_scope_2.$$p=null;return $send(self,"indent",[],(TMP_3=function(){var self=TMP_3.$$s||this,$writer=nil;if(self.parent==null)self.parent=nil;self.parent=self.$compiler().$scope();$writer=[self];$send(self.$compiler(),"scope=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];block.$call(self);$writer=[self.parent];$send(self.$compiler(),"scope=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))},TMP_ScopeNode_in_scope_2.$$arity=0);Opal.defn(self,"$class_scope?",TMP_ScopeNode_class_scope$q_4=function(){var $a,self=this;return $truthy($a=self.type["$=="]("class"))?$a:self.type["$=="]("module")},TMP_ScopeNode_class_scope$q_4.$$arity=0);Opal.defn(self,"$class?",TMP_ScopeNode_class$q_5=function(){var self=this;return self.type["$=="]("class")},TMP_ScopeNode_class$q_5.$$arity=0);Opal.defn(self,"$module?",TMP_ScopeNode_module$q_6=function(){var self=this;return self.type["$=="]("module")},TMP_ScopeNode_module$q_6.$$arity=0);Opal.defn(self,"$sclass?",TMP_ScopeNode_sclass$q_7=function(){var self=this;return self.type["$=="]("sclass")},TMP_ScopeNode_sclass$q_7.$$arity=0);Opal.defn(self,"$top?",TMP_ScopeNode_top$q_8=function(){var self=this;return self.type["$=="]("top")},TMP_ScopeNode_top$q_8.$$arity=0);Opal.defn(self,"$iter?",TMP_ScopeNode_iter$q_9=function(){var self=this;return self.type["$=="]("iter")},TMP_ScopeNode_iter$q_9.$$arity=0);Opal.defn(self,"$def?",TMP_ScopeNode_def$q_10=function(){var $a,self=this;return $truthy($a=self.type["$=="]("def"))?$a:self.type["$=="]("defs")},TMP_ScopeNode_def$q_10.$$arity=0);Opal.defn(self,"$def_in_class?",TMP_ScopeNode_def_in_class$q_11=function(){var $a,$b,$c,self=this;return $truthy($a=$truthy($b=$truthy($c=self.defs["$!"]())?self.type["$=="]("def"):$c)?self.parent:$b)?self.parent["$class?"]():$a},TMP_ScopeNode_def_in_class$q_11.$$arity=0);Opal.defn(self,"$proto",TMP_ScopeNode_proto_12=function $$proto(){var self=this;return"def"},TMP_ScopeNode_proto_12.$$arity=0);Opal.defn(self,"$to_vars",TMP_ScopeNode_to_vars_17=function $$to_vars(){var TMP_13,TMP_14,TMP_15,$a,TMP_16,self=this,vars=nil,iv=nil,gv=nil,indent=nil,str=nil,pvars=nil,result=nil;vars=self.temps.$dup();$send(vars,"push",Opal.to_a($send(self.locals,"map",[],(TMP_13=function(l){var self=TMP_13.$$s||this;if(l==null)l=nil;return""+l+" = nil"},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13))));iv=$send(self.$ivars(),"map",[],(TMP_14=function(ivar){var self=TMP_14.$$s||this;if(ivar==null)ivar=nil;return""+"if (self"+ivar+" == null) self"+ivar+" = nil;\n"},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14));gv=$send(self.$gvars(),"map",[],(TMP_15=function(gvar){var self=TMP_15.$$s||this;if(gvar==null)gvar=nil;return""+"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15));indent=self.compiler.$parser_indent();str=function(){if($truthy(vars["$empty?"]())){return""}else{return""+"var "+vars.$join(", ")+";\n"}return nil}();if($truthy(self.$ivars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+iv.$join(indent))}if($truthy(self.$gvars()["$empty?"]())){}else{str=$rb_plus(str,""+indent+gv.$join(indent))}if($truthy($truthy($a=self["$class?"]())?self.proto_ivars["$empty?"]()["$!"]():$a)){pvars=$send(self.proto_ivars,"map",[],(TMP_16=function(i){var self=TMP_16.$$s||this;if(i==null)i=nil;return""+self.$proto()+i},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16)).$join(" = ");result="%s\n%s%s = nil;"["$%"]([str,indent,pvars])}else{result=str}return self.$fragment(result)},TMP_ScopeNode_to_vars_17.$$arity=0);Opal.defn(self,"$add_scope_ivar",TMP_ScopeNode_add_scope_ivar_18=function $$add_scope_ivar(ivar){var self=this;if($truthy(self["$def_in_class?"]())){return self.parent.$add_proto_ivar(ivar)}else if($truthy(self.ivars["$include?"](ivar))){return nil}else{return self.ivars["$<<"](ivar)}},TMP_ScopeNode_add_scope_ivar_18.$$arity=1);Opal.defn(self,"$add_scope_gvar",TMP_ScopeNode_add_scope_gvar_19=function $$add_scope_gvar(gvar){var self=this;if($truthy(self.gvars["$include?"](gvar))){return nil}else{return self.gvars["$<<"](gvar)}},TMP_ScopeNode_add_scope_gvar_19.$$arity=1);Opal.defn(self,"$add_proto_ivar",TMP_ScopeNode_add_proto_ivar_20=function $$add_proto_ivar(ivar){var self=this;if($truthy(self.proto_ivars["$include?"](ivar))){return nil}else{return self.proto_ivars["$<<"](ivar)}},TMP_ScopeNode_add_proto_ivar_20.$$arity=1);Opal.defn(self,"$add_arg",TMP_ScopeNode_add_arg_21=function $$add_arg(arg){var self=this;if($truthy(self.args["$include?"](arg))){}else{self.args["$<<"](arg)}return arg},TMP_ScopeNode_add_arg_21.$$arity=1);Opal.defn(self,"$add_scope_local",TMP_ScopeNode_add_scope_local_22=function $$add_scope_local(local){var self=this;if($truthy(self["$has_local?"](local))){return nil}return self.locals["$<<"](local)},TMP_ScopeNode_add_scope_local_22.$$arity=1);Opal.defn(self,"$has_local?",TMP_ScopeNode_has_local$q_23=function(local){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.locals["$include?"](local))?$b:self.args["$include?"](local))?$a:self.temps["$include?"](local))){return true}if($truthy($truthy($a=self.parent)?self.type["$=="]("iter"):$a)){return self.parent["$has_local?"](local)}return false},TMP_ScopeNode_has_local$q_23.$$arity=1);Opal.defn(self,"$add_scope_temp",TMP_ScopeNode_add_scope_temp_24=function $$add_scope_temp(tmp){var self=this;if($truthy(self["$has_temp?"](tmp))){return nil}return self.temps.$push(tmp)},TMP_ScopeNode_add_scope_temp_24.$$arity=1);Opal.defn(self,"$has_temp?",TMP_ScopeNode_has_temp$q_25=function(tmp){var self=this;return self.temps["$include?"](tmp)},TMP_ScopeNode_has_temp$q_25.$$arity=1);Opal.defn(self,"$new_temp",TMP_ScopeNode_new_temp_26=function $$new_temp(){var self=this,tmp=nil;if($truthy(self.queue["$empty?"]())){}else{return self.queue.$pop()}tmp=self.$next_temp();self.temps["$<<"](tmp);return tmp},TMP_ScopeNode_new_temp_26.$$arity=0);Opal.defn(self,"$next_temp",TMP_ScopeNode_next_temp_27=function $$next_temp(){var $a,self=this,tmp=nil;while($truthy(true)){tmp=""+"$"+self.unique;self.unique=self.unique.$succ();if($truthy(self["$has_local?"](tmp))){}else{break}}return tmp},TMP_ScopeNode_next_temp_27.$$arity=0);Opal.defn(self,"$queue_temp",TMP_ScopeNode_queue_temp_28=function $$queue_temp(name){var self=this;return self.queue["$<<"](name)},TMP_ScopeNode_queue_temp_28.$$arity=1);Opal.defn(self,"$push_while",TMP_ScopeNode_push_while_29=function $$push_while(){var self=this,info=nil;info=$hash2([],{});self.while_stack.$push(info);return info},TMP_ScopeNode_push_while_29.$$arity=0);Opal.defn(self,"$pop_while",TMP_ScopeNode_pop_while_30=function $$pop_while(){var self=this;return self.while_stack.$pop()},TMP_ScopeNode_pop_while_30.$$arity=0);Opal.defn(self,"$in_while?",TMP_ScopeNode_in_while$q_31=function(){var self=this;return self.while_stack["$empty?"]()["$!"]()},TMP_ScopeNode_in_while$q_31.$$arity=0);Opal.defn(self,"$uses_block!",TMP_ScopeNode_uses_block$B_32=function(){var $a,self=this;if($truthy(($a=self.type["$=="]("iter"))?self.parent:self.type["$=="]("iter"))){return self.parent["$uses_block!"]()}else{self.uses_block=true;return self["$identify!"]()}},TMP_ScopeNode_uses_block$B_32.$$arity=0);Opal.defn(self,"$identify!",TMP_ScopeNode_identify$B_33=function(name){var $a,$b,$c,self=this;if(name==null){name=nil}if($truthy(self.identity)){return self.identity}name=$truthy($a=name)?$a:[$truthy($b=self.$parent())?$truthy($c=self.$parent().$name())?$c:self.$parent().$scope_name():$b,self.$mid()].$compact().$join("_");self.identity=self.compiler.$unique_temp(name);if($truthy(self.parent)){self.parent.$add_scope_temp(self.identity)}return self.identity},TMP_ScopeNode_identify$B_33.$$arity=-1);Opal.defn(self,"$identity",TMP_ScopeNode_identity_34=function $$identity(){var self=this;return self.identity},TMP_ScopeNode_identity_34.$$arity=0);Opal.defn(self,"$find_parent_def",TMP_ScopeNode_find_parent_def_35=function $$find_parent_def(){var $a,self=this,scope=nil;scope=self;while($truthy(scope=scope.$parent())){if($truthy(scope["$def?"]())){return scope}}return nil},TMP_ScopeNode_find_parent_def_35.$$arity=0);Opal.defn(self,"$get_super_chain",TMP_ScopeNode_get_super_chain_36=function $$get_super_chain(){var $a,self=this,chain=nil,scope=nil,defn=nil,mid=nil;$a=[[],self,"null","null"],chain=$a[0],scope=$a[1],defn=$a[2],mid=$a[3],$a;while($truthy(scope)){if(scope.$type()["$=="]("iter")){chain["$<<"](scope["$identify!"]());if($truthy(scope.$parent())){scope=scope.$parent()}}else if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"]();mid=""+"'"+scope.$mid()+"'";break}else{break}}return[chain,defn,mid]},TMP_ScopeNode_get_super_chain_36.$$arity=0);Opal.defn(self,"$uses_block?",TMP_ScopeNode_uses_block$q_37=function(){var self=this;return self.uses_block},TMP_ScopeNode_uses_block$q_37.$$arity=0);Opal.defn(self,"$has_rescue_else?",TMP_ScopeNode_has_rescue_else$q_38=function(){var self=this;return self.$rescue_else_sexp()["$!"]()["$!"]()},TMP_ScopeNode_has_rescue_else$q_38.$$arity=0);Opal.defn(self,"$in_ensure",TMP_ScopeNode_in_ensure_39=function $$in_ensure(){var self=this,$iter=TMP_ScopeNode_in_ensure_39.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_ScopeNode_in_ensure_39.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},TMP_ScopeNode_in_ensure_39.$$arity=0);return(Opal.defn(self,"$in_ensure?",TMP_ScopeNode_in_ensure$q_40=function(){var self=this;return self.in_ensure["$!"]()["$!"]()},TMP_ScopeNode_in_ensure$q_40.$$arity=0),nil)&&"in_ensure?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/module"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$proto","$stmt","$body","$s","$empty_line","$to_vars","$cid","$nil?","$expr"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ModuleNode(){}var self=$ModuleNode=$klass($base,$super,"ModuleNode",$ModuleNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ModuleNode_compile_2,TMP_ModuleNode_name_and_base_3;self.$handle("module");self.$children("cid","body");Opal.defn(self,"$compile",TMP_ModuleNode_compile_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("module");self.$push("(function($base, $parent_nesting) {");self.$line(""+" var $"+name+", self = $"+name+" = $module($base, '"+name+"');");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,$c,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$stmt($truthy($c=self.$body())?$c:self.$s("nil"));self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(",base,", $nesting)")},TMP_ModuleNode_compile_2.$$arity=0);return(Opal.defn(self,"$name_and_base",TMP_ModuleNode_name_and_base_3=function $$name_and_base(){var $a,$b,self=this,base=nil,name=nil;$b=self.$cid().$children(),$a=Opal.to_ary($b),base=$a[0]==null?nil:$a[0],name=$a[1]==null?nil:$a[1],$b;if($truthy(base["$nil?"]())){return[name,"$nesting[0]"]}else{return[name,self.$expr(base)]}},TMP_ModuleNode_name_and_base_3.$$arity=0),nil)&&"name_and_base"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/class"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name_and_base","$helper","$push","$line","$in_scope","$name=","$scope","$-","$add_temp","$proto","$body_code","$empty_line","$to_vars","$super_code","$sup","$expr","$stmt","$returns","$compiler","$body","$s"]);self.$require("opal/nodes/module");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ClassNode(){}var self=$ClassNode=$klass($base,$super,"ClassNode",$ClassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ClassNode_compile_2,TMP_ClassNode_super_code_3,TMP_ClassNode_body_code_4;self.$handle("class");self.$children("cid","sup","body");Opal.defn(self,"$compile",TMP_ClassNode_compile_2=function $$compile(){var $a,$b,TMP_1,self=this,name=nil,base=nil;$b=self.$name_and_base(),$a=Opal.to_ary($b),name=$a[0]==null?nil:$a[0],base=$a[1]==null?nil:$a[1],$b;self.$helper("klass");self.$push("(function($base, $super, $parent_nesting) {");self.$line(""+" function $"+name+"(){};");self.$line(""+" var self = $"+name+" = $klass($base, $super, '"+name+"', $"+name+");");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,$writer=nil,body_code=nil;$writer=[name];$send(self.$scope(),"name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_temp(""+self.$scope().$proto()+" = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_code=self.$body_code();self.$empty_line();self.$line(self.$scope().$to_vars());return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(",base,", ",self.$super_code(),", $nesting)")},TMP_ClassNode_compile_2.$$arity=0);Opal.defn(self,"$super_code",TMP_ClassNode_super_code_3=function $$super_code(){var self=this;if($truthy(self.$sup())){return self.$expr(self.$sup())}else{return"null"}},TMP_ClassNode_super_code_3.$$arity=0);return(Opal.defn(self,"$body_code",TMP_ClassNode_body_code_4=function $$body_code(){var $a,self=this;return self.$stmt(self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil")))},TMP_ClassNode_body_code_4.$$arity=0),nil)&&"body_code"})($nesting[0],Opal.const_get_relative($nesting,"ModuleNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$push","$in_scope","$add_temp","$stmt","$returns","$compiler","$body","$line","$to_vars","$scope","$recv","$object"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $SingletonClassNode(){}var self=$SingletonClassNode=$klass($base,$super,"SingletonClassNode",$SingletonClassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SingletonClassNode_compile_2;self.$handle("sclass");self.$children("object","body");return(Opal.defn(self,"$compile",TMP_SingletonClassNode_compile_2=function $$compile(){var TMP_1,self=this;self.$push("(function(self, $parent_nesting) {");$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,body_stmt=nil;self.$add_temp("def = self.$$proto");self.$add_temp("$nesting = [self].concat($parent_nesting)");body_stmt=self.$stmt(self.$compiler().$returns(self.$body()));self.$line(self.$scope().$to_vars());return self.$line(body_stmt)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$line("})(Opal.get_singleton_class(",self.$recv(self.$object()),"), $nesting)")},TMP_SingletonClassNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/inline_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$push","$join","$arg_names","$inject","$children","$type","$===","$<<","$add_arg","$next_temp","$scope","$[]=","$mlhs_mapping","$-","$!","$[]","$meta","$!=","$+","$raise","$inspect"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $InlineArgs(){}var self=$InlineArgs=$klass($base,$super,"InlineArgs",$InlineArgs);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InlineArgs_compile_1,TMP_InlineArgs_arg_names_3,TMP_InlineArgs_add_arg_4;self.$handle("inline_args");Opal.defn(self,"$compile",TMP_InlineArgs_compile_1=function $$compile(){var self=this;return self.$push(self.$arg_names().$join(", "))},TMP_InlineArgs_compile_1.$$arity=0);Opal.defn(self,"$arg_names",TMP_InlineArgs_arg_names_3=function $$arg_names(){var TMP_2,self=this,done_kwargs=nil;done_kwargs=false;return $send(self.$children(),"inject",[[]],(TMP_2=function(result,arg){var self=TMP_2.$$s||this,$a,$case=nil,tmp=nil,$writer=nil,arg_name=nil,_=nil,tmp_arg_name=nil;if(result==null)result=nil;if(arg==null)arg=nil;$case=arg.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if($truthy(done_kwargs)){}else{done_kwargs=true;result["$<<"]("$kwargs")}self.$add_arg(arg)}else if("mlhs"["$==="]($case)){tmp=self.$scope().$next_temp();result["$<<"](tmp);$writer=[arg,tmp];$send(self.$scope().$mlhs_mapping(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else if("arg"["$==="]($case)||"optarg"["$==="]($case)){$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy($truthy($a=arg.$meta()["$[]"]("inline")["$!"]())?arg_name["$[]"](0)["$!="]("$"):$a)){arg_name=""+"$"+arg_name}result["$<<"](arg_name);self.$add_arg(arg)}else if("restarg"["$==="]($case)){tmp_arg_name=$rb_plus(self.$scope().$next_temp(),"_rest");result["$<<"](tmp_arg_name);self.$add_arg(arg)}else{self.$raise(""+"Unknown argument type "+arg.$inspect())}return result},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2))},TMP_InlineArgs_arg_names_3.$$arity=0);return(Opal.defn(self,"$add_arg",TMP_InlineArgs_add_arg_4=function $$add_arg(arg){var $a,self=this,arg_name=nil,_=nil;$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(arg_name)){return self.$scope().$add_arg(arg_name)}else{return nil}},TMP_InlineArgs_add_arg_4.$$arity=1),nil)&&"add_arg"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/normarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$add_temp","$name","$line","$working_arguments","$scope","$in_mlhs?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NormargNode(){}var self=$NormargNode=$klass($base,$super,"NormargNode",$NormargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NormargNode_compile_1;def.sexp=nil;self.$handle("arg");self.$children("name");return(Opal.defn(self,"$compile",TMP_NormargNode_compile_1=function $$compile(){var self=this;if($truthy(self.sexp.$meta()["$[]"]("post"))){self.$add_temp(self.$name());self.$line(""+self.$name()+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")}if($truthy(self.$scope()["$in_mlhs?"]())){self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = nil;");return self.$line("}")}else{return nil}},TMP_NormargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$==","$[]","$default_value","$line","$name","$expr","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $OptargNode(){}var self=$OptargNode=$klass($base,$super,"OptargNode",$OptargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_OptargNode_compile_1;self.$handle("optarg");self.$children("name","default_value");return(Opal.defn(self,"$compile",TMP_OptargNode_compile_1=function $$compile(){var self=this;if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$name()+" == null) {");self.$line(""+" "+self.$name()+" = ",self.$expr(self.$default_value()));self.$push(";");return self.$line("}")},TMP_OptargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/mlhsarg"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$s","$children","$[]","$meta","$mlhs_name","$[]=","$-","$with_inline_args","$scope","$push","$process","$mlhs_mapping","$line","$in_mlhs","$each","$type","$===","$<<","$join","$to_s","$take_while","$!="]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $MlhsArgNode(){}var self=$MlhsArgNode=$klass($base,$super,"MlhsArgNode",$MlhsArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MlhsArgNode_compile_4,TMP_MlhsArgNode_mlhs_name_6,TMP_MlhsArgNode_inline_args_8;def.sexp=def.mlhs_name=def.inline_args=nil;self.$handle("mlhs");Opal.defn(self,"$compile",TMP_MlhsArgNode_compile_4=function $$compile(){var TMP_1,TMP_2,self=this,args_sexp=nil,mlhs_sexp=nil,$writer=nil,var_name=nil;args_sexp=$send(self,"s",["post_args"].concat(Opal.to_a(self.$children())));if($truthy(self.sexp.$meta()["$[]"]("post"))){mlhs_sexp=self.$s("arg",self.$mlhs_name());$writer=["post",true];$send(mlhs_sexp.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];$send(self.$scope(),"with_inline_args",[[]],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$push(self.$process(mlhs_sexp))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));var_name=($writer=["js_source",self.$mlhs_name()],$send(args_sexp.$meta(),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])}else{var_name=($writer=["js_source",self.$scope().$mlhs_mapping()["$[]"](self.sexp)],$send(args_sexp.$meta(),"[]=",Opal.to_a($writer)),$writer[$rb_minus($writer["length"],1)])}self.$line(""+"if ("+var_name+" == null) {");self.$line(""+" "+var_name+" = nil;");self.$line("}");self.$line(""+var_name+" = Opal.to_ary("+var_name+");");return $send(self.$scope(),"with_inline_args",[[]],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3;return $send(self.$scope(),"in_mlhs",[],(TMP_3=function(){var self=TMP_3.$$s||this;return self.$push(self.$process(args_sexp))},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3))},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_MlhsArgNode_compile_4.$$arity=0);Opal.defn(self,"$mlhs_name",TMP_MlhsArgNode_mlhs_name_6=function $$mlhs_name(){var $a,TMP_5,self=this,result=nil;return self.mlhs_name=$truthy($a=self.mlhs_name)?$a:function(){if($truthy(self.sexp.$meta()["$[]"]("post"))){result=["$mlhs_of"];$send(self.$children(),"each",[],(TMP_5=function(child){var self=TMP_5.$$s||this,$case=nil;if(child==null)child=nil;return function(){$case=child.$type();if("arg"["$==="]($case)){return result["$<<"](child.$children()["$[]"](0))}else if("mlhs"["$==="]($case)){return result["$<<"]("mlhs")}else{return nil}}()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));return result.$join("_")}else{return self.sexp.$children()["$[]"](0).$to_s()}return nil}()},TMP_MlhsArgNode_mlhs_name_6.$$arity=0);return(Opal.defn(self,"$inline_args",TMP_MlhsArgNode_inline_args_8=function $$inline_args(){var $a,TMP_7,self=this;return self.inline_args=$truthy($a=self.inline_args)?$a:$send(self.$children(),"take_while",[],(TMP_7=function(arg){var self=TMP_7.$$s||this,$b;if(arg==null)arg=nil;return $truthy($b=arg.$type()["$!="]("restarg"))?arg.$type()["$!="]("optarg"):$b},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_MlhsArgNode_inline_args_8.$$arity=0),nil)&&"inline_args"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/restarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$name","$add_temp","$[]","$meta","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $RestargNode(){}var self=$RestargNode=$klass($base,$super,"RestargNode",$RestargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RestargNode_compile_1;def.sexp=nil;self.$handle("restarg");self.$children("name");return(Opal.defn(self,"$compile",TMP_RestargNode_compile_1=function $$compile(){var self=this,offset=nil;if($truthy(self.$name())){}else{return nil}self.$add_temp(self.$name());if($truthy(self.sexp.$meta()["$[]"]("post"))){return self.$line(""+self.$name()+" = "+self.$scope().$working_arguments()+";")}else{offset=self.sexp.$meta()["$[]"]("offset");self.$line(""+"var $args_len = arguments.length, $rest_len = $args_len - "+offset+";");self.$line("if ($rest_len < 0) { $rest_len = 0; }");self.$line(""+self.$name()+" = new Array($rest_len);");self.$line(""+"for (var $arg_idx = "+offset+"; $arg_idx < $args_len; $arg_idx++) {");self.$line(""+" "+self.$name()+"[$arg_idx - "+offset+"] = arguments[$arg_idx];");return self.$line("}")}},TMP_RestargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/initialize_kwargs"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$kwargs_initialized","$scope","$helper","$line","$kwargs_initialized=","$-"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $InitializeKwargsNode(){}var self=$InitializeKwargsNode=$klass($base,$super,"InitializeKwargsNode",$InitializeKwargsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1;return(Opal.defn(self,"$initialize_kw_args_if_needed",TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1=function $$initialize_kw_args_if_needed(){var self=this,$writer=nil;if($truthy(self.$scope().$kwargs_initialized())){return nil}self.$helper("hash2");self.$line("if ($kwargs == null || !$kwargs.$$is_hash) {");self.$line(" if ($kwargs == null) {");self.$line(" $kwargs = $hash2([], {});");self.$line(" } else {");self.$line(" throw Opal.ArgumentError.$new('expected kwargs');");self.$line(" }");self.$line("}");$writer=[true];$send(self.$scope(),"kwargs_initialized=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_InitializeKwargsNode_initialize_kw_args_if_needed_1.$$arity=0),nil)&&"initialize_kw_args_if_needed"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$initialize_kw_args_if_needed","$add_temp","$lvar_name","$line","$inspect","$to_s","$<<","$used_kwargs","$scope"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwargNode(){}var self=$KwargNode=$klass($base,$super,"KwargNode",$KwargNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwargNode_compile_1;def.sexp=nil;self.$handle("kwarg");self.$children("lvar_name");return(Opal.defn(self,"$compile",TMP_KwargNode_compile_1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$initialize_kw_args_if_needed();self.$add_temp(self.$lvar_name());self.$line(""+"if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {");self.$line(""+" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');");self.$line("}");self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];");return self.$scope().$used_kwargs()["$<<"](key_name)},TMP_KwargNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass;Opal.add_stubs(["$require","$handle","$children","$[]","$meta","$initialize_kw_args_if_needed","$add_temp","$lvar_name","$line","$inspect","$to_s","$<<","$used_kwargs","$scope","$==","$default_value","$expr"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwoptArgNode(){}var self=$KwoptArgNode=$klass($base,$super,"KwoptArgNode",$KwoptArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwoptArgNode_compile_1;def.sexp=nil;self.$handle("kwoptarg");self.$children("lvar_name","default_value");return(Opal.defn(self,"$compile",TMP_KwoptArgNode_compile_1=function $$compile(){var self=this,key_name=nil;key_name=self.sexp.$meta()["$[]"]("arg_name");self.$initialize_kw_args_if_needed();self.$add_temp(self.$lvar_name());self.$line(""+self.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];");self.$scope().$used_kwargs()["$<<"](key_name);if(self.$default_value().$children()["$[]"](1)["$=="]("undefined")){return nil}self.$line(""+"if ("+self.$lvar_name()+" == null) {");self.$line(""+" "+self.$lvar_name()+" = ",self.$expr(self.$default_value()));return self.$line("}")},TMP_KwoptArgNode_compile_1.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$initialize_kw_args_if_needed","$used_kwargs","$name","$add_temp","$line","$map","$scope","$join"]);self.$require("opal/nodes/args/initialize_kwargs");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $KwrestArgNode(){}var self=$KwrestArgNode=$klass($base,$super,"KwrestArgNode",$KwrestArgNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwrestArgNode_compile_1,TMP_KwrestArgNode_used_kwargs_3;self.$handle("kwrestarg");self.$children("name");Opal.defn(self,"$compile",TMP_KwrestArgNode_compile_1=function $$compile(){var self=this,extract_code=nil;self.$initialize_kw_args_if_needed();extract_code=""+"Opal.kwrestargs($kwargs, "+self.$used_kwargs()+");";if($truthy(self.$name())){self.$add_temp(self.$name());return self.$line(""+self.$name()+" = "+extract_code)}else{return nil}},TMP_KwrestArgNode_compile_1.$$arity=0);return(Opal.defn(self,"$used_kwargs",TMP_KwrestArgNode_used_kwargs_3=function $$used_kwargs(){var TMP_2,self=this,args=nil;args=$send(self.$scope().$used_kwargs(),"map",[],(TMP_2=function(arg_name){var self=TMP_2.$$s||this;if(arg_name==null)arg_name=nil;return""+"'"+arg_name+"': true"},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));return""+"{"+args.$join(",")+"}"},TMP_KwrestArgNode_used_kwargs_3.$$arity=0),nil)&&"used_kwargs"})($nesting[0],Opal.const_get_relative($nesting,"InitializeKwargsNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/post_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$empty?","$children","$initialize_kw_args","$each","$push","$process","$line","$working_arguments","$scope"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $PostKwargsNode(){}var self=$PostKwargsNode=$klass($base,$super,"PostKwargsNode",$PostKwargsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_PostKwargsNode_compile_2,TMP_PostKwargsNode_initialize_kw_args_3;self.$handle("post_kwargs");Opal.defn(self,"$compile",TMP_PostKwargsNode_compile_2=function $$compile(){var TMP_1,self=this;if($truthy(self.$children()["$empty?"]())){return nil}self.$initialize_kw_args();return $send(self.$children(),"each",[],(TMP_1=function(arg){var self=TMP_1.$$s||this;if(arg==null)arg=nil;return self.$push(self.$process(arg))},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_PostKwargsNode_compile_2.$$arity=0);return(Opal.defn(self,"$initialize_kw_args",TMP_PostKwargsNode_initialize_kw_args_3=function $$initialize_kw_args(){var self=this;return self.$line(""+"$kwargs = Opal.extract_kwargs("+self.$scope().$working_arguments()+");")},TMP_PostKwargsNode_initialize_kw_args_3.$$arity=0),nil)&&"initialize_kw_args"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/args/post_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$attr_reader","$each","$children","$[]=","$meta","$-","$type","$===","$<<","$empty?","$working_arguments","$scope","$[]","$working_arguments=","$add_temp","$line","$size","$inline_args","$extract_arguments","$push","$process","$kwargs_sexp","$required_left_args","$compile_required_arg","$optargs","$compile_optarg","$compile_restarg","$required_right_args","$indent","$restarg","$extract_restarg","$extract_blank_restarg","$s","$kwargs"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $PostArgsNode(){}var self=$PostArgsNode=$klass($base,$super,"PostArgsNode",$PostArgsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_PostArgsNode_initialize_1,TMP_PostArgsNode_extract_arguments_3,TMP_PostArgsNode_compile_7,TMP_PostArgsNode_compile_optarg_9,TMP_PostArgsNode_compile_required_arg_10,TMP_PostArgsNode_compile_restarg_13,TMP_PostArgsNode_extract_restarg_14,TMP_PostArgsNode_extract_blank_restarg_15,TMP_PostArgsNode_kwargs_sexp_16;def.sexp=nil;self.$handle("post_args");self.$attr_reader("kwargs");self.$attr_reader("required_left_args");self.$attr_reader("optargs");self.$attr_reader("restarg");self.$attr_reader("required_right_args");Opal.defn(self,"$initialize",TMP_PostArgsNode_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_PostArgsNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_PostArgsNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_PostArgsNode_initialize_1,false),$zuper,$iter);self.kwargs=[];self.required_left_args=[];self.optargs=[];self.restarg=nil;return self.required_right_args=[]},TMP_PostArgsNode_initialize_1.$$arity=-1);Opal.defn(self,"$extract_arguments",TMP_PostArgsNode_extract_arguments_3=function $$extract_arguments(){var TMP_2,self=this,found_opt_or_rest=nil;found_opt_or_rest=false;return $send(self.$children(),"each",[],(TMP_2=function(arg){var self=TMP_2.$$s||this,$writer=nil,$case=nil;if(self.kwargs==null)self.kwargs=nil;if(self.optargs==null)self.optargs=nil;if(self.required_right_args==null)self.required_right_args=nil;if(self.required_left_args==null)self.required_left_args=nil;if(arg==null)arg=nil;$writer=["post",true];$send(arg.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return function(){$case=arg.$type();if("kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){return self.kwargs["$<<"](arg)}else if("restarg"["$==="]($case)){self.restarg=arg;return found_opt_or_rest=true}else if("optarg"["$==="]($case)){self.optargs["$<<"](arg);return found_opt_or_rest=true}else if("arg"["$==="]($case)||"mlhs"["$==="]($case)){if($truthy(found_opt_or_rest)){return self.required_right_args["$<<"](arg)}else{return self.required_left_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_PostArgsNode_extract_arguments_3.$$arity=0);Opal.defn(self,"$compile",TMP_PostArgsNode_compile_7=function $$compile(){var TMP_4,TMP_5,TMP_6,self=this,old_working_arguments=nil,js_source=nil,$writer=nil;if($truthy(self.$children()["$empty?"]())){return nil}old_working_arguments=self.$scope().$working_arguments();if($truthy(self.sexp.$meta()["$[]"]("js_source"))){js_source=self.sexp.$meta()["$[]"]("js_source");$writer=[""+js_source+"_args"];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}else{js_source="arguments";$writer=["$post_args"];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}self.$add_temp(""+self.$scope().$working_arguments());self.$line(""+self.$scope().$working_arguments()+" = Opal.slice.call("+js_source+", "+self.$scope().$inline_args().$size()+", "+js_source+".length);");self.$extract_arguments();self.$push(self.$process(self.$kwargs_sexp()));$send(self.$required_left_args(),"each",[],(TMP_4=function(arg){var self=TMP_4.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));$send(self.$optargs(),"each",[],(TMP_5=function(optarg){var self=TMP_5.$$s||this;if(optarg==null)optarg=nil;return self.$compile_optarg(optarg)},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));self.$compile_restarg();$send(self.$required_right_args(),"each",[],(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return self.$compile_required_arg(arg)},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));$writer=[old_working_arguments];$send(self.$scope(),"working_arguments=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_PostArgsNode_compile_7.$$arity=0);Opal.defn(self,"$compile_optarg",TMP_PostArgsNode_compile_optarg_9=function $$compile_optarg(optarg){var $a,TMP_8,self=this,var_name=nil,_=nil;$a=[].concat(Opal.to_a(optarg)),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;self.$add_temp(var_name);self.$line(""+"if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");$send(self,"indent",[],(TMP_8=function(){var self=TMP_8.$$s||this;return self.$line(""+var_name+" = "+self.$scope().$working_arguments()+".splice(0,1)[0];")},TMP_8.$$s=self,TMP_8.$$arity=0,TMP_8));self.$line("}");return self.$push(self.$process(optarg))},TMP_PostArgsNode_compile_optarg_9.$$arity=1);Opal.defn(self,"$compile_required_arg",TMP_PostArgsNode_compile_required_arg_10=function $$compile_required_arg(arg){var self=this;return self.$push(self.$process(arg))},TMP_PostArgsNode_compile_required_arg_10.$$arity=1);Opal.defn(self,"$compile_restarg",TMP_PostArgsNode_compile_restarg_13=function $$compile_restarg(){var TMP_11,TMP_12,self=this;if($truthy(self.$restarg())){}else{return nil}self.$line(""+"if ("+self.$required_right_args().$size()+" < "+self.$scope().$working_arguments()+".length) {");$send(self,"indent",[],(TMP_11=function(){var self=TMP_11.$$s||this;return self.$extract_restarg()},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11));self.$line("} else {");$send(self,"indent",[],(TMP_12=function(){var self=TMP_12.$$s||this;return self.$extract_blank_restarg()},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));return self.$line("}")},TMP_PostArgsNode_compile_restarg_13.$$arity=0);Opal.defn(self,"$extract_restarg",TMP_PostArgsNode_extract_restarg_14=function $$extract_restarg(){var $a,self=this,extract_code=nil,var_name=nil,_=nil;extract_code=""+self.$scope().$working_arguments()+".splice(0, "+self.$scope().$working_arguments()+".length - "+self.$required_right_args().$size()+");";$a=[].concat(Opal.to_a(self.$restarg())),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(var_name)){self.$add_temp(var_name);return self.$line(""+var_name+" = "+extract_code)}else{return self.$line(extract_code)}},TMP_PostArgsNode_extract_restarg_14.$$arity=0);Opal.defn(self,"$extract_blank_restarg",TMP_PostArgsNode_extract_blank_restarg_15=function $$extract_blank_restarg(){var $a,self=this,var_name=nil,_=nil;$a=[].concat(Opal.to_a(self.$restarg())),var_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;if($truthy(var_name)){self.$add_temp(var_name);return self.$line(""+var_name+" = [];")}else{return nil}},TMP_PostArgsNode_extract_blank_restarg_15.$$arity=0);return(Opal.defn(self,"$kwargs_sexp",TMP_PostArgsNode_kwargs_sexp_16=function $$kwargs_sexp(){var self=this;return $send(self,"s",["post_kwargs"].concat(Opal.to_a(self.$kwargs())))},TMP_PostArgsNode_kwargs_sexp_16.$$arity=0),nil)&&"kwargs_sexp"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/node_with_args"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_lt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhsrhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$truthy=Opal.truthy;Opal.add_stubs(["$require","$attr_accessor","$attr_writer","$attr_reader","$children","$args","$each_with_index","$type","$===","$<<","$any?","$[]","$length","$!=","$map!","$inline_args","$updated","$optimize_args!","$select","$==","$find","$include?","$s","$post_args","$each","$push","$process","$post_args_sexp","$uses_block?","$scope","$identity","$block_name","$add_temp","$line","$inline_args=","$-","$first","$pop","$[]=","$meta","$keyword_args","$all?","$rest_arg","$opt_args","$has_only_optional_kwargs?","$negative_arity","$positive_arity","$size","$has_required_kwargs?","$+","$-@","$map","$build_parameter","$block_arg","$join","$!","$empty?","$<","$>"]);self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NodeWithArgs(){}var self=$NodeWithArgs=$klass($base,$super,"NodeWithArgs",$NodeWithArgs);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NodeWithArgs_initialize_1,TMP_NodeWithArgs_split_args_5,TMP_NodeWithArgs_opt_args_7,TMP_NodeWithArgs_rest_arg_9,TMP_NodeWithArgs_keyword_args_11,TMP_NodeWithArgs_inline_args_sexp_12,TMP_NodeWithArgs_post_args_sexp_13,TMP_NodeWithArgs_compile_inline_args_15,TMP_NodeWithArgs_compile_post_args_16,TMP_NodeWithArgs_compile_block_arg_17,TMP_NodeWithArgs_with_inline_args_18,TMP_NodeWithArgs_in_mlhs_19,TMP_NodeWithArgs_in_mlhs$q_20,TMP_NodeWithArgs_optimize_args$B_21,TMP_NodeWithArgs_has_only_optional_kwargs$q_23,TMP_NodeWithArgs_has_required_kwargs$q_25,TMP_NodeWithArgs_arity_26,TMP_NodeWithArgs_negative_arity_28,TMP_NodeWithArgs_positive_arity_29,TMP_NodeWithArgs_build_parameter_30,TMP_NodeWithArgs_parameters_code_32,TMP_NodeWithArgs_arity_checks_33;def.opt_args=def.rest_arg=def.keyword_args=def.in_mlhs=def.arity_checks=nil;self.$attr_accessor("mlhs_args");self.$attr_accessor("used_kwargs");self.$attr_accessor("mlhs_mapping");self.$attr_accessor("working_arguments");self.$attr_writer("inline_args");self.$attr_accessor("kwargs_initialized");self.$attr_reader("inline_args","post_args");Opal.defn(self,"$initialize",TMP_NodeWithArgs_initialize_1=function $$initialize($a_rest){var self=this,$iter=TMP_NodeWithArgs_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_NodeWithArgs_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_NodeWithArgs_initialize_1,false),$zuper,$iter);self.mlhs_args=$hash2([],{});self.used_kwargs=[];self.mlhs_mapping=$hash2([],{});self.working_arguments=nil;self.in_mlhs=false;self.kwargs_initialized=false;self.inline_args=[];self.post_args=[];return self.post_args_started=false},TMP_NodeWithArgs_initialize_1.$$arity=-1);Opal.defn(self,"$split_args",TMP_NodeWithArgs_split_args_5=function $$split_args(){var TMP_2,TMP_4,self=this,args=nil;args=self.$args().$children();$send(args,"each_with_index",[],(TMP_2=function(arg,idx){var self=TMP_2.$$s||this,TMP_3,$case=nil;if(self.post_args_started==null)self.post_args_started=nil;if(self.post_args==null)self.post_args=nil;if(self.inline_args==null)self.inline_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;return function(){$case=arg.$type();if("arg"["$==="]($case)||"mlhs"["$==="]($case)||"kwarg"["$==="]($case)||"kwoptarg"["$==="]($case)||"kwrestarg"["$==="]($case)){if($truthy(self.post_args_started)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else if("restarg"["$==="]($case)){self.post_args_started=true;return self.post_args["$<<"](arg)}else if("optarg"["$==="]($case)){if($truthy($send(args["$[]"](idx,args.$length()),"any?",[],(TMP_3=function(next_arg){var self=TMP_3.$$s||this,$a;if(next_arg==null)next_arg=nil;return $truthy($a=next_arg.$type()["$!="]("optarg"))?next_arg.$type()["$!="]("restarg"):$a},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3)))){self.post_args_started=true}if($truthy(self.post_args_started)){return self.post_args["$<<"](arg)}else{return self.inline_args["$<<"](arg)}}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=2,TMP_2));$send(self.$inline_args(),"map!",[],(TMP_4=function(inline_arg){var self=TMP_4.$$s||this;if(inline_arg==null)inline_arg=nil;return inline_arg.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["inline"],{inline:true})}))},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4));return self["$optimize_args!"]()},TMP_NodeWithArgs_split_args_5.$$arity=0);Opal.defn(self,"$opt_args",TMP_NodeWithArgs_opt_args_7=function $$opt_args(){var $a,TMP_6,self=this;return self.opt_args=$truthy($a=self.opt_args)?$a:$send(self.$args().$children(),"select",[],(TMP_6=function(arg){var self=TMP_6.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("optarg")},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6))},TMP_NodeWithArgs_opt_args_7.$$arity=0);Opal.defn(self,"$rest_arg",TMP_NodeWithArgs_rest_arg_9=function $$rest_arg(){var $a,TMP_8,self=this;return self.rest_arg=$truthy($a=self.rest_arg)?$a:$send(self.$args().$children(),"find",[],(TMP_8=function(arg){var self=TMP_8.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("restarg")},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_NodeWithArgs_rest_arg_9.$$arity=0);Opal.defn(self,"$keyword_args",TMP_NodeWithArgs_keyword_args_11=function $$keyword_args(){var $a,TMP_10,self=this;return self.keyword_args=$truthy($a=self.keyword_args)?$a:$send(self.$args().$children(),"select",[],(TMP_10=function(arg){var self=TMP_10.$$s||this;if(arg==null)arg=nil;return["kwarg","kwoptarg","kwrestarg"]["$include?"](arg.$type())},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10))},TMP_NodeWithArgs_keyword_args_11.$$arity=0);Opal.defn(self,"$inline_args_sexp",TMP_NodeWithArgs_inline_args_sexp_12=function $$inline_args_sexp(){var self=this;return $send(self,"s",["inline_args"].concat(Opal.to_a(self.$args().$children())))},TMP_NodeWithArgs_inline_args_sexp_12.$$arity=0);Opal.defn(self,"$post_args_sexp",TMP_NodeWithArgs_post_args_sexp_13=function $$post_args_sexp(){var self=this;return $send(self,"s",["post_args"].concat(Opal.to_a(self.$post_args())))},TMP_NodeWithArgs_post_args_sexp_13.$$arity=0);Opal.defn(self,"$compile_inline_args",TMP_NodeWithArgs_compile_inline_args_15=function $$compile_inline_args(){var TMP_14,self=this;return $send(self.$inline_args(),"each",[],(TMP_14=function(inline_arg){var self=TMP_14.$$s||this;if(inline_arg==null)inline_arg=nil;return self.$push(self.$process(inline_arg))},TMP_14.$$s=self,TMP_14.$$arity=1,TMP_14))},TMP_NodeWithArgs_compile_inline_args_15.$$arity=0);Opal.defn(self,"$compile_post_args",TMP_NodeWithArgs_compile_post_args_16=function $$compile_post_args(){var self=this;return self.$push(self.$process(self.$post_args_sexp()))},TMP_NodeWithArgs_compile_post_args_16.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_NodeWithArgs_compile_block_arg_17=function $$compile_block_arg(){var self=this,scope_name=nil,yielder=nil;if($truthy(self.$scope()["$uses_block?"]())){scope_name=self.$scope().$identity();yielder=self.$scope().$block_name();self.$add_temp(""+"$iter = "+scope_name+".$$p");self.$add_temp(""+yielder+" = $iter || nil");return self.$line(""+"if ($iter) "+scope_name+".$$p = null;")}else{return nil}},TMP_NodeWithArgs_compile_block_arg_17.$$arity=0);Opal.defn(self,"$with_inline_args",TMP_NodeWithArgs_with_inline_args_18=function $$with_inline_args(args){var self=this,$iter=TMP_NodeWithArgs_with_inline_args_18.$$p,$yield=$iter||nil,old_inline_args=nil,$writer=nil;if($iter)TMP_NodeWithArgs_with_inline_args_18.$$p=null;old_inline_args=self.$inline_args();$writer=[args];$send(self,"inline_args=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];Opal.yieldX($yield,[]);$writer=[old_inline_args];$send(self,"inline_args=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_NodeWithArgs_with_inline_args_18.$$arity=1);Opal.defn(self,"$in_mlhs",TMP_NodeWithArgs_in_mlhs_19=function $$in_mlhs(){var self=this,$iter=TMP_NodeWithArgs_in_mlhs_19.$$p,$yield=$iter||nil,old_mlhs=nil;if($iter)TMP_NodeWithArgs_in_mlhs_19.$$p=null;old_mlhs=self.in_mlhs;self.in_mlhs=true;Opal.yieldX($yield,[]);return self.in_mlhs=old_mlhs},TMP_NodeWithArgs_in_mlhs_19.$$arity=0);Opal.defn(self,"$in_mlhs?",TMP_NodeWithArgs_in_mlhs$q_20=function(){var self=this;return self.in_mlhs},TMP_NodeWithArgs_in_mlhs$q_20.$$arity=0);Opal.defn(self,"$optimize_args!",TMP_NodeWithArgs_optimize_args$B_21=function(){var $a,self=this,rest_arg=nil,$writer=nil;if($truthy(($a=self.$post_args().$length()["$=="](1))?self.$post_args().$first().$type()["$=="]("restarg"):self.$post_args().$length()["$=="](1))){rest_arg=self.$post_args().$pop();$writer=["offset",self.$inline_args().$length()];$send(rest_arg.$meta(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$inline_args()["$<<"](rest_arg)}else{return nil}},TMP_NodeWithArgs_optimize_args$B_21.$$arity=0);Opal.defn(self,"$has_only_optional_kwargs?",TMP_NodeWithArgs_has_only_optional_kwargs$q_23=function(){var $a,TMP_22,self=this;return $truthy($a=self.$keyword_args()["$any?"]())?$send(self.$keyword_args(),"all?",[],(TMP_22=function(arg){var self=TMP_22.$$s||this;if(arg==null)arg=nil;return["kwoptarg","kwrestarg"]["$include?"](arg.$type())},TMP_22.$$s=self,TMP_22.$$arity=1,TMP_22)):$a},TMP_NodeWithArgs_has_only_optional_kwargs$q_23.$$arity=0);Opal.defn(self,"$has_required_kwargs?",TMP_NodeWithArgs_has_required_kwargs$q_25=function(){var TMP_24,self=this;return $send(self.$keyword_args(),"any?",[],(TMP_24=function(arg){var self=TMP_24.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("kwarg")},TMP_24.$$s=self,TMP_24.$$arity=1,TMP_24))},TMP_NodeWithArgs_has_required_kwargs$q_25.$$arity=0);Opal.defn(self,"$arity",TMP_NodeWithArgs_arity_26=function $$arity(){var $a,$b,self=this;if($truthy($truthy($a=$truthy($b=self.$rest_arg())?$b:self.$opt_args()["$any?"]())?$a:self["$has_only_optional_kwargs?"]())){return self.$negative_arity()}else{return self.$positive_arity()}},TMP_NodeWithArgs_arity_26.$$arity=0);Opal.defn(self,"$negative_arity",TMP_NodeWithArgs_negative_arity_28=function $$negative_arity(){var TMP_27,self=this,required_plain_args=nil,result=nil;required_plain_args=$send(self.$args().$children(),"select",[],(TMP_27=function(arg){var self=TMP_27.$$s||this;if(arg==null)arg=nil;return["arg","mlhs"]["$include?"](arg.$type())},TMP_27.$$s=self,TMP_27.$$arity=1,TMP_27));result=required_plain_args.$size();if($truthy(self["$has_required_kwargs?"]())){result=$rb_plus(result,1)}result=$rb_minus(result["$-@"](),1);return result},TMP_NodeWithArgs_negative_arity_28.$$arity=0);Opal.defn(self,"$positive_arity",TMP_NodeWithArgs_positive_arity_29=function $$positive_arity(){var self=this,result=nil;result=self.$args().$children().$size();result=$rb_minus(result,self.$keyword_args().$size());if($truthy(self.$keyword_args()["$any?"]())){result=$rb_plus(result,1)}return result},TMP_NodeWithArgs_positive_arity_29.$$arity=0);Opal.defn(self,"$build_parameter",TMP_NodeWithArgs_build_parameter_30=function $$build_parameter(parameter_type,parameter_name){var self=this;if($truthy(parameter_name)){return""+"['"+parameter_type+"', '"+parameter_name+"']"}else{return""+"['"+parameter_type+"']"}},TMP_NodeWithArgs_build_parameter_30.$$arity=2);Opal.const_set($nesting[0],"SEXP_TO_PARAMETERS",$hash2(["arg","mlhs","optarg","restarg","kwarg","kwoptarg","kwrestarg"],{arg:"req",mlhs:"req",optarg:"opt",restarg:"rest",kwarg:"keyreq",kwoptarg:"key",kwrestarg:"keyrest"}));Opal.defn(self,"$parameters_code",TMP_NodeWithArgs_parameters_code_32=function $$parameters_code(){var TMP_31,self=this,stringified_parameters=nil;stringified_parameters=$send(self.$args().$children(),"map",[],(TMP_31=function(arg){var self=TMP_31.$$s||this,value=nil;if(arg==null)arg=nil;value=function(){if(arg.$type()["$=="]("mlhs")){return nil}else{return arg.$children()["$[]"](0)}return nil}();return self.$build_parameter(Opal.const_get_relative($nesting,"SEXP_TO_PARAMETERS")["$[]"](arg.$type()),value)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));if($truthy(self.$block_arg())){stringified_parameters["$<<"](""+"['block', '"+self.$block_arg()+"']")}return""+"["+stringified_parameters.$join(", ")+"]"},TMP_NodeWithArgs_parameters_code_32.$$arity=0);return(Opal.defn(self,"$arity_checks",TMP_NodeWithArgs_arity_checks_33=function $$arity_checks(){var $a,$b,$c,self=this,arity=nil,min_arity=nil,max_arity=nil;if($truthy(($a=self["arity_checks"],$a!=null&&$a!==nil)?"instance-variable":nil)){return self.arity_checks}arity=self.$args().$children().$size();arity=$rb_minus(arity,self.$opt_args().$size());if($truthy(self.$rest_arg())){arity=$rb_minus(arity,1)}arity=$rb_minus(arity,self.$keyword_args().$size());if($truthy($truthy($b=$truthy($c=self.$opt_args()["$empty?"]()["$!"]())?$c:self.$keyword_args()["$empty?"]()["$!"]())?$b:self.$rest_arg())){arity=$rb_minus(arity["$-@"](),1)}self.arity_checks=[];if($truthy($rb_lt(arity,0))){min_arity=$rb_plus(arity,1)["$-@"]();max_arity=self.$args().$children().$size();if($truthy($rb_gt(min_arity,0))){self.arity_checks["$<<"](""+"$arity < "+min_arity)}if($truthy($truthy($b=max_arity)?self.$rest_arg()["$!"]():$b)){self.arity_checks["$<<"](""+"$arity > "+max_arity)}}else{self.arity_checks["$<<"](""+"$arity !== "+arity)}return self.arity_checks},TMP_NodeWithArgs_arity_checks_33.$$arity=0),nil)&&"arity_checks"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/iter"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$extract_block_arg","$extract_shadow_args","$extract_underscore_args","$split_args","$in_scope","$process","$inline_args_sexp","$identify!","$scope","$add_temp","$compile_block_arg","$compile_shadow_args","$compile_inline_args","$compile_post_args","$compile_norm_args","$arity_check?","$compiler","$compile_arity_check","$stmt","$returned_body","$to_vars","$line","$unshift","$push","$contains_break?","$arity","$parameters_code","$has_top_level_mlhs_arg?","$has_trailing_comma_in_args?","$select","$args","$==","$type","$each","$norm_args","$block_arg","$block_name=","$-","$[]","$updated","$s","$body","$shadow_args","$<<","$locals","$add_arg","$each_with_index","$first","$returns","$keys","$mlhs_mapping","$any?","$loc","$expression","$source","$match","$>","$size","$arity_checks","$!","$top?","$def?","$class_scope?","$parent","$mid","$class?","$name","$module?","$identity","$join","$new","$found_break?"]);self.$require("opal/nodes/node_with_args");self.$require("opal/rewriters/break_finder");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $IterNode(){}var self=$IterNode=$klass($base,$super,"IterNode",$IterNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IterNode_compile_2,TMP_IterNode_norm_args_4,TMP_IterNode_compile_norm_args_6,TMP_IterNode_compile_block_arg_7,TMP_IterNode_extract_block_arg_8,TMP_IterNode_compile_shadow_args_10,TMP_IterNode_extract_shadow_args_12,TMP_IterNode_extract_underscore_args_14,TMP_IterNode_returned_body_15,TMP_IterNode_mlhs_args_16,TMP_IterNode_has_top_level_mlhs_arg$q_18,TMP_IterNode_has_trailing_comma_in_args$q_19,TMP_IterNode_compile_arity_check_20,TMP_IterNode_contains_break$q_21;def.norm_args=def.sexp=nil;self.$handle("iter");self.$children("args","body");self.$attr_accessor("block_arg","shadow_args");Opal.defn(self,"$compile",TMP_IterNode_compile_2=function $$compile(){var TMP_1,self=this,inline_params=nil,to_vars=nil,identity=nil,body_code=nil;inline_params=nil;self.$extract_block_arg();self.$extract_shadow_args();self.$extract_underscore_args();self.$split_args();to_vars=identity=body_code=nil;$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this;inline_params=self.$process(self.$inline_args_sexp());identity=self.$scope()["$identify!"]();self.$add_temp(""+"self = "+identity+".$$s || this");self.$compile_block_arg();self.$compile_shadow_args();self.$compile_inline_args();self.$compile_post_args();self.$compile_norm_args();if($truthy(self.$compiler()["$arity_check?"]())){self.$compile_arity_check()}body_code=self.$stmt(self.$returned_body());return to_vars=self.$scope().$to_vars()},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));self.$line(body_code);self.$unshift(to_vars);self.$unshift(""+"("+identity+" = function(",inline_params,"){");self.$push(""+"}, "+identity+".$$s = self,");if($truthy(self["$contains_break?"]())){self.$push(""+" "+identity+".$$brk = $brk,")}self.$push(""+" "+identity+".$$arity = "+self.$arity()+",");if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+" "+identity+".$$parameters = "+self.$parameters_code()+",")}if($truthy(self["$has_top_level_mlhs_arg?"]())){self.$push(""+" "+identity+".$$has_top_level_mlhs_arg = true,")}if($truthy(self["$has_trailing_comma_in_args?"]())){self.$push(""+" "+identity+".$$has_trailing_comma_in_args = true,")}return self.$push(""+" "+identity+")")},TMP_IterNode_compile_2.$$arity=0);Opal.defn(self,"$norm_args",TMP_IterNode_norm_args_4=function $$norm_args(){var $a,TMP_3,self=this;return self.norm_args=$truthy($a=self.norm_args)?$a:$send(self.$args().$children(),"select",[],(TMP_3=function(arg){var self=TMP_3.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("arg")},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_IterNode_norm_args_4.$$arity=0);Opal.defn(self,"$compile_norm_args",TMP_IterNode_compile_norm_args_6=function $$compile_norm_args(){var TMP_5,self=this;return $send(self.$norm_args(),"each",[],(TMP_5=function(arg){var self=TMP_5.$$s||this,$a,arg_name=nil,_=nil;if(arg==null)arg=nil;$a=[].concat(Opal.to_a(arg)),arg_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;return self.$push(""+"if ("+arg_name+" == null) "+arg_name+" = nil;")},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5))},TMP_IterNode_compile_norm_args_6.$$arity=0);Opal.defn(self,"$compile_block_arg",TMP_IterNode_compile_block_arg_7=function $$compile_block_arg(){var self=this,$writer=nil,scope_name=nil;if($truthy(self.$block_arg())){$writer=[self.$block_arg()];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$scope().$add_temp(self.$block_arg());scope_name=self.$scope()["$identify!"]();self.$line(""+self.$block_arg()+" = "+scope_name+".$$p || nil;");return self.$line(""+"if ("+self.$block_arg()+") "+scope_name+".$$p = null;")}else{return nil}},TMP_IterNode_compile_block_arg_7.$$arity=0);Opal.defn(self,"$extract_block_arg",TMP_IterNode_extract_block_arg_8=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$body()])}else{return nil}},TMP_IterNode_extract_block_arg_8.$$arity=0);Opal.defn(self,"$compile_shadow_args",TMP_IterNode_compile_shadow_args_10=function $$compile_shadow_args(){var TMP_9,self=this;return $send(self.$shadow_args(),"each",[],(TMP_9=function(shadow_arg){var self=TMP_9.$$s||this,arg_name=nil;if(shadow_arg==null)shadow_arg=nil;arg_name=shadow_arg.$children()["$[]"](0);self.$scope().$locals()["$<<"](arg_name);return self.$scope().$add_arg(arg_name)},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_IterNode_compile_shadow_args_10.$$arity=0);Opal.defn(self,"$extract_shadow_args",TMP_IterNode_extract_shadow_args_12=function $$extract_shadow_args(){var TMP_11,self=this,valid_args=nil;self.shadow_args=[];valid_args=[];if($truthy(self.$args())){}else{return nil}$send(self.$args().$children(),"each_with_index",[],(TMP_11=function(arg,idx){var self=TMP_11.$$s||this;if(self.shadow_args==null)self.shadow_args=nil;if(arg==null)arg=nil;if(idx==null)idx=nil;if(arg.$type()["$=="]("shadowarg")){return self.shadow_args["$<<"](arg)}else{return valid_args["$<<"](arg)}},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11));return self.sexp=self.sexp.$updated(nil,[self.$args().$updated(nil,valid_args),self.$body()])},TMP_IterNode_extract_shadow_args_12.$$arity=0);Opal.defn(self,"$extract_underscore_args",TMP_IterNode_extract_underscore_args_14=function $$extract_underscore_args(){var TMP_13,self=this,valid_args=nil,caught_blank_argument=nil;valid_args=[];caught_blank_argument=false;$send(self.$args().$children(),"each",[],(TMP_13=function(arg){var self=TMP_13.$$s||this,arg_name=nil;if(arg==null)arg=nil;arg_name=arg.$children().$first();if(arg_name["$=="]("_")){if($truthy(caught_blank_argument)){return nil}else{caught_blank_argument=true;return valid_args["$<<"](arg)}}else{return valid_args["$<<"](arg)}},TMP_13.$$s=self,TMP_13.$$arity=1,TMP_13));return self.sexp=self.sexp.$updated(nil,[self.$args().$updated(nil,valid_args),self.$body()])},TMP_IterNode_extract_underscore_args_14.$$arity=0);Opal.defn(self,"$returned_body",TMP_IterNode_returned_body_15=function $$returned_body(){var $a,self=this;return self.$compiler().$returns($truthy($a=self.$body())?$a:self.$s("nil"))},TMP_IterNode_returned_body_15.$$arity=0);Opal.defn(self,"$mlhs_args",TMP_IterNode_mlhs_args_16=function $$mlhs_args(){var self=this;return self.$scope().$mlhs_mapping().$keys()},TMP_IterNode_mlhs_args_16.$$arity=0);Opal.defn(self,"$has_top_level_mlhs_arg?",TMP_IterNode_has_top_level_mlhs_arg$q_18=function(){var TMP_17,self=this;return $send(self.$args().$children(),"any?",[],(TMP_17=function(arg){var self=TMP_17.$$s||this;if(arg==null)arg=nil;return arg.$type()["$=="]("mlhs")},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17))},TMP_IterNode_has_top_level_mlhs_arg$q_18.$$arity=0);Opal.defn(self,"$has_trailing_comma_in_args?",TMP_IterNode_has_trailing_comma_in_args$q_19=function(){var $a,self=this,args_source=nil;if($truthy($truthy($a=self.$args().$loc())?self.$args().$loc().$expression():$a)){args_source=self.$args().$loc().$expression().$source();return args_source.$match(/,\s*\|/)}else{return nil}},TMP_IterNode_has_trailing_comma_in_args$q_19.$$arity=0);Opal.defn(self,"$compile_arity_check",TMP_IterNode_compile_arity_check_20=function $$compile_arity_check(){var $a,$b,$c,self=this,parent_scope=nil,context=nil,identity=nil;if($truthy($rb_gt(self.$arity_checks().$size(),0))){parent_scope=self.$scope();while($truthy(($truthy($b=$truthy($c=parent_scope["$top?"]())?$c:parent_scope["$def?"]())?$b:parent_scope["$class_scope?"]())["$!"]())){parent_scope=parent_scope.$parent()}context=function(){if($truthy(parent_scope["$top?"]())){return"'
'"}else if($truthy(parent_scope["$def?"]())){return""+"'"+parent_scope.$mid()+"'"}else if($truthy(parent_scope["$class?"]())){return""+"''"}else if($truthy(parent_scope["$module?"]())){return""+"''"}else{return nil}return nil}();identity=self.$scope().$identity();self.$line(""+"if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {");self.$line(" var $arity = arguments.length;");self.$line(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+self.$arity()+", "+context+"); }");return self.$line("}")}else{return nil}},TMP_IterNode_compile_arity_check_20.$$arity=0);return(Opal.defn(self,"$contains_break?",TMP_IterNode_contains_break$q_21=function(){var self=this,finder=nil;finder=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Rewriters"),"BreakFinder").$new();finder.$process(self.sexp);return finder["$found_break?"]()},TMP_IterNode_contains_break$q_21.$$arity=0),nil)&&"contains_break?"})($nesting[0],Opal.const_get_relative($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/def"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$attr_accessor","$args","$==","$type","$[]","$updated","$mid","$s","$stmts","$extract_block_arg","$split_args","$block_arg","$in_scope","$mid=","$scope","$-","$defs=","$uses_block!","$add_arg","$block_name=","$process","$inline_args_sexp","$stmt","$returns","$compiler","$add_temp","$compile_inline_args","$compile_post_args","$identify!","$identity","$compile_block_arg","$arity_check?","$compile_arity_check","$uses_zuper","$add_local","$line","$unshift","$current_indent","$to_vars","$catch_return","$push","$valid_name?","$arity","$parameters_code","$parse_comments?","$comments_code","$enable_source_location?","$source_location","$wrap_with_definition","$iter?","$module?","$class?","$sclass?","$eval?","$top?","$def?","$raise","$expr?","$wrap","$>","$size","$arity_checks","$inspect","$to_s","$join","$name","$source_buffer","$expression","$loc","$+","$map","$comments","$text"]);self.$require("opal/nodes/node_with_args");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefNode(){}var self=$DefNode=$klass($base,$super,"DefNode",$DefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefNode_extract_block_arg_1,TMP_DefNode_compile_3,TMP_DefNode_wrap_with_definition_4,TMP_DefNode_compile_arity_check_5,TMP_DefNode_source_location_6,TMP_DefNode_comments_code_8;def.sexp=nil;self.$handle("def");self.$children("mid","args","stmts");self.$attr_accessor("block_arg");Opal.defn(self,"$extract_block_arg",TMP_DefNode_extract_block_arg_1=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[self.$mid(),$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$stmts()])}else{return nil}},TMP_DefNode_extract_block_arg_1.$$arity=0);Opal.defn(self,"$compile",TMP_DefNode_compile_3=function $$compile(){var TMP_2,self=this,inline_params=nil,scope_name=nil,block_name=nil,function_name=nil;self.$extract_block_arg();self.$split_args();inline_params=nil;scope_name=nil;if($truthy(self.$block_arg())){block_name=self.$block_arg()}$send(self,"in_scope",[],(TMP_2=function(){var self=TMP_2.$$s||this,$a,$writer=nil,stmt_code=nil;if(self.sexp==null)self.sexp=nil;$writer=[self.$mid()];$send(self.$scope(),"mid=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];if(self.sexp.$type()["$=="]("defs")){$writer=[true];$send(self.$scope(),"defs=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}if($truthy(block_name)){self.$scope()["$uses_block!"]();self.$scope().$add_arg(block_name)}$writer=[$truthy($a=block_name)?$a:"$yield"];$send(self.$scope(),"block_name=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];inline_params=self.$process(self.$inline_args_sexp());stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts()));self.$add_temp("self = this");self.$compile_inline_args();self.$compile_post_args();self.$scope()["$identify!"]();scope_name=self.$scope().$identity();self.$compile_block_arg();if($truthy(self.$compiler()["$arity_check?"]())){self.$compile_arity_check()}if($truthy(self.$scope().$uses_zuper())){self.$add_local("$zuper");self.$add_local("$zuper_i");self.$add_local("$zuper_ii");self.$line("// Prepare super implicit arguments");self.$line("for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {");self.$line(" $zuper[$zuper_i] = arguments[$zuper_i];");self.$line("}")}self.$unshift(""+"\n"+self.$current_indent(),self.$scope().$to_vars());self.$line(stmt_code);if($truthy(self.$scope().$catch_return())){self.$unshift("try {\n");self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }");return self.$push(" throw $returner; }")}else{return nil}},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));function_name=function(){if($truthy(self["$valid_name?"](self.$mid()))){return""+" $$"+self.$mid()}else{return""}return nil}();self.$unshift(") {");self.$unshift(inline_params);self.$unshift(""+"function"+function_name+"(");if($truthy(scope_name)){self.$unshift(""+scope_name+" = ")}self.$line("}");self.$push(""+", "+scope_name+".$$arity = "+self.$arity());if($truthy(self.$compiler()["$arity_check?"]())){self.$push(""+", "+scope_name+".$$parameters = "+self.$parameters_code())}if($truthy(self.$compiler()["$parse_comments?"]())){self.$push(""+", "+scope_name+".$$comments = "+self.$comments_code())}if($truthy(self.$compiler()["$enable_source_location?"]())){self.$push(""+", "+scope_name+".$$source_location = "+self.$source_location())}return self.$wrap_with_definition()},TMP_DefNode_compile_3.$$arity=0);Opal.defn(self,"$wrap_with_definition",TMP_DefNode_wrap_with_definition_4=function $$wrap_with_definition(){var $a,self=this;if($truthy(self.$scope()["$iter?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else if($truthy($truthy($a=self.$scope()["$module?"]())?$a:self.$scope()["$class?"]())){self.$unshift(""+"Opal.defn(self, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$sclass?"]())){self.$unshift(""+"Opal.defn(self, '$"+self.$mid()+"', ")}else if($truthy(self.$compiler()["$eval?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$top?"]())){self.$unshift(""+"Opal.defn(Opal.Object, '$"+self.$mid()+"', ")}else if($truthy(self.$scope()["$def?"]())){self.$unshift(""+"Opal.def(self, '$"+self.$mid()+"', ")}else{self.$raise("Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message.")}self.$push(")");if($truthy(self["$expr?"]())){return self.$wrap("(",""+", nil) && '"+self.$mid()+"'")}else{return self.$unshift(""+"\n"+self.$current_indent())}},TMP_DefNode_wrap_with_definition_4.$$arity=0);Opal.defn(self,"$compile_arity_check",TMP_DefNode_compile_arity_check_5=function $$compile_arity_check(){var self=this,meth=nil;if($truthy($rb_gt(self.$arity_checks().$size(),0))){meth=self.$scope().$mid().$to_s().$inspect();self.$line("var $arity = arguments.length;");return self.$push(""+" if ("+self.$arity_checks().$join(" || ")+") { Opal.ac($arity, "+self.$arity()+", this, "+meth+"); }")}else{return nil}},TMP_DefNode_compile_arity_check_5.$$arity=0);Opal.defn(self,"$source_location",TMP_DefNode_source_location_6=function $$source_location(){var self=this,file=nil,line=nil;file=self.sexp.$loc().$expression().$source_buffer().$name();line=self.sexp.$loc().$line();return""+"['"+file+".rb', "+line+"]"},TMP_DefNode_source_location_6.$$arity=0);return(Opal.defn(self,"$comments_code",TMP_DefNode_comments_code_8=function $$comments_code(){var TMP_7,self=this;return $rb_plus($rb_plus("[",$send(self.$comments(),"map",[],(TMP_7=function(comment){var self=TMP_7.$$s||this;if(comment==null)comment=nil;return comment.$text().$inspect()},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7)).$join(", ")),"]")},TMP_DefNode_comments_code_8.$$arity=0),nil)&&"comments_code"})($nesting[0],Opal.const_get_relative($nesting,"NodeWithArgs"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$args","$==","$type","$[]","$updated","$recvr","$mid","$s","$stmts","$unshift","$expr","$push"]);self.$require("opal/nodes/def");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefsNode(){}var self=$DefsNode=$klass($base,$super,"DefsNode",$DefsNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefsNode_extract_block_arg_1,TMP_DefsNode_wrap_with_definition_2;def.sexp=nil;self.$handle("defs");self.$children("recvr","mid","args","stmts");Opal.defn(self,"$extract_block_arg",TMP_DefsNode_extract_block_arg_1=function $$extract_block_arg(){var $a,$b,$c,self=this,regular_args=nil,last_arg=nil;$b=self.$args().$children(),$a=Opal.to_ary($b),$c=$a.length-1,$c=$c<0?0:$c,regular_args=$slice.call($a,0,$c),last_arg=$a[$c]==null?nil:$a[$c],$b;if($truthy($truthy($a=last_arg)?last_arg.$type()["$=="]("blockarg"):$a)){self.block_arg=last_arg.$children()["$[]"](0);return self.sexp=self.sexp.$updated(nil,[self.$recvr(),self.$mid(),$send(self,"s",["args"].concat(Opal.to_a(regular_args))),self.$stmts()])}else{return nil}},TMP_DefsNode_extract_block_arg_1.$$arity=0);return(Opal.defn(self,"$wrap_with_definition",TMP_DefsNode_wrap_with_definition_2=function $$wrap_with_definition(){var self=this;self.$unshift("Opal.defs(",self.$expr(self.$recvr()),""+", '$"+self.$mid()+"', ");return self.$push(")")},TMP_DefsNode_wrap_with_definition_2.$$arity=0),nil)&&"wrap_with_definition"})($nesting[0],Opal.const_get_relative($nesting,"DefNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$truthy","$falsy","$push","$js_truthy","$test","$indent","$line","$stmt","$==","$type","$needs_wrapper?","$wrap","$returns","$compiler","$true_body","$s","$false_body","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $IfNode(){}var self=$IfNode=$klass($base,$super,"IfNode",$IfNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IfNode_compile_3,TMP_IfNode_truthy_4,TMP_IfNode_falsy_5,TMP_IfNode_needs_wrapper$q_6;self.$handle("if");self.$children("test","true_body","false_body");Opal.defn(self,"$compile",TMP_IfNode_compile_3=function $$compile(){var $a,TMP_1,TMP_2,self=this,truthy=nil,falsy=nil;$a=[self.$truthy(),self.$falsy()],truthy=$a[0],falsy=$a[1],$a;self.$push("if (",self.$js_truthy(self.$test()),") {");if($truthy(truthy)){$send(self,"indent",[],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$line(self.$stmt(truthy))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))}if($truthy(falsy)){if(falsy.$type()["$=="]("if")){self.$line("} else ",self.$stmt(falsy))}else{$send(self,"indent",[],(TMP_2=function(){var self=TMP_2.$$s||this;self.$line("} else {");return self.$line(self.$stmt(falsy))},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));self.$line("}")}}else{self.$push("}")}if($truthy(self["$needs_wrapper?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_IfNode_compile_3.$$arity=0);Opal.defn(self,"$truthy",TMP_IfNode_truthy_4=function $$truthy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$true_body())?$a:self.$s("nil"))}else{return self.$true_body()}},TMP_IfNode_truthy_4.$$arity=0);Opal.defn(self,"$falsy",TMP_IfNode_falsy_5=function $$falsy(){var $a,self=this;if($truthy(self["$needs_wrapper?"]())){return self.$compiler().$returns($truthy($a=self.$false_body())?$a:self.$s("nil"))}else{return self.$false_body()}},TMP_IfNode_falsy_5.$$arity=0);return(Opal.defn(self,"$needs_wrapper?",TMP_IfNode_needs_wrapper$q_6=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},TMP_IfNode_needs_wrapper$q_6.$$arity=0),nil)&&"needs_wrapper?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $IFlipFlop(){}var self=$IFlipFlop=$klass($base,$super,"IFlipFlop",$IFlipFlop);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_IFlipFlop_compile_7;self.$handle("iflipflop");return(Opal.defn(self,"$compile",TMP_IFlipFlop_compile_7=function $$compile(){var self=this;return self.$push("true")},TMP_IFlipFlop_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $EFlipFlop(){}var self=$EFlipFlop=$klass($base,$super,"EFlipFlop",$EFlipFlop);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EFlipFlop_compile_8;self.$handle("eflipflop");return(Opal.defn(self,"$compile",TMP_EFlipFlop_compile_8=function $$compile(){var self=this;return self.$push("true")},TMP_EFlipFlop_compile_8.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/logic"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$in_while?","$push","$expr_or_nil","$value","$wrap","$size","$children","$===","$s","$first","$compile_while","$iter?","$scope","$compile_iter","$error","$[]","$while_loop","$stmt?","$line","$break_val","$nil?","$expr","$[]=","$-","$identity","$==","$empty_splat?","$recv","$type","$rhs","$compile_if","$compile_ternary","$raise","$helper","$with_temp","$lhs","$indent","$js_truthy_optimize","$>","$find_parent_def","$expr?","$def?","$return_in_iter?","$return_expr_in_def?","$scope_to_catch_return","$catch_return=","$return_val","$to_s"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $NextNode(){}var self=$NextNode=$klass($base,$super,"NextNode",$NextNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_NextNode_compile_1,TMP_NextNode_value_2;self.$handle("next");Opal.defn(self,"$compile",TMP_NextNode_compile_1=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$push("continue;")}else{self.$push(self.$expr_or_nil(self.$value()));return self.$wrap("return ",";")}},TMP_NextNode_compile_1.$$arity=0);return(Opal.defn(self,"$value",TMP_NextNode_value_2=function $$value(){var self=this,$case=nil;return function(){$case=self.$children().$size();if((0)["$==="]($case)){return self.$s("nil")}else if(1["$==="]($case)){return self.$children().$first()}else{return $send(self,"s",["array"].concat(Opal.to_a(self.$children())))}}()},TMP_NextNode_value_2.$$arity=0),nil)&&"value"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BreakNode(){}var self=$BreakNode=$klass($base,$super,"BreakNode",$BreakNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BreakNode_compile_3,TMP_BreakNode_compile_while_4,TMP_BreakNode_compile_iter_5,TMP_BreakNode_break_val_6;self.$handle("break");self.$children("value");Opal.defn(self,"$compile",TMP_BreakNode_compile_3=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$error("void value expression: cannot use break outside of iter/while")}},TMP_BreakNode_compile_3.$$arity=0);Opal.defn(self,"$compile_while",TMP_BreakNode_compile_while_4=function $$compile_while(){var self=this;if($truthy(self.$while_loop()["$[]"]("closure"))){return self.$push("return ",self.$expr_or_nil(self.$value()))}else{return self.$push("break;")}},TMP_BreakNode_compile_while_4.$$arity=0);Opal.defn(self,"$compile_iter",TMP_BreakNode_compile_iter_5=function $$compile_iter(){var self=this;if($truthy(self["$stmt?"]())){}else{self.$error("break must be used as a statement")}return self.$line("Opal.brk(",self.$break_val(),", $brk)")},TMP_BreakNode_compile_iter_5.$$arity=0);return(Opal.defn(self,"$break_val",TMP_BreakNode_break_val_6=function $$break_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else{return self.$expr(self.$value())}},TMP_BreakNode_break_val_6.$$arity=0),nil)&&"break_val"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RedoNode(){}var self=$RedoNode=$klass($base,$super,"RedoNode",$RedoNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RedoNode_compile_7,TMP_RedoNode_compile_while_8,TMP_RedoNode_compile_iter_9;self.$handle("redo");Opal.defn(self,"$compile",TMP_RedoNode_compile_7=function $$compile(){var self=this;if($truthy(self["$in_while?"]())){return self.$compile_while()}else if($truthy(self.$scope()["$iter?"]())){return self.$compile_iter()}else{return self.$push("REDO()")}},TMP_RedoNode_compile_7.$$arity=0);Opal.defn(self,"$compile_while",TMP_RedoNode_compile_while_8=function $$compile_while(){var self=this,$writer=nil;$writer=["use_redo",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push(""+self.$while_loop()["$[]"]("redo_var")+" = true")},TMP_RedoNode_compile_while_8.$$arity=0);return(Opal.defn(self,"$compile_iter",TMP_RedoNode_compile_iter_9=function $$compile_iter(){var self=this;return self.$push(""+"return "+self.$scope().$identity()+".apply(null, $slice.call(arguments))")},TMP_RedoNode_compile_iter_9.$$arity=0),nil)&&"compile_iter"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $SplatNode(){}var self=$SplatNode=$klass($base,$super,"SplatNode",$SplatNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SplatNode_empty_splat$q_10,TMP_SplatNode_compile_11;self.$handle("splat");self.$children("value");Opal.defn(self,"$empty_splat?",TMP_SplatNode_empty_splat$q_10=function(){var self=this;return self.$value()["$=="](self.$s("array"))},TMP_SplatNode_empty_splat$q_10.$$arity=0);return(Opal.defn(self,"$compile",TMP_SplatNode_compile_11=function $$compile(){var self=this;if($truthy(self["$empty_splat?"]())){return self.$push("[]")}else{return self.$push("Opal.to_a(",self.$recv(self.$value()),")")}},TMP_SplatNode_compile_11.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BinaryOp(){}var self=$BinaryOp=$klass($base,$super,"BinaryOp",$BinaryOp);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BinaryOp_compile_12,TMP_BinaryOp_compile_ternary_13,TMP_BinaryOp_compile_if_14;Opal.defn(self,"$compile",TMP_BinaryOp_compile_12=function $$compile(){var self=this;if(self.$rhs().$type()["$=="]("break")){return self.$compile_if()}else{return self.$compile_ternary()}},TMP_BinaryOp_compile_12.$$arity=0);Opal.defn(self,"$compile_ternary",TMP_BinaryOp_compile_ternary_13=function $$compile_ternary(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_BinaryOp_compile_ternary_13.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_BinaryOp_compile_if_14=function $$compile_if(){var self=this;return self.$raise(Opal.const_get_relative($nesting,"NotImplementedError"))},TMP_BinaryOp_compile_if_14.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $OrNode(){}var self=$OrNode=$klass($base,$super,"OrNode",$OrNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_OrNode_compile_ternary_16,TMP_OrNode_compile_if_20;self.$handle("or");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_OrNode_compile_ternary_16=function $$compile_ternary(){var TMP_15,self=this;self.$helper("truthy");return $send(self,"with_temp",[],(TMP_15=function(tmp){var self=TMP_15.$$s||this;if(tmp==null)tmp=nil;return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),""+") ? "+tmp+" : ",self.$expr(self.$rhs()),")")},TMP_15.$$s=self,TMP_15.$$arity=1,TMP_15))},TMP_OrNode_compile_ternary_16.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_OrNode_compile_if_20=function $$compile_if(){var TMP_17,self=this;self.$helper("truthy");return $send(self,"with_temp",[],(TMP_17=function(tmp){var self=TMP_17.$$s||this,TMP_18,TMP_19;if(tmp==null)tmp=nil;self.$push(""+"if ($truthy("+tmp+" = ",self.$expr(self.$lhs()),")) {");$send(self,"indent",[],(TMP_18=function(){var self=TMP_18.$$s||this;return self.$line(tmp)},TMP_18.$$s=self,TMP_18.$$arity=0,TMP_18));self.$line("} else {");$send(self,"indent",[],(TMP_19=function(){var self=TMP_19.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_19.$$s=self,TMP_19.$$arity=0,TMP_19));return self.$line("}")},TMP_17.$$s=self,TMP_17.$$arity=1,TMP_17))},TMP_OrNode_compile_if_20.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){function $AndNode(){}var self=$AndNode=$klass($base,$super,"AndNode",$AndNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_AndNode_compile_ternary_22,TMP_AndNode_compile_if_25;self.$handle("and");self.$children("lhs","rhs");Opal.defn(self,"$compile_ternary",TMP_AndNode_compile_ternary_22=function $$compile_ternary(){var TMP_21,self=this,truthy_opt=nil;truthy_opt=nil;return $send(self,"with_temp",[],(TMP_21=function(tmp){var self=TMP_21.$$s||this;if(tmp==null)tmp=nil;if($truthy(truthy_opt=self.$js_truthy_optimize(self.$lhs()))){self.$push(""+"(("+tmp+" = ",truthy_opt);self.$push(") ? ");self.$push(self.$expr(self.$rhs()));return self.$push(" : ",self.$expr(self.$lhs()),")")}else{self.$helper("truthy");return self.$push(""+"($truthy("+tmp+" = ",self.$expr(self.$lhs()),") ? ",self.$expr(self.$rhs()),""+" : "+tmp+")")}},TMP_21.$$s=self,TMP_21.$$arity=1,TMP_21))},TMP_AndNode_compile_ternary_22.$$arity=0);return(Opal.defn(self,"$compile_if",TMP_AndNode_compile_if_25=function $$compile_if(){var $a,TMP_23,TMP_24,self=this,condition=nil;self.$helper("truthy");condition=$truthy($a=self.$js_truthy_optimize(self.$lhs()))?$a:self.$expr(self.$lhs());self.$line("if ($truthy(",condition,")) {");$send(self,"indent",[],(TMP_23=function(){var self=TMP_23.$$s||this;return self.$line(self.$expr(self.$rhs()))},TMP_23.$$s=self,TMP_23.$$arity=0,TMP_23));self.$line("} else {");$send(self,"indent",[],(TMP_24=function(){var self=TMP_24.$$s||this;return self.$line(self.$expr(self.$lhs()))},TMP_24.$$s=self,TMP_24.$$arity=0,TMP_24));return self.$line("}")},TMP_AndNode_compile_if_25.$$arity=0),nil)&&"compile_if"})($nesting[0],Opal.const_get_relative($nesting,"BinaryOp"),$nesting);(function($base,$super,$parent_nesting){function $ReturnNode(){}var self=$ReturnNode=$klass($base,$super,"ReturnNode",$ReturnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ReturnNode_return_val_26,TMP_ReturnNode_return_in_iter$q_27,TMP_ReturnNode_return_expr_in_def$q_28,TMP_ReturnNode_scope_to_catch_return_29,TMP_ReturnNode_compile_30;self.$handle("return");self.$children("value");Opal.defn(self,"$return_val",TMP_ReturnNode_return_val_26=function $$return_val(){var self=this;if($truthy(self.$value()["$nil?"]())){return self.$expr(self.$s("nil"))}else if($truthy($rb_gt(self.$children().$size(),1))){return self.$expr($send(self,"s",["array"].concat(Opal.to_a(self.$children()))))}else{return self.$expr(self.$value())}},TMP_ReturnNode_return_val_26.$$arity=0);Opal.defn(self,"$return_in_iter?",TMP_ReturnNode_return_in_iter$q_27=function(){var $a,self=this,parent_def=nil;if($truthy($truthy($a=self.$scope()["$iter?"]())?parent_def=self.$scope().$find_parent_def():$a)){return parent_def}else{return nil}},TMP_ReturnNode_return_in_iter$q_27.$$arity=0);Opal.defn(self,"$return_expr_in_def?",TMP_ReturnNode_return_expr_in_def$q_28=function(){var $a,self=this;if($truthy($truthy($a=self["$expr?"]())?self.$scope()["$def?"]():$a)){return self.$scope()}else{return nil}},TMP_ReturnNode_return_expr_in_def$q_28.$$arity=0);Opal.defn(self,"$scope_to_catch_return",TMP_ReturnNode_scope_to_catch_return_29=function $$scope_to_catch_return(){var $a,self=this;return $truthy($a=self["$return_in_iter?"]())?$a:self["$return_expr_in_def?"]()},TMP_ReturnNode_scope_to_catch_return_29.$$arity=0);return(Opal.defn(self,"$compile",TMP_ReturnNode_compile_30=function $$compile(){var self=this,def_scope=nil,$writer=nil;if($truthy(def_scope=self.$scope_to_catch_return())){$writer=[true];$send(def_scope,"catch_return=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];return self.$push("Opal.ret(",self.$return_val(),")")}else if($truthy(self["$stmt?"]())){return self.$push("return ",self.$return_val())}else{return self.$raise(Opal.const_get_relative($nesting,"SyntaxError"),"void value expression: cannot return as an expression")}},TMP_ReturnNode_compile_30.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JSReturnNode(){}var self=$JSReturnNode=$klass($base,$super,"JSReturnNode",$JSReturnNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JSReturnNode_compile_31;self.$handle("js_return");self.$children("value");return(Opal.defn(self,"$compile",TMP_JSReturnNode_compile_31=function $$compile(){var self=this;self.$push("return ");return self.$push(self.$expr(self.$value()))},TMP_JSReturnNode_compile_31.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $JSTempNode(){}var self=$JSTempNode=$klass($base,$super,"JSTempNode",$JSTempNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_JSTempNode_compile_32;self.$handle("js_tmp");self.$children("value");return(Opal.defn(self,"$compile",TMP_JSTempNode_compile_32=function $$compile(){var self=this;return self.$push(self.$value().$to_s())},TMP_JSTempNode_compile_32.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BlockPassNode(){}var self=$BlockPassNode=$klass($base,$super,"BlockPassNode",$BlockPassNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BlockPassNode_compile_33;self.$handle("block_pass");self.$children("value");return(Opal.defn(self,"$compile",TMP_BlockPassNode_compile_33=function $$compile(){var self=this;return self.$push(self.$expr(self.$s("send",self.$value(),"to_proc",self.$s("arglist"))))},TMP_BlockPassNode_compile_33.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/definitions"]=function(Opal){function $rb_gt(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>rhs:lhs["$>"](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$each","$line","$expr","$push","$new_name","$old_name","$empty?","$stmt?","$compile_children","$simple_children?","$compile_inline_children","$>","$size","$wrap","$==","$returned_children","$+","$returns","$compiler","$s","$process","$none?","$include?","$type","$each_with_index","$reject","$map","$to_proc"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $UndefNode(){}var self=$UndefNode=$klass($base,$super,"UndefNode",$UndefNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UndefNode_compile_2;self.$handle("undef");self.$children("value");return(Opal.defn(self,"$compile",TMP_UndefNode_compile_2=function $$compile(){var TMP_1,self=this;return $send(self.$children(),"each",[],(TMP_1=function(child){var self=TMP_1.$$s||this;if(child==null)child=nil;return self.$line("Opal.udef(self, '$' + ",self.$expr(child),");")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1))},TMP_UndefNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $AliasNode(){}var self=$AliasNode=$klass($base,$super,"AliasNode",$AliasNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_AliasNode_compile_3;self.$handle("alias");self.$children("new_name","old_name");return(Opal.defn(self,"$compile",TMP_AliasNode_compile_3=function $$compile(){var self=this;return self.$push("Opal.alias(self, ",self.$expr(self.$new_name()),", ",self.$expr(self.$old_name()),")")},TMP_AliasNode_compile_3.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $BeginNode(){}var self=$BeginNode=$klass($base,$super,"BeginNode",$BeginNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BeginNode_compile_4,TMP_BeginNode_returned_children_5,TMP_BeginNode_compile_children_7,TMP_BeginNode_simple_children$q_9,TMP_BeginNode_compile_inline_children_12;def.level=def.returned_children=nil;self.$handle("begin");Opal.defn(self,"$compile",TMP_BeginNode_compile_4=function $$compile(){var self=this;if($truthy(self.$children()["$empty?"]())){return self.$push("nil")}if($truthy(self["$stmt?"]())){return self.$compile_children(self.$children(),self.level)}else if($truthy(self["$simple_children?"]())){self.$compile_inline_children(self.$children(),self.level);if($truthy($rb_gt(self.$children().$size(),1))){return self.$wrap("(",")")}else{return nil}}else if(self.$children().$size()["$=="](1)){return self.$compile_inline_children(self.$returned_children(),self.level)}else{self.$compile_children(self.$returned_children(),self.level);return self.$wrap("(function() {","})()")}},TMP_BeginNode_compile_4.$$arity=0);Opal.defn(self,"$returned_children",TMP_BeginNode_returned_children_5=function $$returned_children(){var $a,$b,$c,self=this,rest=nil,last_child=nil;return self.returned_children=$truthy($a=self.returned_children)?$a:($b=[].concat(Opal.to_a(self.$children())),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b,function(){if($truthy(last_child)){return $rb_plus(rest,[self.$compiler().$returns(last_child)])}else{return[self.$s("nil")]}return nil}())},TMP_BeginNode_returned_children_5.$$arity=0);Opal.defn(self,"$compile_children",TMP_BeginNode_compile_children_7=function $$compile_children(children,level){var TMP_6,self=this;return $send(children,"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this;if(child==null)child=nil;return self.$line(self.$process(child,level),";")},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6))},TMP_BeginNode_compile_children_7.$$arity=2);Opal.const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"]);Opal.defn(self,"$simple_children?",TMP_BeginNode_simple_children$q_9=function(){var TMP_8,self=this;return $send(self.$children(),"none?",[],(TMP_8=function(child){var self=TMP_8.$$s||this;if(child==null)child=nil;return Opal.const_get_relative($nesting,"COMPLEX_CHILDREN")["$include?"](child.$type())},TMP_8.$$s=self,TMP_8.$$arity=1,TMP_8))},TMP_BeginNode_simple_children$q_9.$$arity=0);return(Opal.defn(self,"$compile_inline_children",TMP_BeginNode_compile_inline_children_12=function $$compile_inline_children(children,level){var TMP_10,TMP_11,self=this;return $send($send($send(children,"map",[],(TMP_10=function(child){var self=TMP_10.$$s||this;if(child==null)child=nil;return self.$process(child,level)},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10)),"reject",[],"empty?".$to_proc()),"each_with_index",[],(TMP_11=function(child,idx){var self=TMP_11.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(child)},TMP_11.$$s=self,TMP_11.$$arity=2,TMP_11))},TMP_BeginNode_compile_inline_children_12.$$arity=2),nil)&&"compile_inline_children"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting);(function($base,$super,$parent_nesting){function $KwBeginNode(){}var self=$KwBeginNode=$klass($base,$super,"KwBeginNode",$KwBeginNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("kwbegin")})($nesting[0],Opal.const_get_relative($nesting,"BeginNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$find_yielding_scope","$uses_block!","$block_name","$yields_single_arg?","$push","$expr","$first","$wrap","$s","$uses_splat?","$scope","$def?","$parent","$!","$==","$size","$any?","$type","$handle","$compile_call","$children"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BaseYieldNode(){}var self=$BaseYieldNode=$klass($base,$super,"BaseYieldNode",$BaseYieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BaseYieldNode_compile_call_1,TMP_BaseYieldNode_find_yielding_scope_2,TMP_BaseYieldNode_yields_single_arg$q_3,TMP_BaseYieldNode_uses_splat$q_5;Opal.defn(self,"$compile_call",TMP_BaseYieldNode_compile_call_1=function $$compile_call(children,level){var $a,self=this,yielding_scope=nil,block_name=nil;yielding_scope=self.$find_yielding_scope();yielding_scope["$uses_block!"]();block_name=$truthy($a=yielding_scope.$block_name())?$a:"$yield";if($truthy(self["$yields_single_arg?"](children))){self.$push(self.$expr(children.$first()));return self.$wrap(""+"Opal.yield1("+block_name+", ",")")}else{self.$push(self.$expr($send(self,"s",["arglist"].concat(Opal.to_a(children)))));if($truthy(self["$uses_splat?"](children))){return self.$wrap(""+"Opal.yieldX("+block_name+", ",")")}else{return self.$wrap(""+"Opal.yieldX("+block_name+", [","])")}}},TMP_BaseYieldNode_compile_call_1.$$arity=2);Opal.defn(self,"$find_yielding_scope",TMP_BaseYieldNode_find_yielding_scope_2=function $$find_yielding_scope(){var $a,$b,self=this,working=nil;working=self.$scope();while($truthy(working)){if($truthy($truthy($b=working.$block_name())?$b:working["$def?"]())){break}working=working.$parent()}return working},TMP_BaseYieldNode_find_yielding_scope_2.$$arity=0);Opal.defn(self,"$yields_single_arg?",TMP_BaseYieldNode_yields_single_arg$q_3=function(children){var $a,self=this;return $truthy($a=self["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$a},TMP_BaseYieldNode_yields_single_arg$q_3.$$arity=1);return(Opal.defn(self,"$uses_splat?",TMP_BaseYieldNode_uses_splat$q_5=function(children){var TMP_4,self=this;return $send(children,"any?",[],(TMP_4=function(child){var self=TMP_4.$$s||this;if(child==null)child=nil;return child.$type()["$=="]("splat")},TMP_4.$$s=self,TMP_4.$$arity=1,TMP_4))},TMP_BaseYieldNode_uses_splat$q_5.$$arity=1),nil)&&"uses_splat?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $YieldNode(){}var self=$YieldNode=$klass($base,$super,"YieldNode",$YieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_YieldNode_compile_6;def.level=nil;self.$handle("yield");return(Opal.defn(self,"$compile",TMP_YieldNode_compile_6=function $$compile(){var self=this;return self.$compile_call(self.$children(),self.level)},TMP_YieldNode_compile_6.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseYieldNode"),$nesting);(function($base,$super,$parent_nesting){function $ReturnableYieldNode(){}var self=$ReturnableYieldNode=$klass($base,$super,"ReturnableYieldNode",$ReturnableYieldNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ReturnableYieldNode_compile_7;def.level=nil;self.$handle("returnable_yield");return(Opal.defn(self,"$compile",TMP_ReturnableYieldNode_compile_7=function $$compile(){var self=this;self.$compile_call(self.$children(),self.level);return self.$wrap("return ",";")},TMP_ReturnableYieldNode_compile_7.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseYieldNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/rescue"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$push","$in_ensure","$line","$stmt","$body_sexp","$indent","$has_rescue_else?","$unshift","$rescue_else_code","$process","$compiler","$ensr_sexp","$wrap_in_closure?","$wrap","$returns","$begn","$ensr","$s","$recv?","$expr?","$rescue_else_sexp","$scope","$stmt?","$detect","$[]","$!=","$type","$rescue_else_sexp=","$-","$handle_rescue_else_manually?","$body_code","$each_with_index","$==","$body","$!","$in_ensure?","$expr","$klasses","$lvar","$rescue_body","$klasses_sexp"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EnsureNode(){}var self=$EnsureNode=$klass($base,$super,"EnsureNode",$EnsureNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EnsureNode_compile_5,TMP_EnsureNode_body_sexp_6,TMP_EnsureNode_ensr_sexp_7,TMP_EnsureNode_wrap_in_closure$q_8,TMP_EnsureNode_rescue_else_code_9;self.$handle("ensure");self.$children("begn","ensr");Opal.defn(self,"$compile",TMP_EnsureNode_compile_5=function $$compile(){var TMP_1,TMP_2,self=this;self.$push("try {");$send(self,"in_ensure",[],(TMP_1=function(){var self=TMP_1.$$s||this;return self.$line(self.$stmt(self.$body_sexp()))},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));self.$line("} finally {");$send(self,"indent",[],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3;if(self.level==null)self.level=nil;if($truthy(self["$has_rescue_else?"]())){self.$unshift("var $no_errors = true; ");self.$line("var $rescue_else_result;");self.$line("if ($no_errors) { ");$send(self,"indent",[],(TMP_3=function(){var self=TMP_3.$$s||this,TMP_4;self.$line("$rescue_else_result = (function() {");$send(self,"indent",[],(TMP_4=function(){var self=TMP_4.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},TMP_4.$$s=self,TMP_4.$$arity=0,TMP_4));return self.$line("})();")},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));self.$line("}");self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level));return self.$line("if ($no_errors) { return $rescue_else_result; }")}else{return self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));self.$line("}");if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() { ","; })()")}else{return nil}},TMP_EnsureNode_compile_5.$$arity=0);Opal.defn(self,"$body_sexp",TMP_EnsureNode_body_sexp_6=function $$body_sexp(){var self=this;if($truthy(self["$wrap_in_closure?"]())){return self.$compiler().$returns(self.$begn())}else{return self.$begn()}},TMP_EnsureNode_body_sexp_6.$$arity=0);Opal.defn(self,"$ensr_sexp",TMP_EnsureNode_ensr_sexp_7=function $$ensr_sexp(){var $a,self=this;return $truthy($a=self.$ensr())?$a:self.$s("nil")},TMP_EnsureNode_ensr_sexp_7.$$arity=0);Opal.defn(self,"$wrap_in_closure?",TMP_EnsureNode_wrap_in_closure$q_8=function(){var $a,$b,self=this;return $truthy($a=$truthy($b=self["$recv?"]())?$b:self["$expr?"]())?$a:self["$has_rescue_else?"]()},TMP_EnsureNode_wrap_in_closure$q_8.$$arity=0);return(Opal.defn(self,"$rescue_else_code",TMP_EnsureNode_rescue_else_code_9=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},TMP_EnsureNode_rescue_else_code_9.$$arity=0),nil)&&"rescue_else_code"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RescueNode(){}var self=$RescueNode=$klass($base,$super,"RescueNode",$RescueNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RescueNode_compile_16,TMP_RescueNode_body_code_17,TMP_RescueNode_rescue_else_code_18,TMP_RescueNode_handle_rescue_else_manually$q_19;self.$handle("rescue");self.$children("body");Opal.defn(self,"$compile",TMP_RescueNode_compile_16=function $$compile(){var TMP_10,TMP_11,TMP_12,TMP_14,$a,self=this,$writer=nil,has_rescue_handlers=nil;$writer=[$send(self.$children()["$[]"]($range(1,-1,false)),"detect",[],(TMP_10=function(sexp){var self=TMP_10.$$s||this,$a;if(sexp==null)sexp=nil;return $truthy($a=sexp)?sexp.$type()["$!="]("resbody"):$a},TMP_10.$$s=self,TMP_10.$$arity=1,TMP_10))];$send(self.$scope(),"rescue_else_sexp=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];has_rescue_handlers=false;if($truthy(self["$handle_rescue_else_manually?"]())){self.$line("var $no_errors = true;")}self.$push("try {");$send(self,"indent",[],(TMP_11=function(){var self=TMP_11.$$s||this;return self.$line(self.$stmt(self.$body_code()))},TMP_11.$$s=self,TMP_11.$$arity=0,TMP_11));self.$line("} catch ($err) {");$send(self,"indent",[],(TMP_12=function(){var self=TMP_12.$$s||this,TMP_13;if($truthy(self["$has_rescue_else?"]())){self.$line("$no_errors = false;")}$send(self.$children()["$[]"]($range(1,-1,false)),"each_with_index",[],(TMP_13=function(child,idx){var self=TMP_13.$$s||this,$a;if(self.level==null)self.level=nil;if(child==null)child=nil;if(idx==null)idx=nil;if($truthy($truthy($a=child)?child.$type()["$=="]("resbody"):$a)){has_rescue_handlers=true;if(idx["$=="](0)){}else{self.$push(" else ")}return self.$line(self.$process(child,self.level))}else{return nil}},TMP_13.$$s=self,TMP_13.$$arity=2,TMP_13));return self.$push(" else { throw $err; }")},TMP_12.$$s=self,TMP_12.$$arity=0,TMP_12));self.$line("}");if($truthy(self["$handle_rescue_else_manually?"]())){self.$push("finally {");$send(self,"indent",[],(TMP_14=function(){var self=TMP_14.$$s||this,TMP_15;self.$line("if ($no_errors) { ");$send(self,"indent",[],(TMP_15=function(){var self=TMP_15.$$s||this;return self.$line(self.$stmt(self.$rescue_else_code()))},TMP_15.$$s=self,TMP_15.$$arity=0,TMP_15));return self.$line("}")},TMP_14.$$s=self,TMP_14.$$arity=0,TMP_14));self.$push("}")}if($truthy($truthy($a=self["$expr?"]())?$a:self["$recv?"]())){return self.$wrap("(function() { ","})()")}else{return nil}},TMP_RescueNode_compile_16.$$arity=0);Opal.defn(self,"$body_code",TMP_RescueNode_body_code_17=function $$body_code(){var self=this,body_code=nil;body_code=function(){if(self.$body().$type()["$=="]("resbody")){return self.$s("nil")}else{return self.$body()}return nil}();if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_RescueNode_body_code_17.$$arity=0);Opal.defn(self,"$rescue_else_code",TMP_RescueNode_rescue_else_code_18=function $$rescue_else_code(){var self=this,rescue_else_code=nil;rescue_else_code=self.$scope().$rescue_else_sexp();if($truthy(self["$stmt?"]())){}else{rescue_else_code=self.$compiler().$returns(rescue_else_code)}return rescue_else_code},TMP_RescueNode_rescue_else_code_18.$$arity=0);return(Opal.defn(self,"$handle_rescue_else_manually?",TMP_RescueNode_handle_rescue_else_manually$q_19=function(){var $a,self=this;return $truthy($a=self.$scope()["$in_ensure?"]()["$!"]())?self.$scope()["$has_rescue_else?"]():$a},TMP_RescueNode_handle_rescue_else_manually$q_19.$$arity=0),nil)&&"handle_rescue_else_manually?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $ResBodyNode(){}var self=$ResBodyNode=$klass($base,$super,"ResBodyNode",$ResBodyNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ResBodyNode_compile_22,TMP_ResBodyNode_klasses_23,TMP_ResBodyNode_rescue_body_24;self.$handle("resbody");self.$children("klasses_sexp","lvar","body");Opal.defn(self,"$compile",TMP_ResBodyNode_compile_22=function $$compile(){var TMP_20,self=this;self.$push("if (Opal.rescue($err, ",self.$expr(self.$klasses()),")) {");$send(self,"indent",[],(TMP_20=function(){var self=TMP_20.$$s||this,TMP_21;if($truthy(self.$lvar())){self.$push(self.$expr(self.$lvar()),"$err;")}self.$line("try {");$send(self,"indent",[],(TMP_21=function(){var self=TMP_21.$$s||this;return self.$line(self.$stmt(self.$rescue_body()))},TMP_21.$$s=self,TMP_21.$$arity=0,TMP_21));return self.$line("} finally { Opal.pop_exception() }")},TMP_20.$$s=self,TMP_20.$$arity=0,TMP_20));return self.$line("}")},TMP_ResBodyNode_compile_22.$$arity=0);Opal.defn(self,"$klasses",TMP_ResBodyNode_klasses_23=function $$klasses(){var $a,self=this;return $truthy($a=self.$klasses_sexp())?$a:self.$s("array",self.$s("const",nil,"StandardError"))},TMP_ResBodyNode_klasses_23.$$arity=0);return(Opal.defn(self,"$rescue_body",TMP_ResBodyNode_rescue_body_24=function $$rescue_body(){var $a,self=this,body_code=nil;body_code=$truthy($a=self.$body())?$a:self.$s("nil");if($truthy(self["$stmt?"]())){}else{body_code=self.$compiler().$returns(body_code)}return body_code},TMP_ResBodyNode_rescue_body_24.$$arity=0),nil)&&"rescue_body"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $RetryNode(){}var self=$RetryNode=$klass($base,$super,"RetryNode",$RetryNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_RetryNode_compile_25;self.$handle("retry");return(Opal.defn(self,"$compile",TMP_RetryNode_compile_25=function $$compile(){var self=this;return self.$push(self.$stmt(self.$s("send",nil,"retry")))},TMP_RetryNode_compile_25.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/case"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$in_case","$compiler","$compile_code","$needs_closure?","$wrap","$condition","$[]=","$case_stmt","$-","$add_local","$push","$expr","$each_with_index","$case_parts","$line","$type","$===","$returns","$==","$stmt","$!","$stmt?","$[]","$when_checks","$js_truthy","$s","$process","$body_code","$last"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $CaseNode(){}var self=$CaseNode=$klass($base,$super,"CaseNode",$CaseNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_CaseNode_compile_2,TMP_CaseNode_compile_code_4,TMP_CaseNode_needs_closure$q_5,TMP_CaseNode_case_parts_6,TMP_CaseNode_case_stmt_7;self.$handle("case");self.$children("condition");Opal.defn(self,"$compile",TMP_CaseNode_compile_2=function $$compile(){var TMP_1,self=this;return $send(self.$compiler(),"in_case",[],(TMP_1=function(){var self=TMP_1.$$s||this;self.$compile_code();if($truthy(self["$needs_closure?"]())){return self.$wrap("(function() {","})()")}else{return nil}},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1))},TMP_CaseNode_compile_2.$$arity=0);Opal.defn(self,"$compile_code",TMP_CaseNode_compile_code_4=function $$compile_code(){var TMP_3,$a,self=this,handled_else=nil,$writer=nil;handled_else=false;if($truthy(self.$condition())){$writer=["cond",true];$send(self.$case_stmt(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.$add_local("$case");self.$push("$case = ",self.$expr(self.$condition()),";")}$send(self.$case_parts(),"each_with_index",[],(TMP_3=function(wen,idx){var self=TMP_3.$$s||this,$case=nil;if(wen==null)wen=nil;if(idx==null)idx=nil;if($truthy(wen)){self.$line();return function(){$case=wen.$type();if("when"["$==="]($case)){if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}if(idx["$=="](0)){}else{self.$push("else ")}return self.$push(self.$stmt(wen))}else{handled_else=true;if($truthy(self["$needs_closure?"]())){wen=self.$compiler().$returns(wen)}return self.$push("else {",self.$stmt(wen),"}")}}()}else{return nil}},TMP_3.$$s=self,TMP_3.$$arity=2,TMP_3));if($truthy($truthy($a=self["$needs_closure?"]())?handled_else["$!"]():$a)){self.$line();return self.$push("else { return nil }")}else{return nil}},TMP_CaseNode_compile_code_4.$$arity=0);Opal.defn(self,"$needs_closure?",TMP_CaseNode_needs_closure$q_5=function(){var self=this;return self["$stmt?"]()["$!"]()},TMP_CaseNode_needs_closure$q_5.$$arity=0);Opal.defn(self,"$case_parts",TMP_CaseNode_case_parts_6=function $$case_parts(){var self=this;return self.$children()["$[]"]($range(1,-1,false))},TMP_CaseNode_case_parts_6.$$arity=0);return(Opal.defn(self,"$case_stmt",TMP_CaseNode_case_stmt_7=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_CaseNode_case_stmt_7.$$arity=0),nil)&&"case_stmt"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $WhenNode(){}var self=$WhenNode=$klass($base,$super,"WhenNode",$WhenNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_WhenNode_compile_9,TMP_WhenNode_when_checks_10,TMP_WhenNode_case_stmt_11,TMP_WhenNode_body_code_12;def.level=nil;self.$handle("when");self.$children("whens","body");Opal.defn(self,"$compile",TMP_WhenNode_compile_9=function $$compile(){var TMP_8,self=this;self.$push("if (");$send(self.$when_checks(),"each_with_index",[],(TMP_8=function(check,idx){var self=TMP_8.$$s||this,call=nil;if(check==null)check=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" || ")}if(check.$type()["$=="]("splat")){self.$push("(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {");if($truthy(self.$case_stmt()["$[]"]("cond"))){self.$push("if ($splt[i]['$===']($case)) { return true; }")}else{self.$push("if (",self.$js_truthy(check),")) { return true; }")}return self.$push("} return false; })(",self.$expr(check.$children()["$[]"](0)),")")}else if($truthy(self.$case_stmt()["$[]"]("cond"))){call=self.$s("send",check,"===",self.$s("arglist",self.$s("js_tmp","$case")));return self.$push(self.$expr(call))}else{return self.$push(self.$js_truthy(check))}},TMP_8.$$s=self,TMP_8.$$arity=2,TMP_8));return self.$push(") {",self.$process(self.$body_code(),self.level),"}")},TMP_WhenNode_compile_9.$$arity=0);Opal.defn(self,"$when_checks",TMP_WhenNode_when_checks_10=function $$when_checks(){var self=this;return self.$children()["$[]"]($range(0,-2,false))},TMP_WhenNode_when_checks_10.$$arity=0);Opal.defn(self,"$case_stmt",TMP_WhenNode_case_stmt_11=function $$case_stmt(){var self=this;return self.$compiler().$case_stmt()},TMP_WhenNode_case_stmt_11.$$arity=0);return(Opal.defn(self,"$body_code",TMP_WhenNode_body_code_12=function $$body_code(){var $a,self=this;return $truthy($a=self.$children().$last())?$a:self.$s("nil")},TMP_WhenNode_body_code_12.$$arity=0),nil)&&"body_code"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/super"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$include?","$type","$s","$helper","$push","$compile_receiver","$compile_method","$compile_arguments","$compile_block_pass","$private","$def?","$scope","$find_parent_def","$==","$raise_exception?","$implicit_args?","$to_s","$mid","$def_scope","$identify!","$defs","$name","$parent","$method_id","$def_scope_identity","$defined_check_param","$get_super_chain","$join","$map","$implicit_arguments_param","$super_method_invocation","$iter?","$super_block_invocation","$raise","$handle","$method_missing?","$compiler","$wrap","$uses_block!","$compile_using_send","$iter","$uses_zuper=","$-","$formal_block_parameter","$!","$[]","$<<","$empty?","$children","$arglist","$expr","$===","$extract_block_arg","$block_arg"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $BaseSuperNode(){}var self=$BaseSuperNode=$klass($base,$super,"BaseSuperNode",$BaseSuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_BaseSuperNode_initialize_1,TMP_BaseSuperNode_compile_using_send_2,TMP_BaseSuperNode_def_scope_3,TMP_BaseSuperNode_raise_exception$q_4,TMP_BaseSuperNode_defined_check_param_5,TMP_BaseSuperNode_implicit_args$q_6,TMP_BaseSuperNode_implicit_arguments_param_7,TMP_BaseSuperNode_method_id_8,TMP_BaseSuperNode_def_scope_identity_9,TMP_BaseSuperNode_super_method_invocation_10,TMP_BaseSuperNode_super_block_invocation_12,TMP_BaseSuperNode_compile_method_13;def.sexp=def.def_scope=nil;Opal.defn(self,"$initialize",TMP_BaseSuperNode_initialize_1=function $$initialize($a_rest){var $b,$c,self=this,$iter=TMP_BaseSuperNode_initialize_1.$$p,$yield=$iter||nil,args=nil,rest=nil,last_child=nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_BaseSuperNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_BaseSuperNode_initialize_1,false),$zuper,$iter);args=[].concat(Opal.to_a(self.sexp));$b=[].concat(Opal.to_a(args)),$c=$b.length-1,$c=$c<0?0:$c,rest=$slice.call($b,0,$c),last_child=$b[$c]==null?nil:$b[$c],$b;if($truthy($truthy($b=last_child)?["iter","block_pass"]["$include?"](last_child.$type()):$b)){self.iter=last_child;args=rest}else{self.iter=self.$s("js_tmp","null")}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(args)));return self.recvr=self.$s("self")},TMP_BaseSuperNode_initialize_1.$$arity=-1);Opal.defn(self,"$compile_using_send",TMP_BaseSuperNode_compile_using_send_2=function $$compile_using_send(){var self=this;self.$helper("send");self.$push("$send(");self.$compile_receiver();self.$compile_method();self.$compile_arguments();self.$compile_block_pass();return self.$push(")")},TMP_BaseSuperNode_compile_using_send_2.$$arity=0);self.$private();Opal.defn(self,"$def_scope",TMP_BaseSuperNode_def_scope_3=function $$def_scope(){var $a,self=this;return self.def_scope=$truthy($a=self.def_scope)?$a:function(){if($truthy(self.$scope()["$def?"]())){return self.$scope()}else{return self.$scope().$find_parent_def()}return nil}()},TMP_BaseSuperNode_def_scope_3.$$arity=0);Opal.defn(self,"$raise_exception?",TMP_BaseSuperNode_raise_exception$q_4=function(){var self=this;return self.sexp.$type()["$=="]("defined_super")},TMP_BaseSuperNode_raise_exception$q_4.$$arity=0);Opal.defn(self,"$defined_check_param",TMP_BaseSuperNode_defined_check_param_5=function $$defined_check_param(){var self=this;if($truthy(self["$raise_exception?"]())){return"true"}else{return"false"}},TMP_BaseSuperNode_defined_check_param_5.$$arity=0);Opal.defn(self,"$implicit_args?",TMP_BaseSuperNode_implicit_args$q_6=function(){var self=this;return self.sexp.$type()["$=="]("zsuper")},TMP_BaseSuperNode_implicit_args$q_6.$$arity=0);Opal.defn(self,"$implicit_arguments_param",TMP_BaseSuperNode_implicit_arguments_param_7=function $$implicit_arguments_param(){var self=this;if($truthy(self["$implicit_args?"]())){return"true"}else{return"false"}},TMP_BaseSuperNode_implicit_arguments_param_7.$$arity=0);Opal.defn(self,"$method_id",TMP_BaseSuperNode_method_id_8=function $$method_id(){var self=this;return self.$def_scope().$mid().$to_s()},TMP_BaseSuperNode_method_id_8.$$arity=0);Opal.defn(self,"$def_scope_identity",TMP_BaseSuperNode_def_scope_identity_9=function $$def_scope_identity(){var self=this;return self.$def_scope()["$identify!"](self.$def_scope().$mid())},TMP_BaseSuperNode_def_scope_identity_9.$$arity=0);Opal.defn(self,"$super_method_invocation",TMP_BaseSuperNode_super_method_invocation_10=function $$super_method_invocation(){var self=this,class_name=nil;if($truthy(self.$def_scope().$defs())){class_name=function(){if($truthy(self.$def_scope().$parent().$name())){return""+"$"+self.$def_scope().$parent().$name()}else{return"self.$$class.$$proto"}return nil}();return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+", "+class_name+")"}else{return""+"Opal.find_super_dispatcher(self, '"+self.$method_id()+"', "+self.$def_scope_identity()+", "+self.$defined_check_param()+")"}},TMP_BaseSuperNode_super_method_invocation_10.$$arity=0);Opal.defn(self,"$super_block_invocation",TMP_BaseSuperNode_super_block_invocation_12=function $$super_block_invocation(){var $a,$b,TMP_11,self=this,chain=nil,cur_defn=nil,mid=nil,trys=nil;$b=self.$scope().$get_super_chain(),$a=Opal.to_ary($b),chain=$a[0]==null?nil:$a[0],cur_defn=$a[1]==null?nil:$a[1],mid=$a[2]==null?nil:$a[2],$b;trys=$send(chain,"map",[],(TMP_11=function(c){var self=TMP_11.$$s||this;if(c==null)c=nil;return""+c+".$$def"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11)).$join(" || ");return""+"Opal.find_iter_super_dispatcher(self, "+mid+", ("+trys+" || "+cur_defn+"), "+self.$defined_check_param()+", "+self.$implicit_arguments_param()+")"},TMP_BaseSuperNode_super_block_invocation_12.$$arity=0);return(Opal.defn(self,"$compile_method",TMP_BaseSuperNode_compile_method_13=function $$compile_method(){var self=this;self.$push(", ");if($truthy(self.$scope()["$def?"]())){return self.$push(self.$super_method_invocation())}else if($truthy(self.$scope()["$iter?"]())){return self.$push(self.$super_block_invocation())}else{return self.$raise("super must be called from method body or block")}},TMP_BaseSuperNode_compile_method_13.$$arity=0),nil)&&"compile_method"})($nesting[0],Opal.const_get_relative($nesting,"CallNode"),$nesting);(function($base,$super,$parent_nesting){function $DefinedSuperNode(){}var self=$DefinedSuperNode=$klass($base,$super,"DefinedSuperNode",$DefinedSuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefinedSuperNode_compile_14;self.$handle("defined_super");return(Opal.defn(self,"$compile",TMP_DefinedSuperNode_compile_14=function $$compile(){var self=this;self.$compile_receiver();self.$compile_method();if($truthy(self.$compiler()["$method_missing?"]())){return self.$wrap("(!(",'.$$stub) ? "super" : nil)')}else{return self.$wrap("((",') != null ? "super" : nil)')}},TMP_DefinedSuperNode_compile_14.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){function $SuperNode(){}var self=$SuperNode=$klass($base,$super,"SuperNode",$SuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_SuperNode_initialize_15,TMP_SuperNode_compile_16;self.$handle("super");Opal.defn(self,"$initialize",TMP_SuperNode_initialize_15=function $$initialize($a_rest){var self=this,$iter=TMP_SuperNode_initialize_15.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_SuperNode_initialize_15.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_SuperNode_initialize_15,false),$zuper,$iter);if($truthy(self.$scope()["$def?"]())){return self.$scope()["$uses_block!"]()}else{return nil}},TMP_SuperNode_initialize_15.$$arity=-1);return(Opal.defn(self,"$compile",TMP_SuperNode_compile_16=function $$compile(){var self=this;return self.$compile_using_send()},TMP_SuperNode_compile_16.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"BaseSuperNode"),$nesting);(function($base,$super,$parent_nesting){function $ZsuperNode(){}var self=$ZsuperNode=$klass($base,$super,"ZsuperNode",$ZsuperNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ZsuperNode_initialize_17,TMP_ZsuperNode_compile_18,TMP_ZsuperNode_compile_arguments_19,TMP_ZsuperNode_formal_block_parameter_20;self.$handle("zsuper");Opal.defn(self,"$initialize",TMP_ZsuperNode_initialize_17=function $$initialize($a_rest){var self=this,$iter=TMP_ZsuperNode_initialize_17.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_ZsuperNode_initialize_17.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_ZsuperNode_initialize_17,false),$zuper,$iter);if(self.$iter().$type()["$=="]("iter")){return nil}else{self.$scope()["$uses_block!"]();return self.iter=self.$s("js_tmp","$iter")}},TMP_ZsuperNode_initialize_17.$$arity=-1);Opal.defn(self,"$compile",TMP_ZsuperNode_compile_18=function $$compile(){var $a,self=this,$writer=nil,implicit_args=nil,block_arg=nil,block_pass=nil;if($truthy(self.$def_scope())){$writer=[true];$send(self.$def_scope(),"uses_zuper=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];implicit_args=[self.$s("js_tmp","$zuper")];if($truthy($truthy($a=block_arg=self.$formal_block_parameter())?self.$iter()["$!"]():$a)){block_pass=self.$s("block_pass",self.$s("lvar",block_arg["$[]"](1)));implicit_args["$<<"](block_pass)}self.arglist=$send(self,"s",["arglist"].concat(Opal.to_a(implicit_args)))}return self.$compile_using_send()},TMP_ZsuperNode_compile_18.$$arity=0);Opal.defn(self,"$compile_arguments",TMP_ZsuperNode_compile_arguments_19=function $$compile_arguments(){var self=this;self.$push(", ");if($truthy(self.$arglist().$children()["$empty?"]())){return self.$push("[]")}else{return self.$push(self.$expr(self.$arglist()))}},TMP_ZsuperNode_compile_arguments_19.$$arity=0);return(Opal.defn(self,"$formal_block_parameter",TMP_ZsuperNode_formal_block_parameter_20=function $$formal_block_parameter(){var self=this,$case=nil;return function(){$case=self.$def_scope();if(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"IterNode")["$==="]($case)){return self.$def_scope().$extract_block_arg()}else if(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"DefNode")["$==="]($case)){return self.$def_scope().$block_arg()}else{return self.$raise(""+"Don't know what to do with super in the scope "+self.$def_scope())}}()},TMP_ZsuperNode_formal_block_parameter_20.$$arity=0),nil)&&"formal_block_parameter"})($nesting[0],Opal.const_get_relative($nesting,"SuperNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/version"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);Opal.const_set($nesting[0],"VERSION","0.11.0")}($nesting[0],$nesting)};Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$push","$version_comment","$opening","$in_scope","$stmt","$stmts","$is_a?","$eval?","$compiler","$add_temp","$add_used_helpers","$add_used_operators","$line","$to_vars","$scope","$compile_method_stubs","$compile_irb_vars","$compile_end_construct","$closing","$requirable?","$to_s","$cleanpath","$Pathname","$file","$inspect","$returns","$body","$irb?","$to_a","$helpers","$each","$operator_helpers","$[]","$method_missing?","$method_calls","$join","$map","$empty?","$eof_content"]);self.$require("pathname");self.$require("opal/version");self.$require("opal/nodes/scope");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $TopNode(){}var self=$TopNode=$klass($base,$super,"TopNode",$TopNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_TopNode_compile_2,TMP_TopNode_opening_3,TMP_TopNode_closing_4,TMP_TopNode_stmts_5,TMP_TopNode_compile_irb_vars_6,TMP_TopNode_add_used_helpers_8,TMP_TopNode_add_used_operators_10,TMP_TopNode_compile_method_stubs_12,TMP_TopNode_compile_end_construct_13,TMP_TopNode_version_comment_14;self.$handle("top");self.$children("body");Opal.defn(self,"$compile",TMP_TopNode_compile_2=function $$compile(){var TMP_1,self=this;self.$push(self.$version_comment());self.$opening();$send(self,"in_scope",[],(TMP_1=function(){var self=TMP_1.$$s||this,body_code=nil;body_code=self.$stmt(self.$stmts());if($truthy(body_code["$is_a?"](Opal.const_get_relative($nesting,"Array")))){}else{body_code=[body_code]}if($truthy(self.$compiler()["$eval?"]())){self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]")}else{self.$add_temp("self = Opal.top");self.$add_temp("$nesting = []")}self.$add_temp("nil = Opal.nil");self.$add_used_helpers();self.$add_used_operators();self.$line(self.$scope().$to_vars());self.$compile_method_stubs();self.$compile_irb_vars();self.$compile_end_construct();return self.$line(body_code)},TMP_1.$$s=self,TMP_1.$$arity=0,TMP_1));return self.$closing()},TMP_TopNode_compile_2.$$arity=0);Opal.defn(self,"$opening",TMP_TopNode_opening_3=function $$opening(){var self=this,path=nil;if($truthy(self.$compiler()["$requirable?"]())){path=self.$Pathname(self.$compiler().$file()).$cleanpath().$to_s();return self.$line(""+"Opal.modules["+path.$inspect()+"] = function(Opal) {")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("(function(Opal, self) {")}else{return self.$line("(function(Opal) {")}},TMP_TopNode_opening_3.$$arity=0);Opal.defn(self,"$closing",TMP_TopNode_closing_4=function $$closing(){var self=this;if($truthy(self.$compiler()["$requirable?"]())){return self.$line("};\n")}else if($truthy(self.$compiler()["$eval?"]())){return self.$line("})(Opal, self)")}else{return self.$line("})(Opal);\n")}},TMP_TopNode_closing_4.$$arity=0);Opal.defn(self,"$stmts",TMP_TopNode_stmts_5=function $$stmts(){var self=this;return self.$compiler().$returns(self.$body())},TMP_TopNode_stmts_5.$$arity=0);Opal.defn(self,"$compile_irb_vars",TMP_TopNode_compile_irb_vars_6=function $$compile_irb_vars(){var self=this;if($truthy(self.$compiler()["$irb?"]())){return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }")}else{return nil}},TMP_TopNode_compile_irb_vars_6.$$arity=0);Opal.defn(self,"$add_used_helpers",TMP_TopNode_add_used_helpers_8=function $$add_used_helpers(){var TMP_7,self=this,helpers=nil;helpers=self.$compiler().$helpers().$to_a();return $send(helpers.$to_a(),"each",[],(TMP_7=function(h){var self=TMP_7.$$s||this;if(h==null)h=nil;return self.$add_temp(""+"$"+h+" = Opal."+h)},TMP_7.$$s=self,TMP_7.$$arity=1,TMP_7))},TMP_TopNode_add_used_helpers_8.$$arity=0);Opal.defn(self,"$add_used_operators",TMP_TopNode_add_used_operators_10=function $$add_used_operators(){var TMP_9,self=this,operators=nil;operators=self.$compiler().$operator_helpers().$to_a();return $send(operators,"each",[],(TMP_9=function(op){var self=TMP_9.$$s||this,name=nil;if(op==null)op=nil;name=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Nodes"),"CallNode"),"OPERATORS")["$[]"](op);self.$line(""+"function $rb_"+name+"(lhs, rhs) {");self.$line(""+" return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs "+op+" rhs : lhs['$"+op+"'](rhs);");return self.$line("}")},TMP_9.$$s=self,TMP_9.$$arity=1,TMP_9))},TMP_TopNode_add_used_operators_10.$$arity=0);Opal.defn(self,"$compile_method_stubs",TMP_TopNode_compile_method_stubs_12=function $$compile_method_stubs(){var TMP_11,self=this,calls=nil,stubs=nil;if($truthy(self.$compiler()["$method_missing?"]())){calls=self.$compiler().$method_calls();stubs=$send(calls.$to_a(),"map",[],(TMP_11=function(k){var self=TMP_11.$$s||this;if(k==null)k=nil;return""+"'$"+k+"'"},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11)).$join(", ");if($truthy(stubs["$empty?"]())){return nil}else{return self.$line(""+"Opal.add_stubs(["+stubs+"]);")}}else{return nil}},TMP_TopNode_compile_method_stubs_12.$$arity=0);Opal.defn(self,"$compile_end_construct",TMP_TopNode_compile_end_construct_13=function $$compile_end_construct(){var self=this,content=nil;if($truthy(content=self.$compiler().$eof_content())){self.$line("var $__END__ = Opal.Object.$new();");return self.$line(""+"$__END__.$read = function() { return "+content.$inspect()+"; };")}else{return nil}},TMP_TopNode_compile_end_construct_13.$$arity=0);return(Opal.defn(self,"$version_comment",TMP_TopNode_version_comment_14=function $$version_comment(){var self=this;return""+"/* Generated by Opal "+Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"VERSION")+" */"},TMP_TopNode_version_comment_14.$$arity=0),nil)&&"version_comment"})($nesting[0],Opal.const_get_relative($nesting,"ScopeNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/while"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$children","$with_temp","$js_truthy","$test","$in_while","$compiler","$wrap_in_closure?","$[]=","$while_loop","$-","$stmt","$body","$uses_redo?","$push","$while_open","$while_close","$line","$wrap","$[]","$expr?","$recv?"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $WhileNode(){}var self=$WhileNode=$klass($base,$super,"WhileNode",$WhileNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_WhileNode_compile_3,TMP_WhileNode_while_open_4,TMP_WhileNode_while_close_5,TMP_WhileNode_uses_redo$q_6,TMP_WhileNode_wrap_in_closure$q_7;self.$handle("while");self.$children("test","body");Opal.defn(self,"$compile",TMP_WhileNode_compile_3=function $$compile(){var TMP_1,self=this;$send(self,"with_temp",[],(TMP_1=function(redo_var){var self=TMP_1.$$s||this,TMP_2,test_code=nil;if(redo_var==null)redo_var=nil;test_code=self.$js_truthy(self.$test());$send(self.$compiler(),"in_while",[],(TMP_2=function(){var self=TMP_2.$$s||this,$writer=nil,body_code=nil;if($truthy(self["$wrap_in_closure?"]())){$writer=["closure",true];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)]}$writer=["redo_var",redo_var];$send(self.$while_loop(),"[]=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];body_code=self.$stmt(self.$body());if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false; "+self.$while_open()+redo_var+" || ");self.$push(test_code);self.$push(self.$while_close())}else{self.$push(self.$while_open(),test_code,self.$while_close())}if($truthy(self["$uses_redo?"]())){self.$push(""+redo_var+" = false;")}return self.$line(body_code)},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2));return self.$line("}")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(self["$wrap_in_closure?"]())){return self.$wrap("(function() {","; return nil; })()")}else{return nil}},TMP_WhileNode_compile_3.$$arity=0);Opal.defn(self,"$while_open",TMP_WhileNode_while_open_4=function $$while_open(){var self=this;return"while ("},TMP_WhileNode_while_open_4.$$arity=0);Opal.defn(self,"$while_close",TMP_WhileNode_while_close_5=function $$while_close(){var self=this;return") {"},TMP_WhileNode_while_close_5.$$arity=0);Opal.defn(self,"$uses_redo?",TMP_WhileNode_uses_redo$q_6=function(){var self=this;return self.$while_loop()["$[]"]("use_redo")},TMP_WhileNode_uses_redo$q_6.$$arity=0);return(Opal.defn(self,"$wrap_in_closure?",TMP_WhileNode_wrap_in_closure$q_7=function(){var $a,self=this;return $truthy($a=self["$expr?"]())?$a:self["$recv?"]()},TMP_WhileNode_wrap_in_closure$q_7.$$arity=0),nil)&&"wrap_in_closure?"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $WhilePostNode(){}var self=$WhilePostNode=$klass($base,$super,"WhilePostNode",$WhilePostNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("while_post")})($nesting[0],Opal.const_get_relative($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){function $UntilNode(){}var self=$UntilNode=$klass($base,$super,"UntilNode",$UntilNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_UntilNode_while_open_8,TMP_UntilNode_while_close_9;self.$handle("until");Opal.defn(self,"$while_open",TMP_UntilNode_while_open_8=function $$while_open(){var self=this;return"while (!("},TMP_UntilNode_while_open_8.$$arity=0);return(Opal.defn(self,"$while_close",TMP_UntilNode_while_close_9=function $$while_close(){var self=this;return")) {"},TMP_UntilNode_while_close_9.$$arity=0),nil)&&"while_close"})($nesting[0],Opal.const_get_relative($nesting,"WhileNode"),$nesting);(function($base,$super,$parent_nesting){function $UntilPostNode(){}var self=$UntilPostNode=$klass($base,$super,"UntilPostNode",$UntilPostNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting);return self.$handle("until_post")})($nesting[0],Opal.const_get_relative($nesting,"UntilNode"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/hash"]=function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2;Opal.add_stubs(["$require","$handle","$attr_accessor","$each","$children","$type","$===","$<<","$[]","$all?","$keys","$include?","$has_kwsplat","$compile_merge","$simple_keys?","$compile_hash2","$compile_hash","$helper","$==","$empty?","$expr","$s","$each_with_index","$push","$wrap","$times","$size","$inspect","$to_s","$values","$[]=","$-","$join","$value"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $HashNode(){}var self=$HashNode=$klass($base,$super,"HashNode",$HashNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_HashNode_initialize_1,TMP_HashNode_simple_keys$q_4,TMP_HashNode_compile_5,TMP_HashNode_compile_merge_8,TMP_HashNode_compile_hash_10,TMP_HashNode_compile_hash2_13;self.$handle("hash");self.$attr_accessor("has_kwsplat","keys","values");Opal.defn(self,"$initialize",TMP_HashNode_initialize_1=function $$initialize($a_rest){var TMP_2,self=this,$iter=TMP_HashNode_initialize_1.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_HashNode_initialize_1.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_HashNode_initialize_1,false),$zuper,$iter);self.has_kwsplat=false;self.keys=[];self.values=[];return $send(self.$children(),"each",[],(TMP_2=function(child){var self=TMP_2.$$s||this,$case=nil;if(self.keys==null)self.keys=nil;if(self.values==null)self.values=nil;if(child==null)child=nil;return function(){$case=child.$type();if("kwsplat"["$==="]($case)){return self.has_kwsplat=true}else if("pair"["$==="]($case)){self.keys["$<<"](child.$children()["$[]"](0));return self.values["$<<"](child.$children()["$[]"](1))}else{return nil}}()},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2))},TMP_HashNode_initialize_1.$$arity=-1);Opal.defn(self,"$simple_keys?",TMP_HashNode_simple_keys$q_4=function(){var TMP_3,self=this;return $send(self.$keys(),"all?",[],(TMP_3=function(key){var self=TMP_3.$$s||this;if(key==null)key=nil;return["sym","str"]["$include?"](key.$type())},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3))},TMP_HashNode_simple_keys$q_4.$$arity=0);Opal.defn(self,"$compile",TMP_HashNode_compile_5=function $$compile(){var self=this;if($truthy(self.$has_kwsplat())){return self.$compile_merge()}else if($truthy(self["$simple_keys?"]())){return self.$compile_hash2()}else{return self.$compile_hash()}},TMP_HashNode_compile_5.$$arity=0);Opal.defn(self,"$compile_merge",TMP_HashNode_compile_merge_8=function $$compile_merge(){var $a,TMP_6,TMP_7,self=this,result=nil,seq=nil;self.$helper("hash");$a=[[],[]],result=$a[0],seq=$a[1],$a;$send(self.$children(),"each",[],(TMP_6=function(child){var self=TMP_6.$$s||this;if(child==null)child=nil;if(child.$type()["$=="]("kwsplat")){if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}result["$<<"](self.$expr(child));return seq=[]}else{return seq["$<<"](child)}},TMP_6.$$s=self,TMP_6.$$arity=1,TMP_6));if($truthy(seq["$empty?"]())){}else{result["$<<"](self.$expr($send(self,"s",["hash"].concat(Opal.to_a(seq)))))}return $send(result,"each_with_index",[],(TMP_7=function(fragment,idx){var self=TMP_7.$$s||this;if(fragment==null)fragment=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$push(fragment)}else{return self.$push(".$merge(",fragment,")")}},TMP_7.$$s=self,TMP_7.$$arity=2,TMP_7))},TMP_HashNode_compile_merge_8.$$arity=0);Opal.defn(self,"$compile_hash",TMP_HashNode_compile_hash_10=function $$compile_hash(){var TMP_9,self=this;self.$helper("hash");$send(self.$children(),"each_with_index",[],(TMP_9=function(pair,idx){var self=TMP_9.$$s||this,$a,$b,key=nil,value=nil;if(pair==null)pair=nil;if(idx==null)idx=nil;$b=pair.$children(),$a=Opal.to_ary($b),key=$a[0]==null?nil:$a[0],value=$a[1]==null?nil:$a[1],$b;if(idx["$=="](0)){}else{self.$push(", ")}return self.$push(self.$expr(key),", ",self.$expr(value))},TMP_9.$$s=self,TMP_9.$$arity=2,TMP_9));return self.$wrap("$hash(",")")},TMP_HashNode_compile_hash_10.$$arity=0);return(Opal.defn(self,"$compile_hash2",TMP_HashNode_compile_hash2_13=function $$compile_hash2(){var $a,TMP_11,TMP_12,self=this,hash_obj=nil,hash_keys=nil;$a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],$a;self.$helper("hash2");$send(self.$keys().$size(),"times",[],(TMP_11=function(idx){var self=TMP_11.$$s||this,key=nil,$writer=nil;if(idx==null)idx=nil;key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect();if($truthy(hash_obj["$include?"](key))){}else{hash_keys["$<<"](key)}$writer=[key,self.$expr(self.$values()["$[]"](idx))];$send(hash_obj,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_11.$$s=self,TMP_11.$$arity=1,TMP_11));$send(hash_keys,"each_with_index",[],(TMP_12=function(key,idx){var self=TMP_12.$$s||this;if(key==null)key=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(", ")}self.$push(""+key+": ");return self.$push(hash_obj["$[]"](key))},TMP_12.$$s=self,TMP_12.$$arity=2,TMP_12));return self.$wrap(""+"$hash2(["+hash_keys.$join(", ")+"], {","})")},TMP_HashNode_compile_hash2_13.$$arity=0),nil)&&"compile_hash2"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting);(function($base,$super,$parent_nesting){function $KwSplatNode(){}var self=$KwSplatNode=$klass($base,$super,"KwSplatNode",$KwSplatNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_KwSplatNode_compile_14;self.$handle("kwsplat");self.$children("value");return(Opal.defn(self,"$compile",TMP_KwSplatNode_compile_14=function $$compile(){var self=this;return self.$push("Opal.to_hash(",self.$expr(self.$value()),")")},TMP_KwSplatNode_compile_14.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$empty?","$children","$push","$each","$==","$type","$expr","$<<","$fragment"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ArrayNode(){}var self=$ArrayNode=$klass($base,$super,"ArrayNode",$ArrayNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ArrayNode_compile_2;self.$handle("array");return(Opal.defn(self,"$compile",TMP_ArrayNode_compile_2=function $$compile(){var $a,TMP_1,self=this,code=nil,work=nil,join=nil;if($truthy(self.$children()["$empty?"]())){return self.$push("[]")}$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],(TMP_1=function(child){var self=TMP_1.$$s||this,splat=nil,part=nil;if(child==null)child=nil;splat=child.$type()["$=="]("splat");part=self.$expr(child);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")"))}else{code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](part)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(work["$empty?"]())){}else{join=[self.$fragment("["),work,self.$fragment("]")];if($truthy(code["$empty?"]())){code=join}else{code.$push([self.$fragment(".concat("),join,self.$fragment(")")])}}return self.$push(code)},TMP_ArrayNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$require","$handle","$children","$type","$value","$===","$push","$inspect","$to_s","$==","$size","$[]","$compile_defined_send","$wrap","$compile_defined_ivar","$compile_defined_super","$compile_defined_yield","$compile_defined_xstr","$compile_defined_const","$compile_defined_cvar","$compile_defined_gvar","$compile_defined_back_ref","$compile_defined_nth_ref","$compile_defined_array","$respond_to?","$__send__","$new_temp","$scope","$expr","$wrap_with_try_catch","$mid_to_jsid","$compile_defined","$compile_send_recv_doesnt_raise","$each","$s","$uses_block!","$block_name","$find_parent_def","$nil?","$class_variable_owner","$helper","$include?","$each_with_index"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $DefinedNode(){}var self=$DefinedNode=$klass($base,$super,"DefinedNode",$DefinedNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DefinedNode_compile_1,TMP_DefinedNode_compile_defined_2,TMP_DefinedNode_wrap_with_try_catch_3,TMP_DefinedNode_compile_send_recv_doesnt_raise_4,TMP_DefinedNode_compile_defined_send_6,TMP_DefinedNode_compile_defined_ivar_7,TMP_DefinedNode_compile_defined_super_8,TMP_DefinedNode_compile_defined_yield_9,TMP_DefinedNode_compile_defined_xstr_10,TMP_DefinedNode_compile_defined_const_11,TMP_DefinedNode_compile_defined_cvar_12,TMP_DefinedNode_compile_defined_gvar_13,TMP_DefinedNode_compile_defined_back_ref_14,TMP_DefinedNode_compile_defined_nth_ref_15,TMP_DefinedNode_compile_defined_array_17;self.$handle("defined?");self.$children("value");Opal.defn(self,"$compile",TMP_DefinedNode_compile_1=function $$compile(){var $a,self=this,$case=nil;return function(){$case=self.$value().$type();if("self"["$==="]($case)||"nil"["$==="]($case)||"false"["$==="]($case)||"true"["$==="]($case)){return self.$push(self.$value().$type().$to_s().$inspect())}else if("lvasgn"["$==="]($case)||"ivasgn"["$==="]($case)||"gvasgn"["$==="]($case)||"cvasgn"["$==="]($case)||"casgn"["$==="]($case)||"op_asgn"["$==="]($case)||"or_asgn"["$==="]($case)||"and_asgn"["$==="]($case)){return self.$push("'assignment'")}else if("lvar"["$==="]($case)){return self.$push("'local-variable'")}else if("begin"["$==="]($case)){if($truthy(($a=self.$value().$children().$size()["$=="](1))?self.$value().$children()["$[]"](0).$type()["$=="]("masgn"):self.$value().$children().$size()["$=="](1))){return self.$push("'assignment'")}else{return self.$push("'expression'")}}else if("send"["$==="]($case)){self.$compile_defined_send(self.$value());return self.$wrap("("," ? 'method' : nil)")}else if("ivar"["$==="]($case)){self.$compile_defined_ivar(self.$value());return self.$wrap("("," ? 'instance-variable' : nil)")}else if("zsuper"["$==="]($case)||"super"["$==="]($case)){return self.$compile_defined_super(self.$value())}else if("yield"["$==="]($case)){self.$compile_defined_yield(self.$value());return self.$wrap("("," ? 'yield' : nil)")}else if("xstr"["$==="]($case)){return self.$compile_defined_xstr(self.$value())}else if("const"["$==="]($case)){self.$compile_defined_const(self.$value());return self.$wrap("("," ? 'constant' : nil)")}else if("cvar"["$==="]($case)){self.$compile_defined_cvar(self.$value());return self.$wrap("("," ? 'class variable' : nil)")}else if("gvar"["$==="]($case)){self.$compile_defined_gvar(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("back_ref"["$==="]($case)){self.$compile_defined_back_ref(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("nth_ref"["$==="]($case)){self.$compile_defined_nth_ref(self.$value());return self.$wrap("("," ? 'global-variable' : nil)")}else if("array"["$==="]($case)){self.$compile_defined_array(self.$value());return self.$wrap("("," ? 'expression' : nil)")}else{return self.$push("'expression'")}}()},TMP_DefinedNode_compile_1.$$arity=0);Opal.defn(self,"$compile_defined",TMP_DefinedNode_compile_defined_2=function $$compile_defined(node){var self=this,type=nil,node_tmp=nil;type=node.$type();if($truthy(self["$respond_to?"](""+"compile_defined_"+type))){return self.$__send__(""+"compile_defined_"+type,node)}else{node_tmp=self.$scope().$new_temp();self.$push(""+"("+node_tmp+" = ",self.$expr(node),")");return node_tmp}},TMP_DefinedNode_compile_defined_2.$$arity=1);Opal.defn(self,"$wrap_with_try_catch",TMP_DefinedNode_wrap_with_try_catch_3=function $$wrap_with_try_catch(code){var self=this,returning_tmp=nil;returning_tmp=self.$scope().$new_temp();self.$push(""+"("+returning_tmp+" = (function() { try {");self.$push(""+" return "+code+";");self.$push("} catch ($err) {");self.$push(" if (Opal.rescue($err, [Opal.Exception])) {");self.$push(" try {");self.$push(" return false;");self.$push(" } finally { Opal.pop_exception() }");self.$push(" } else { throw $err; }");self.$push("}})())");return returning_tmp},TMP_DefinedNode_wrap_with_try_catch_3.$$arity=1);Opal.defn(self,"$compile_send_recv_doesnt_raise",TMP_DefinedNode_compile_send_recv_doesnt_raise_4=function $$compile_send_recv_doesnt_raise(recv_code){var self=this;return self.$wrap_with_try_catch(recv_code)},TMP_DefinedNode_compile_send_recv_doesnt_raise_4.$$arity=1);Opal.defn(self,"$compile_defined_send",TMP_DefinedNode_compile_defined_send_6=function $$compile_defined_send(node){var $a,TMP_5,self=this,recv=nil,method_name=nil,args=nil,mid=nil,recv_code=nil,recv_tmp=nil,recv_value_tmp=nil,meth_tmp=nil;$a=[].concat(Opal.to_a(node)),recv=$a[0]==null?nil:$a[0],method_name=$a[1]==null?nil:$a[1],args=$slice.call($a,2),$a;mid=self.$mid_to_jsid(method_name.$to_s());if($truthy(recv)){recv_code=self.$compile_defined(recv);self.$push(" && ");if(recv.$type()["$=="]("send")){recv_code=self.$compile_send_recv_doesnt_raise(recv_code);self.$push(" && ")}recv_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_tmp+" = ",recv_code,""+", "+recv_tmp+") && ")}else{recv_tmp="self"}recv_value_tmp=self.$scope().$new_temp();self.$push(""+"("+recv_value_tmp+" = "+recv_tmp+") && ");meth_tmp=self.$scope().$new_temp();self.$push(""+"((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)");self.$push(""+" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))");$send(args,"each",[],(TMP_5=function(arg){var self=TMP_5.$$s||this,$case=nil;if(arg==null)arg=nil;return function(){$case=arg.$type();if("block_pass"["$==="]($case)){return nil}else{self.$push(" && ");return self.$compile_defined(arg)}}()},TMP_5.$$s=self,TMP_5.$$arity=1,TMP_5));self.$wrap("(",")");return""+meth_tmp+"()"},TMP_DefinedNode_compile_defined_send_6.$$arity=1);Opal.defn(self,"$compile_defined_ivar",TMP_DefinedNode_compile_defined_ivar_7=function $$compile_defined_ivar(node){var self=this,name=nil,tmp=nil;name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));tmp=self.$scope().$new_temp();self.$push(""+"("+tmp+" = self['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)");return tmp},TMP_DefinedNode_compile_defined_ivar_7.$$arity=1);Opal.defn(self,"$compile_defined_super",TMP_DefinedNode_compile_defined_super_8=function $$compile_defined_super(node){var self=this;return self.$push(self.$expr(self.$s("defined_super")))},TMP_DefinedNode_compile_defined_super_8.$$arity=1);Opal.defn(self,"$compile_defined_yield",TMP_DefinedNode_compile_defined_yield_9=function $$compile_defined_yield(node){var $a,$b,self=this,block_name=nil,parent=nil;self.$scope()["$uses_block!"]();block_name=$truthy($a=self.$scope().$block_name())?$a:parent=$truthy($b=self.$scope().$find_parent_def())?parent.$block_name():$b;self.$push(""+"("+block_name+" != null && "+block_name+" !== nil)");return block_name},TMP_DefinedNode_compile_defined_yield_9.$$arity=1);Opal.defn(self,"$compile_defined_xstr",TMP_DefinedNode_compile_defined_xstr_10=function $$compile_defined_xstr(node){var self=this;return self.$push("(typeof(",self.$expr(node),') !== "undefined")')},TMP_DefinedNode_compile_defined_xstr_10.$$arity=1);Opal.defn(self,"$compile_defined_const",TMP_DefinedNode_compile_defined_const_11=function $$compile_defined_const(node){var $a,self=this,const_scope=nil,const_name=nil,const_tmp=nil,const_scope_tmp=nil;$a=[].concat(Opal.to_a(node)),const_scope=$a[0]==null?nil:$a[0],const_name=$a[1]==null?nil:$a[1],$a;const_tmp=self.$scope().$new_temp();if($truthy(const_scope["$nil?"]())){self.$push(""+"("+const_tmp+" = Opal.const_get_relative($nesting, '"+const_name+"', 'skip_raise'))")}else if(const_scope["$=="](self.$s("cbase"))){self.$push(""+"("+const_tmp+" = Opal.const_get_qualified('::', '"+const_name+"', 'skip_raise'))")}else{const_scope_tmp=self.$compile_defined(const_scope);self.$push(""+" && ("+const_tmp+" = Opal.const_get_qualified("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")}return const_tmp},TMP_DefinedNode_compile_defined_const_11.$$arity=1);Opal.defn(self,"$compile_defined_cvar",TMP_DefinedNode_compile_defined_cvar_12=function $$compile_defined_cvar(node){var $a,self=this,cvar_name=nil,_=nil,cvar_tmp=nil;$a=[].concat(Opal.to_a(node)),cvar_name=$a[0]==null?nil:$a[0],_=$a[1]==null?nil:$a[1],$a;cvar_tmp=self.$scope().$new_temp();self.$push(""+"("+cvar_tmp+" = "+self.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)");return cvar_tmp},TMP_DefinedNode_compile_defined_cvar_12.$$arity=1);Opal.defn(self,"$compile_defined_gvar",TMP_DefinedNode_compile_defined_gvar_13=function $$compile_defined_gvar(node){var self=this,name=nil,gvar_temp=nil;self.$helper("gvars");name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,false));gvar_temp=self.$scope().$new_temp();if($truthy(["~","!"]["$include?"](name))){self.$push(""+"("+gvar_temp+" = ",self.$expr(node)," || true)")}else{self.$push(""+"("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)")}return gvar_temp},TMP_DefinedNode_compile_defined_gvar_13.$$arity=1);Opal.defn(self,"$compile_defined_back_ref",TMP_DefinedNode_compile_defined_back_ref_14=function $$compile_defined_back_ref(node){var self=this,back_ref_temp=nil;self.$helper("gvars");back_ref_temp=self.$scope().$new_temp();self.$push(""+"("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)");return back_ref_temp},TMP_DefinedNode_compile_defined_back_ref_14.$$arity=1);Opal.defn(self,"$compile_defined_nth_ref",TMP_DefinedNode_compile_defined_nth_ref_15=function $$compile_defined_nth_ref(node){var self=this,nth_ref_tmp=nil;self.$helper("gvars");nth_ref_tmp=self.$scope().$new_temp();self.$push(""+"("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)");return nth_ref_tmp},TMP_DefinedNode_compile_defined_nth_ref_15.$$arity=1);return(Opal.defn(self,"$compile_defined_array",TMP_DefinedNode_compile_defined_array_17=function $$compile_defined_array(node){var TMP_16,self=this;return $send(node.$children(),"each_with_index",[],(TMP_16=function(child,idx){var self=TMP_16.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){}else{self.$push(" && ")}return self.$compile_defined(child)},TMP_16.$$s=self,TMP_16.$$arity=2,TMP_16))},TMP_DefinedNode_compile_defined_array_17.$$arity=1),nil)&&"compile_defined_array"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/masgn"]=function(Opal){function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$handle","$children","$new_temp","$scope","$==","$type","$rhs","$push","$expr","$any?","$size","$compile_masgn","$lhs","$queue_temp","$take_while","$!=","$drop","$each_with_index","$compile_assignment","$empty?","$shift","$[]","$<<","$dup","$s","$!","$>=","$updated","$include?","$+","$last","$raise"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $MassAssignNode(){}var self=$MassAssignNode=$klass($base,$super,"MassAssignNode",$MassAssignNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_MassAssignNode_compile_2,TMP_MassAssignNode_compile_masgn_6,TMP_MassAssignNode_compile_assignment_7;Opal.const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"]);self.$handle("masgn");self.$children("lhs","rhs");Opal.defn(self,"$compile",TMP_MassAssignNode_compile_2=function $$compile(){var TMP_1,self=this,array=nil,rhs_len=nil,retval=nil;array=self.$scope().$new_temp();if(self.$rhs().$type()["$=="]("array")){self.$push(""+array+" = ",self.$expr(self.$rhs()));rhs_len=function(){if($truthy($send(self.$rhs().$children(),"any?",[],(TMP_1=function(c){var self=TMP_1.$$s||this;if(c==null)c=nil;return c.$type()["$=="]("splat")},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1)))){return nil}else{return self.$rhs().$children().$size()}return nil}();self.$compile_masgn(self.$lhs().$children(),array,rhs_len);self.$push(""+", "+array)}else if(self.$rhs().$type()["$=="]("begin")){retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}else{retval=self.$scope().$new_temp();self.$push(""+retval+" = ",self.$expr(self.$rhs()));self.$push(""+", "+array+" = Opal.to_ary("+retval+")");self.$compile_masgn(self.$lhs().$children(),array);self.$push(""+", "+retval);self.$scope().$queue_temp(retval)}return self.$scope().$queue_temp(array)},TMP_MassAssignNode_compile_2.$$arity=0);Opal.defn(self,"$compile_masgn",TMP_MassAssignNode_compile_masgn_6=function $$compile_masgn(lhs_items,array,len){var TMP_3,TMP_4,TMP_5,self=this,pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;if(len==null){len=nil}pre_splat=$send(lhs_items,"take_while",[],(TMP_3=function(child){var self=TMP_3.$$s||this;if(child==null)child=nil;return child.$type()["$!="]("splat")},TMP_3.$$s=self,TMP_3.$$arity=1,TMP_3));post_splat=lhs_items.$drop(pre_splat.$size());$send(pre_splat,"each_with_index",[],(TMP_4=function(child,idx){var self=TMP_4.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;return self.$compile_assignment(child,array,idx,len)},TMP_4.$$s=self,TMP_4.$$arity=2,TMP_4));if($truthy(post_splat["$empty?"]())){return nil}else{splat=post_splat.$shift();if($truthy(post_splat["$empty?"]())){if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+")"));self.$push(", ");return self.$push(self.$expr(part))}else{return nil}}else{tmp=self.$scope().$new_temp();self.$push(""+", "+tmp+" = "+array+".length - "+post_splat.$size());self.$push(""+", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp);if($truthy(part=splat.$children()["$[]"](0))){part=part.$dup()["$<<"](self.$s("js_tmp",""+"$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")"));self.$push(", ");self.$push(self.$expr(part))}$send(post_splat,"each_with_index",[],(TMP_5=function(child,idx){var self=TMP_5.$$s||this;if(child==null)child=nil;if(idx==null)idx=nil;if(idx["$=="](0)){return self.$compile_assignment(child,array,tmp)}else{return self.$compile_assignment(child,array,""+tmp+" + "+idx)}},TMP_5.$$s=self,TMP_5.$$arity=2,TMP_5));return self.$scope().$queue_temp(tmp)}}},TMP_MassAssignNode_compile_masgn_6.$$arity=-3);return(Opal.defn(self,"$compile_assignment",TMP_MassAssignNode_compile_assignment_7=function $$compile_assignment(child,array,idx,len){var $a,self=this,assign=nil,part=nil,tmp=nil;if(len==null){len=nil}if($truthy($truthy($a=len["$!"]())?$a:$rb_ge(idx,len))){assign=self.$s("js_tmp",""+"("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])")}else{assign=self.$s("js_tmp",""+array+"["+idx+"]")}part=child.$updated();if($truthy(Opal.const_get_relative($nesting,"SIMPLE_ASSIGNMENT")["$include?"](child.$type()))){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("send")){part=part.$updated(nil,$rb_plus(part.$children(),[assign]))}else if(child.$type()["$=="]("attrasgn")){part.$last()["$<<"](assign)}else if(child.$type()["$=="]("mlhs")){tmp=self.$scope().$new_temp();self.$push(""+", ("+tmp+" = Opal.to_ary("+assign.$children()["$[]"](0)+")");self.$compile_masgn(child.$children(),tmp);self.$push(")");self.$scope().$queue_temp(tmp);return nil}else{self.$raise(""+"Bad child node in masgn LHS: "+child+". LHS: "+self.$lhs())}self.$push(", ");return self.$push(self.$expr(part))},TMP_MassAssignNode_compile_assignment_7.$$arity=-4),nil)&&"compile_assignment"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$handle","$each","$children","$==","$type","$expr","$empty?","$<<","$fragment","$push"]);self.$require("opal/nodes/base");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $Nodes,self=$Nodes=$module($base,"Nodes");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $ArglistNode(){}var self=$ArglistNode=$klass($base,$super,"ArglistNode",$ArglistNode);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ArglistNode_compile_2;self.$handle("arglist");return(Opal.defn(self,"$compile",TMP_ArglistNode_compile_2=function $$compile(){var $a,TMP_1,self=this,code=nil,work=nil,join=nil;$a=[[],[]],code=$a[0],work=$a[1],$a;$send(self.$children(),"each",[],(TMP_1=function(current){var self=TMP_1.$$s||this,splat=nil,arg=nil;if(current==null)current=nil;splat=current.$type()["$=="]("splat");arg=self.$expr(current);if($truthy(splat)){if($truthy(work["$empty?"]())){if($truthy(code["$empty?"]())){code["$<<"](arg)}else{code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}}else{if($truthy(code["$empty?"]())){code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]"))}else{code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])"))}code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))}return work=[]}else{if($truthy(work["$empty?"]())){}else{work["$<<"](self.$fragment(", "))}return work["$<<"](arg)}},TMP_1.$$s=self,TMP_1.$$arity=1,TMP_1));if($truthy(work["$empty?"]())){}else{join=work;if($truthy(code["$empty?"]())){code=join}else{code["$<<"](self.$fragment(".concat("))["$<<"](join)["$<<"](self.$fragment(")"))}}return $send(self,"push",Opal.to_a(code))},TMP_ArglistNode_compile_2.$$arity=0),nil)&&"compile"})($nesting[0],Opal.const_get_relative($nesting,"Base"),$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("opal/nodes/base");self.$require("opal/nodes/literal");self.$require("opal/nodes/variables");self.$require("opal/nodes/constants");self.$require("opal/nodes/call");self.$require("opal/nodes/csend");self.$require("opal/nodes/call_special");self.$require("opal/nodes/module");self.$require("opal/nodes/class");self.$require("opal/nodes/singleton_class");self.$require("opal/nodes/inline_args");self.$require("opal/nodes/args/normarg");self.$require("opal/nodes/args/optarg");self.$require("opal/nodes/args/mlhsarg");self.$require("opal/nodes/args/restarg");self.$require("opal/nodes/args/kwarg");self.$require("opal/nodes/args/kwoptarg");self.$require("opal/nodes/args/kwrestarg");self.$require("opal/nodes/args/post_kwargs");self.$require("opal/nodes/args/post_args");self.$require("opal/nodes/iter");self.$require("opal/nodes/def");self.$require("opal/nodes/defs");self.$require("opal/nodes/if");self.$require("opal/nodes/logic");self.$require("opal/nodes/definitions");self.$require("opal/nodes/yield");self.$require("opal/nodes/rescue");self.$require("opal/nodes/case");self.$require("opal/nodes/super");self.$require("opal/nodes/top");self.$require("opal/nodes/while");self.$require("opal/nodes/hash");self.$require("opal/nodes/array");self.$require("opal/nodes/defined");self.$require("opal/nodes/masgn");return self.$require("opal/nodes/arglist")};Opal.modules["opal/eof_content"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$range=Opal.range;Opal.add_stubs(["$empty?","$[]","$last_token_position","$drop_while","$lines","$==","$join","$private","$last","$end_pos"]);return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$super,$parent_nesting){function $EofContent(){}var self=$EofContent=$klass($base,$super,"EofContent",$EofContent);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_EofContent_initialize_1,TMP_EofContent_eof_3,TMP_EofContent_last_token_position_4;def.tokens=def.source=nil;Opal.const_set($nesting[0],"DATA_SEPARATOR","__END__\n");Opal.defn(self,"$initialize",TMP_EofContent_initialize_1=function $$initialize(tokens,source){var self=this;self.tokens=tokens;return self.source=source},TMP_EofContent_initialize_1.$$arity=2);Opal.defn(self,"$eof",TMP_EofContent_eof_3=function $$eof(){var TMP_2,$a,self=this,eof_content=nil;if($truthy(self.tokens["$empty?"]())){return nil}eof_content=self.source["$[]"](Opal.Range.$new(self.$last_token_position(),-1,false));if($truthy(eof_content)){}else{return nil}eof_content=$send(eof_content.$lines(),"drop_while",[],(TMP_2=function(line){var self=TMP_2.$$s||this;if(line==null)line=nil;return line["$=="]("\n")},TMP_2.$$s=self,TMP_2.$$arity=1,TMP_2));if(eof_content["$[]"](0)["$=="]("__END__\n")){eof_content=$truthy($a=eof_content["$[]"]($range(1,-1,false)))?$a:[];return eof_content.$join()}else if(eof_content["$=="](["__END__"])){return""}else{return nil}},TMP_EofContent_eof_3.$$arity=0);self.$private();return(Opal.defn(self,"$last_token_position",TMP_EofContent_last_token_position_4=function $$last_token_position(){var $a,$b,self=this,_=nil,last_token_info=nil,last_token_range=nil;$b=self.tokens.$last(),$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_info=$a[1]==null?nil:$a[1],$b;$b=last_token_info,$a=Opal.to_ary($b),_=$a[0]==null?nil:$a[0],last_token_range=$a[1]==null?nil:$a[1],$b;return last_token_range.$end_pos()},TMP_EofContent_last_token_position_4.$$arity=0),nil)&&"last_token_position"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/compiler"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy;Opal.add_stubs(["$require","$compile","$new","$[]","$define_method","$fetch","$!","$include?","$raise","$+","$inspect","$compiler_option","$attr_reader","$attr_accessor","$parse","$flatten","$process","$join","$map","$to_proc","$file","$source=","$-","$default_parser","$tokenize","$message","$backtrace","$s","$associate_locations","$eof","$warn","$to_s","$empty?","$gsub","$<<","$helpers","$new_temp","$queue_temp","$push_while","$indent","$pop_while","$in_while?","$==","$fragment","$scope","$handlers","$type","$compile_to_fragments","$error","$returns","$===","$updated","$any?","$children","$select","$end_with?","$loc","$uses_block!","$block_name","$find_parent_def"]);self.$require("set");self.$require("opal/parser");self.$require("opal/fragment");self.$require("opal/nodes");self.$require("opal/eof_content");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Opal_compile_1;Opal.defs(self,"$compile",TMP_Opal_compile_1=function $$compile(source,options){var self=this;if(options==null){options=$hash2([],{})}return Opal.const_get_relative($nesting,"Compiler").$new(source,options).$compile()},TMP_Opal_compile_1.$$arity=-2);(function($base,$super,$parent_nesting){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Compiler_compiler_option_4,TMP_Compiler_initialize_5,TMP_Compiler_compile_6,TMP_Compiler_parse_7,TMP_Compiler_source_map_8,TMP_Compiler_helpers_9,TMP_Compiler_operator_helpers_10,TMP_Compiler_method_calls_11,TMP_Compiler_error_12,TMP_Compiler_warning_13,TMP_Compiler_parser_indent_14,TMP_Compiler_s_15,TMP_Compiler_fragment_16,TMP_Compiler_unique_temp_17,TMP_Compiler_helper_18,TMP_Compiler_indent_19,TMP_Compiler_with_temp_20,TMP_Compiler_in_while_21,TMP_Compiler_in_ensure_23,TMP_Compiler_in_ensure$q_24,TMP_Compiler_in_case_25,TMP_Compiler_in_while$q_26,TMP_Compiler_process_27,TMP_Compiler_handlers_28,TMP_Compiler_requires_29,TMP_Compiler_required_trees_30,TMP_Compiler_returns_35,TMP_Compiler_handle_block_given_call_36;def.sexp=def.fragments=def.source=def.buffer=def.parser=def.helpers=def.operator_helpers=def.method_calls=def.indent=def.unique=def.scope=def.in_ensure=def.case_stmt=def.handlers=def.requires=def.required_trees=nil;Opal.const_set($nesting[0],"INDENT"," ");Opal.const_set($nesting[0],"COMPARE",["<",">","<=",">="]);Opal.defs(self,"$compiler_option",TMP_Compiler_compiler_option_4=function $$compiler_option(name,default_value,options){var $a,TMP_2,self=this,mid=nil,valid_values=nil;if(options==null){options=$hash2([],{})}mid=options["$[]"]("as");valid_values=options["$[]"]("valid_values");return $send(self,"define_method",[$truthy($a=mid)?$a:name],(TMP_2=function(){var self=TMP_2.$$s||this,TMP_3,$b,value=nil;if(self.options==null)self.options=nil;value=$send(self.options,"fetch",[name],(TMP_3=function(){var self=TMP_3.$$s||this;return default_value},TMP_3.$$s=self,TMP_3.$$arity=0,TMP_3));if($truthy($truthy($b=valid_values)?valid_values["$include?"](value)["$!"]():$b)){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),$rb_plus(""+"invalid value "+value.$inspect()+" for option "+name.$inspect()+" ",""+"(valid values: "+valid_values.$inspect()+")"))}return value},TMP_2.$$s=self,TMP_2.$$arity=0,TMP_2))},TMP_Compiler_compiler_option_4.$$arity=-3);self.$compiler_option("file","(file)");self.$compiler_option("method_missing",true,$hash2(["as"],{as:"method_missing?"}));self.$compiler_option("arity_check",false,$hash2(["as"],{as:"arity_check?"}));self.$compiler_option("freezing",true,$hash2(["as"],{as:"freezing?"}));self.$compiler_option("tainting",true,$hash2(["as"],{as:"tainting?"}));self.$compiler_option("irb",false,$hash2(["as"],{as:"irb?"}));self.$compiler_option("dynamic_require_severity","ignore",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]}));self.$compiler_option("requirable",false,$hash2(["as"],{as:"requirable?"}));self.$compiler_option("inline_operators",true,$hash2(["as"],{as:"inline_operators?"}));self.$compiler_option("eval",false,$hash2(["as"],{as:"eval?"}));self.$compiler_option("enable_source_location",false,$hash2(["as"],{as:"enable_source_location?"}));self.$compiler_option("parse_comments",false,$hash2(["as"],{as:"parse_comments?"}));self.$attr_reader("result");self.$attr_reader("fragments");self.$attr_accessor("scope");self.$attr_reader("case_stmt");self.$attr_reader("eof_content");self.$attr_reader("comments");Opal.defn(self,"$initialize",TMP_Compiler_initialize_5=function $$initialize(source,options){var self=this;if(options==null){options=$hash2([],{})}self.source=source;self.indent="";self.unique=0;self.options=options;self.comments=Opal.const_get_relative($nesting,"Hash").$new([]);return self.case_stmt=nil},TMP_Compiler_initialize_5.$$arity=-2);Opal.defn(self,"$compile",TMP_Compiler_compile_6=function $$compile(){var self=this;self.$parse();self.fragments=self.$process(self.sexp).$flatten();return self.result=$send(self.fragments,"map",[],"code".$to_proc()).$join("")},TMP_Compiler_compile_6.$$arity=0);Opal.defn(self,"$parse",TMP_Compiler_parse_7=function $$parse(){var $a,$b,self=this,$writer=nil,sexp=nil,comments=nil,tokens=nil,error=nil;self.buffer=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"Source"),"Buffer").$new(self.$file(),1);$writer=[self.source];$send(self.buffer,"source=",Opal.to_a($writer));$writer[$rb_minus($writer["length"],1)];self.parser=Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Parser").$default_parser();try{$b=self.parser.$tokenize(self.buffer),$a=Opal.to_ary($b),sexp=$a[0]==null?nil:$a[0],comments=$a[1]==null?nil:$a[1],tokens=$a[2]==null?nil:$a[2],$b}catch($err){if(Opal.rescue($err,[Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"SyntaxError")])){error=$err;try{self.$raise(Opal.const_get_qualified("::","SyntaxError"),error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}else{throw $err}}self.sexp=self.$s("top",$truthy($a=sexp)?$a:self.$s("nil"));self.comments=Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Parser"),"Source"),"Comment").$associate_locations(sexp,comments);return self.eof_content=Opal.const_get_relative($nesting,"EofContent").$new(tokens,self.source).$eof()},TMP_Compiler_parse_7.$$arity=0);Opal.defn(self,"$source_map",TMP_Compiler_source_map_8=function $$source_map(source_file){var $a,self=this;if(source_file==null){source_file=nil}return Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"SourceMap").$new(self.fragments,$truthy($a=source_file)?$a:self.$file())},TMP_Compiler_source_map_8.$$arity=-1);Opal.defn(self,"$helpers",TMP_Compiler_helpers_9=function $$helpers(){var $a,self=this;return self.helpers=$truthy($a=self.helpers)?$a:Opal.const_get_relative($nesting,"Set").$new(["breaker","slice"])},TMP_Compiler_helpers_9.$$arity=0);Opal.defn(self,"$operator_helpers",TMP_Compiler_operator_helpers_10=function $$operator_helpers(){var $a,self=this;return self.operator_helpers=$truthy($a=self.operator_helpers)?$a:Opal.const_get_relative($nesting,"Set").$new()},TMP_Compiler_operator_helpers_10.$$arity=0);Opal.defn(self,"$method_calls",TMP_Compiler_method_calls_11=function $$method_calls(){var $a,self=this;return self.method_calls=$truthy($a=self.method_calls)?$a:Opal.const_get_relative($nesting,"Set").$new()},TMP_Compiler_method_calls_11.$$arity=0);Opal.defn(self,"$error",TMP_Compiler_error_12=function $$error(msg,line){var self=this;if(line==null){line=nil}return self.$raise(Opal.const_get_relative($nesting,"SyntaxError"),""+msg+" :"+self.$file()+":"+line)},TMP_Compiler_error_12.$$arity=-2);Opal.defn(self,"$warning",TMP_Compiler_warning_13=function $$warning(msg,line){var self=this;if(line==null){line=nil}return self.$warn(""+"WARNING: "+msg+" -- "+self.$file()+":"+line)},TMP_Compiler_warning_13.$$arity=-2);Opal.defn(self,"$parser_indent",TMP_Compiler_parser_indent_14=function $$parser_indent(){var self=this;return self.indent},TMP_Compiler_parser_indent_14.$$arity=0);Opal.defn(self,"$s",TMP_Compiler_s_15=function $$s(type,$a_rest){var self=this,children;var $args_len=arguments.length,$rest_len=$args_len-1;if($rest_len<0){$rest_len=0}children=new Array($rest_len);for(var $arg_idx=1;$arg_idx<$args_len;$arg_idx++){children[$arg_idx-1]=arguments[$arg_idx]}return Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_qualified("::","Opal"),"AST"),"Node").$new(type,children)},TMP_Compiler_s_15.$$arity=-2);Opal.defn(self,"$fragment",TMP_Compiler_fragment_16=function $$fragment(str,scope,sexp){var self=this;if(sexp==null){sexp=nil}return Opal.const_get_relative($nesting,"Fragment").$new(str,scope,sexp)},TMP_Compiler_fragment_16.$$arity=-3);Opal.defn(self,"$unique_temp",TMP_Compiler_unique_temp_17=function $$unique_temp(name){var $a,self=this,unique=nil;name=name.$to_s();if($truthy($truthy($a=name)?name["$empty?"]()["$!"]():$a)){name=(""+"_"+name).$gsub("?","$q").$gsub("!","$B").$gsub("=","$eq").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")}unique=self.unique=$rb_plus(self.unique,1);return""+"TMP"+name+"_"+unique},TMP_Compiler_unique_temp_17.$$arity=1);Opal.defn(self,"$helper",TMP_Compiler_helper_18=function $$helper(name){var self=this;return self.$helpers()["$<<"](name)},TMP_Compiler_helper_18.$$arity=1);Opal.defn(self,"$indent",TMP_Compiler_indent_19=function $$indent(){var self=this,$iter=TMP_Compiler_indent_19.$$p,block=$iter||nil,indent=nil,res=nil;if($iter)TMP_Compiler_indent_19.$$p=null;indent=self.indent;self.indent=$rb_plus(self.indent,Opal.const_get_relative($nesting,"INDENT"));self.space=""+"\n"+self.indent;res=Opal.yieldX(block,[]);self.indent=indent;self.space=""+"\n"+self.indent;return res},TMP_Compiler_indent_19.$$arity=0);Opal.defn(self,"$with_temp",TMP_Compiler_with_temp_20=function $$with_temp(){var self=this,$iter=TMP_Compiler_with_temp_20.$$p,block=$iter||nil,tmp=nil,res=nil;if($iter)TMP_Compiler_with_temp_20.$$p=null;tmp=self.scope.$new_temp();res=Opal.yield1(block,tmp);self.scope.$queue_temp(tmp);return res},TMP_Compiler_with_temp_20.$$arity=0);Opal.defn(self,"$in_while",TMP_Compiler_in_while_21=function $$in_while(){var TMP_22,self=this,$iter=TMP_Compiler_in_while_21.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_Compiler_in_while_21.$$p=null;if($yield!==nil){}else{return nil}self.while_loop=self.scope.$push_while();result=$send(self,"indent",[],(TMP_22=function(){var self=TMP_22.$$s||this;return Opal.yieldX($yield,[])},TMP_22.$$s=self,TMP_22.$$arity=0,TMP_22));self.scope.$pop_while();return result},TMP_Compiler_in_while_21.$$arity=0);Opal.defn(self,"$in_ensure",TMP_Compiler_in_ensure_23=function $$in_ensure(){var self=this,$iter=TMP_Compiler_in_ensure_23.$$p,$yield=$iter||nil,result=nil;if($iter)TMP_Compiler_in_ensure_23.$$p=null;if($yield!==nil){}else{return nil}self.in_ensure=true;result=Opal.yieldX($yield,[]);self.in_ensure=false;return result},TMP_Compiler_in_ensure_23.$$arity=0);Opal.defn(self,"$in_ensure?",TMP_Compiler_in_ensure$q_24=function(){var self=this;return self.in_ensure["$!"]()["$!"]()},TMP_Compiler_in_ensure$q_24.$$arity=0);Opal.defn(self,"$in_case",TMP_Compiler_in_case_25=function $$in_case(){var self=this,$iter=TMP_Compiler_in_case_25.$$p,$yield=$iter||nil,old=nil;if($iter)TMP_Compiler_in_case_25.$$p=null;if($yield!==nil){}else{return nil}old=self.case_stmt;self.case_stmt=$hash2([],{});Opal.yieldX($yield,[]);return self.case_stmt=old},TMP_Compiler_in_case_25.$$arity=0);Opal.defn(self,"$in_while?",TMP_Compiler_in_while$q_26=function(){var self=this;return self.scope["$in_while?"]()},TMP_Compiler_in_while$q_26.$$arity=0);Opal.defn(self,"$process",TMP_Compiler_process_27=function $$process(sexp,level){var self=this,handler=nil;if(level==null){level="expr"}if(sexp["$=="](nil)){return self.$fragment("",self.$scope())}if($truthy(handler=self.$handlers()["$[]"](sexp.$type()))){return handler.$new(sexp,level,self).$compile_to_fragments()}else{return self.$error(""+"Unsupported sexp: "+sexp.$type())}},TMP_Compiler_process_27.$$arity=-2);Opal.defn(self,"$handlers",TMP_Compiler_handlers_28=function $$handlers(){var $a,self=this;return self.handlers=$truthy($a=self.handlers)?$a:Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"Opal"),"Nodes"),"Base").$handlers()},TMP_Compiler_handlers_28.$$arity=0);Opal.defn(self,"$requires",TMP_Compiler_requires_29=function $$requires(){var $a,self=this;return self.requires=$truthy($a=self.requires)?$a:[]},TMP_Compiler_requires_29.$$arity=0);Opal.defn(self,"$required_trees",TMP_Compiler_required_trees_30=function $$required_trees(){var $a,self=this;return self.required_trees=$truthy($a=self.required_trees)?$a:[]},TMP_Compiler_required_trees_30.$$arity=0);Opal.defn(self,"$returns",TMP_Compiler_returns_35=function $$returns(sexp){var $a,$b,TMP_31,TMP_32,TMP_33,TMP_34,self=this,$case=nil,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,strs=nil,multiline=nil,first_child=nil,rest_children=nil,old_value=nil,cond=nil,true_body=nil,false_body=nil;if($truthy(sexp)){}else{return self.$returns(self.$s("nil"))}return function(){$case=sexp.$type();if("undef"["$==="]($case)){return self.$returns(self.$s("begin",sexp,self.$s("nil")))}else if("break"["$==="]($case)||"next"["$==="]($case)||"redo"["$==="]($case)){return sexp}else if("yield"["$==="]($case)){return sexp.$updated("returnable_yield",nil)}else if("when"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(when_sexp)).concat([self.$returns(then_sexp)]))}else if("rescue"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),body_sexp=$a[0]==null?nil:$a[0],$b=$a.length-1,$b=$b<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=$a[$b]==null?nil:$a[$b],$a;resbodies=$send(resbodies,"map",[],(TMP_31=function(resbody){var self=TMP_31.$$s||this;if(resbody==null)resbody=nil;return self.$returns(resbody)},TMP_31.$$s=self,TMP_31.$$arity=1,TMP_31));if($truthy(else_sexp)){else_sexp=self.$returns(else_sexp)}return sexp.$updated(nil,[self.$returns(body_sexp)].concat(Opal.to_a(resbodies)).concat([else_sexp]))}else if("resbody"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),klass=$a[0]==null?nil:$a[0],lvar=$a[1]==null?nil:$a[1],body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[klass,lvar,self.$returns(body)])}else if("ensure"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),rescue_sexp=$a[0]==null?nil:$a[0],ensure_body=$a[1]==null?nil:$a[1],$a;sexp=sexp.$updated(nil,[self.$returns(rescue_sexp),ensure_body]);return self.$s("js_return",sexp)}else if("begin"["$==="]($case)||"kwbegin"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),$b=$a.length-1,$b=$b<0?0:$b,rest=$slice.call($a,0,$b),last=$a[$b]==null?nil:$a[$b],$a;return sexp.$updated(nil,[].concat(Opal.to_a(rest)).concat([self.$returns(last)]))}else if("while"["$==="]($case)||"until"["$==="]($case)||"while_post"["$==="]($case)||"until_post"["$==="]($case)){return sexp}else if("return"["$==="]($case)||"js_return"["$==="]($case)||"returnable_yield"["$==="]($case)){return sexp}else if("xstr"["$==="]($case)){if($truthy(sexp.$children()["$any?"]())){strs=$send($send(sexp.$children(),"select",[],(TMP_32=function(child){var self=TMP_32.$$s||this;if(child==null)child=nil;return child.$type()["$=="]("str")},TMP_32.$$s=self,TMP_32.$$arity=1,TMP_32)),"map",[],(TMP_33=function(child){var self=TMP_33.$$s||this;if(child==null)child=nil;return child.$children()["$[]"](0)},TMP_33.$$s=self,TMP_33.$$arity=1,TMP_33));multiline=$send(strs,"any?",[],(TMP_34=function(str){var self=TMP_34.$$s||this;if(str==null)str=nil;return str["$end_with?"](";\n")},TMP_34.$$s=self,TMP_34.$$arity=1,TMP_34));$a=[].concat(Opal.to_a(sexp)),first_child=$a[0]==null?nil:$a[0],rest_children=$slice.call($a,1),$a;if($truthy(multiline)){return sexp}else if(first_child.$type()["$=="]("str")){old_value=first_child.$children()["$[]"](0);if($truthy(old_value["$include?"]("return"))){return sexp}else{first_child=self.$s("js_return",first_child);return sexp.$updated(nil,[first_child].concat(Opal.to_a(rest_children)))}}else{return self.$s("js_return",sexp)}}else{return self.$returns(self.$s("str",""))}}else if("if"["$==="]($case)){$a=[].concat(Opal.to_a(sexp)),cond=$a[0]==null?nil:$a[0],true_body=$a[1]==null?nil:$a[1],false_body=$a[2]==null?nil:$a[2],$a;return sexp.$updated(nil,[cond,self.$returns(true_body),self.$returns(false_body)])}else{return self.$s("js_return",sexp).$updated(nil,nil,$hash2(["location"],{location:sexp.$loc()}))}}()},TMP_Compiler_returns_35.$$arity=1);return(Opal.defn(self,"$handle_block_given_call",TMP_Compiler_handle_block_given_call_36=function $$handle_block_given_call(sexp){var $a,self=this,scope=nil;self.scope["$uses_block!"]();if($truthy(self.scope.$block_name())){return self.$fragment(""+"("+self.scope.$block_name()+" !== nil)",self.$scope(),sexp)}else if($truthy($truthy($a=scope=self.scope.$find_parent_def())?scope.$block_name():$a)){return self.$fragment(""+"("+scope.$block_name()+" !== nil)",scope,sexp)}else{return self.$fragment("false",scope,sexp)}},TMP_Compiler_handle_block_given_call_36.$$arity=1),nil)&&"handle_block_given_call"})($nesting[0],null,$nesting)}($nesting[0],$nesting)};Opal.modules["opal/erb"]=function(Opal){function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$gvars=Opal.gvars;Opal.add_stubs(["$require","$compile","$new","$fix_quotes","$find_contents","$find_code","$wrap_compiled","$require_erb","$prepared_source","$gsub","$+","$=~","$sub"]);self.$require("opal/compiler");return function($base,$parent_nesting){var $Opal,self=$Opal=$module($base,"Opal");var def=self.$$proto,$nesting=[self].concat($parent_nesting);(function($base,$parent_nesting){var $ERB,self=$ERB=$module($base,"ERB");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_ERB_compile_1;Opal.defs(self,"$compile",TMP_ERB_compile_1=function $$compile(source,file_name){var self=this;if(file_name==null){file_name="(erb)"}return Opal.const_get_relative($nesting,"Compiler").$new(source,file_name).$compile()},TMP_ERB_compile_1.$$arity=-2);(function($base,$super,$parent_nesting){function $Compiler(){}var self=$Compiler=$klass($base,$super,"Compiler",$Compiler);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Compiler_initialize_2,TMP_Compiler_prepared_source_3,TMP_Compiler_compile_4,TMP_Compiler_fix_quotes_5,TMP_Compiler_require_erb_6,TMP_Compiler_find_contents_8,TMP_Compiler_find_code_10,TMP_Compiler_wrap_compiled_11;def.prepared_source=def.source=def.file_name=nil;Opal.const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/);Opal.defn(self,"$initialize",TMP_Compiler_initialize_2=function $$initialize(source,file_name){var $a,self=this;if(file_name==null){file_name="(erb)"}return $a=[source,file_name,source],self.source=$a[0],self.file_name=$a[1],self.result=$a[2],$a},TMP_Compiler_initialize_2.$$arity=-2);Opal.defn(self,"$prepared_source",TMP_Compiler_prepared_source_3=function $$prepared_source(){var $a,self=this,source=nil;return self.prepared_source=$truthy($a=self.prepared_source)?$a:(source=self.source,source=self.$fix_quotes(source),source=self.$find_contents(source),source=self.$find_code(source),source=self.$wrap_compiled(source),source=self.$require_erb(source),source)},TMP_Compiler_prepared_source_3.$$arity=0);Opal.defn(self,"$compile",TMP_Compiler_compile_4=function $$compile(){var self=this;return Opal.const_get_relative($nesting,"Opal").$compile(self.$prepared_source())},TMP_Compiler_compile_4.$$arity=0);Opal.defn(self,"$fix_quotes",TMP_Compiler_fix_quotes_5=function $$fix_quotes(result){var self=this;return result.$gsub('"','\\"')},TMP_Compiler_fix_quotes_5.$$arity=1);Opal.defn(self,"$require_erb",TMP_Compiler_require_erb_6=function $$require_erb(result){var self=this;return $rb_plus('require "erb";',result)},TMP_Compiler_require_erb_6.$$arity=1);Opal.defn(self,"$find_contents",TMP_Compiler_find_contents_8=function $$find_contents(result){var TMP_7,self=this;return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(TMP_7=function(){var self=TMP_7.$$s||this,$a,inner=nil;inner=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$gsub(/\\'/,"'").$gsub(/\\"/,'"');if($truthy(inner["$=~"](Opal.const_get_relative($nesting,"BLOCK_EXPR")))){return""+'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("'}else{return""+'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}},TMP_7.$$s=self,TMP_7.$$arity=0,TMP_7))},TMP_Compiler_find_contents_8.$$arity=1);Opal.defn(self,"$find_code",TMP_Compiler_find_code_10=function $$find_code(result){var TMP_9,self=this;return $send(result,"gsub",[/<%([\s\S]+?)%>/],(TMP_9=function(){var self=TMP_9.$$s||this,$a,inner=nil;inner=(($a=$gvars["~"])===nil?nil:$a["$[]"](1)).$gsub(/\\"/,'"');return""+'")\n'+inner+'\noutput_buffer.append("'},TMP_9.$$s=self,TMP_9.$$arity=0,TMP_9))},TMP_Compiler_find_code_10.$$arity=1);return(Opal.defn(self,"$wrap_compiled",TMP_Compiler_wrap_compiled_11=function $$wrap_compiled(result){var self=this,path=nil;path=self.file_name.$sub(new RegExp(""+"\\.opalerb"+Opal.const_get_relative($nesting,"REGEXP_END")),"");return result=""+"Template.new('"+path+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'},TMP_Compiler_wrap_compiled_11.$$arity=1),nil)&&"wrap_compiled"})($nesting[0],null,$nesting)})($nesting[0],$nesting)}($nesting[0],$nesting)};Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$hash2=Opal.hash2;Opal.add_stubs(["$require","$coerce_to!","$merge","$compile","$eval"]);self.$require("opal/compiler");self.$require("opal/erb");self.$require("opal/version");(function($base,$parent_nesting){var $Kernel,self=$Kernel=$module($base,"Kernel");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Kernel_eval_1,TMP_Kernel_require_remote_2;Opal.defn(self,"$eval",TMP_Kernel_eval_1=function(str){var self=this,default_eval_options=nil,compiling_options=nil,code=nil;str=Opal.const_get_relative($nesting,"Opal")["$coerce_to!"](str,Opal.const_get_relative($nesting,"String"),"to_str");default_eval_options=$hash2(["file","eval"],{file:"(eval)",eval:true});compiling_options=Opal.hash({arity_check:false}).$merge(default_eval_options);code=Opal.const_get_relative($nesting,"Opal").$compile(str,compiling_options);return function(self){return eval(code)}(self)},TMP_Kernel_eval_1.$$arity=1);Opal.defn(self,"$require_remote",TMP_Kernel_require_remote_2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_Kernel_require_remote_2.$$arity=1)})($nesting[0],$nesting);Opal.compile=function(str,options){if(options){options=Opal.hash(options)}return Opal.Opal.$compile(str,options)};Opal["eval"]=function(str,options){return eval(Opal.compile(str,options))};function run_ruby_scripts(){var tag,tags=document.getElementsByTagName("script");for(var i=0,len=tags.length;i>","$exception?","$[]","$resolved?","$rejected?","$error","$include?","$action","$realized?","$raise","$^","$call","$resolve!","$exception!","$any?","$each","$reject!","$there_can_be_only_one!","$then","$to_proc","$fail","$always","$trace","$class","$object_id","$+","$inspect","$act?","$nil?","$prev","$push","$concat","$it","$proc","$reverse","$pop","$<=","$length","$shift","$-","$wait","$map","$reduce","$try","$tap","$all?","$find"]);return function($base,$super,$parent_nesting){function $Promise(){}var self=$Promise=$klass($base,$super,"Promise",$Promise);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Promise_value_1,TMP_Promise_error_2,TMP_Promise_when_3,TMP_Promise_initialize_4,TMP_Promise_value_5,TMP_Promise_act$q_6,TMP_Promise_action_7,TMP_Promise_exception$q_8,TMP_Promise_realized$q_9,TMP_Promise_resolved$q_10,TMP_Promise_rejected$q_11,TMP_Promise_$_12,TMP_Promise_$lt$lt_13,TMP_Promise_$gt$gt_14,TMP_Promise_resolve_15,TMP_Promise_resolve$B_17,TMP_Promise_reject_18,TMP_Promise_reject$B_20,TMP_Promise_exception$B_21,TMP_Promise_then_22,TMP_Promise_then$B_23,TMP_Promise_fail_24,TMP_Promise_fail$B_25,TMP_Promise_always_26,TMP_Promise_always$B_27,TMP_Promise_trace_28,TMP_Promise_trace$B_29,TMP_Promise_there_can_be_only_one$B_30,TMP_Promise_inspect_31;def.value=def.action=def.exception=def.realized=def.next=def.delayed=def.error=def.prev=nil;Opal.defs(self,"$value",TMP_Promise_value_1=function $$value(value){var self=this;return self.$new().$resolve(value)},TMP_Promise_value_1.$$arity=1);Opal.defs(self,"$error",TMP_Promise_error_2=function $$error(value){var self=this;return self.$new().$reject(value)},TMP_Promise_error_2.$$arity=1);Opal.defs(self,"$when",TMP_Promise_when_3=function $$when($a_rest){var self=this,promises;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}promises=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){promises[$arg_idx-0]=arguments[$arg_idx]}return Opal.const_get_relative($nesting,"When").$new(promises)},TMP_Promise_when_3.$$arity=-1);self.$attr_reader("error","prev","next");Opal.defn(self,"$initialize",TMP_Promise_initialize_4=function $$initialize(action){var self=this;if(action==null){action=$hash2([],{})}self.action=action;self.realized=false;self.exception=false;self.value=nil;self.error=nil;self.delayed=false;self.prev=nil;return self.next=[]},TMP_Promise_initialize_4.$$arity=-1);Opal.defn(self,"$value",TMP_Promise_value_5=function $$value(){var self=this;if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](self.value))){return self.value.$value()}else{return self.value}},TMP_Promise_value_5.$$arity=0);Opal.defn(self,"$act?",TMP_Promise_act$q_6=function(){var $a,self=this;return $truthy($a=self.action["$has_key?"]("success"))?$a:self.action["$has_key?"]("always")},TMP_Promise_act$q_6.$$arity=0);Opal.defn(self,"$action",TMP_Promise_action_7=function $$action(){var self=this;return self.action.$keys()},TMP_Promise_action_7.$$arity=0);Opal.defn(self,"$exception?",TMP_Promise_exception$q_8=function(){var self=this;return self.exception},TMP_Promise_exception$q_8.$$arity=0);Opal.defn(self,"$realized?",TMP_Promise_realized$q_9=function(){var self=this;return self.realized["$!"]()["$!"]()},TMP_Promise_realized$q_9.$$arity=0);Opal.defn(self,"$resolved?",TMP_Promise_resolved$q_10=function(){var self=this;return self.realized["$=="]("resolve")},TMP_Promise_resolved$q_10.$$arity=0);Opal.defn(self,"$rejected?",TMP_Promise_rejected$q_11=function(){var self=this;return self.realized["$=="]("reject")},TMP_Promise_rejected$q_11.$$arity=0);Opal.defn(self,"$^",TMP_Promise_$_12=function(promise){var self=this;promise["$<<"](self);self["$>>"](promise);return promise},TMP_Promise_$_12.$$arity=1);Opal.defn(self,"$<<",TMP_Promise_$lt$lt_13=function(promise){var self=this;self.prev=promise;return self},TMP_Promise_$lt$lt_13.$$arity=1);Opal.defn(self,"$>>",TMP_Promise_$gt$gt_14=function(promise){var $a,self=this;self.next["$<<"](promise);if($truthy(self["$exception?"]())){promise.$reject(self.delayed["$[]"](0))}else if($truthy(self["$resolved?"]())){promise.$resolve(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$value()}return nil}())}else if($truthy(self["$rejected?"]())){if($truthy($truthy($a=self.action["$has_key?"]("failure")["$!"]())?$a:Opal.const_get_relative($nesting,"Promise")["$==="](function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.error}return nil}()))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}else if($truthy(promise.$action()["$include?"]("always"))){promise.$reject(function(){if($truthy(self.delayed)){return self.delayed["$[]"](0)}else{return self.$error()}return nil}())}}return self},TMP_Promise_$gt$gt_14.$$arity=1);Opal.defn(self,"$resolve",TMP_Promise_resolve_15=function $$resolve(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{if($truthy(block=$truthy($a=self.action["$[]"]("success"))?$a:self.action["$[]"]("always"))){value=block.$call(value)}self["$resolve!"](value)}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},TMP_Promise_resolve_15.$$arity=-1);Opal.defn(self,"$resolve!",TMP_Promise_resolve$B_17=function(value){var TMP_16,self=this;self.realized="resolve";self.value=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],(TMP_16=function(p){var self=TMP_16.$$s||this;if(p==null)p=nil;return p.$resolve(value)},TMP_16.$$s=self,TMP_16.$$arity=1,TMP_16))}else{return self.delayed=[value]}},TMP_Promise_resolve$B_17.$$arity=1);Opal.defn(self,"$reject",TMP_Promise_reject_18=function $$reject(value){var $a,self=this,block=nil,e=nil;if(value==null){value=nil}if($truthy(self["$realized?"]())){self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"the promise has already been realized")}if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](value))){return value["$<<"](self.prev)["$^"](self)}try{if($truthy(block=$truthy($a=self.action["$[]"]("failure"))?$a:self.action["$[]"]("always"))){value=block.$call(value)}if($truthy(self.action["$has_key?"]("always"))){self["$resolve!"](value)}else{self["$reject!"](value)}}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){e=$err;try{self["$exception!"](e)}finally{Opal.pop_exception()}}else{throw $err}}return self},TMP_Promise_reject_18.$$arity=-1);Opal.defn(self,"$reject!",TMP_Promise_reject$B_20=function(value){var TMP_19,self=this;self.realized="reject";self.error=value;if($truthy(self.next["$any?"]())){return $send(self.next,"each",[],(TMP_19=function(p){var self=TMP_19.$$s||this;if(p==null)p=nil;return p.$reject(value)},TMP_19.$$s=self,TMP_19.$$arity=1,TMP_19))}else{return self.delayed=[value]}},TMP_Promise_reject$B_20.$$arity=1);Opal.defn(self,"$exception!",TMP_Promise_exception$B_21=function(error){var self=this;self.exception=true;return self["$reject!"](error)},TMP_Promise_exception$B_21.$$arity=1);Opal.defn(self,"$then",TMP_Promise_then_22=function $$then(){var self=this,$iter=TMP_Promise_then_22.$$p,block=$iter||nil;if($iter)TMP_Promise_then_22.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["success"],{success:block})))},TMP_Promise_then_22.$$arity=0);Opal.defn(self,"$then!",TMP_Promise_then$B_23=function(){var self=this,$iter=TMP_Promise_then$B_23.$$p,block=$iter||nil;if($iter)TMP_Promise_then$B_23.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"then",[],block.$to_proc())},TMP_Promise_then$B_23.$$arity=0);Opal.alias(self,"do","then");Opal.alias(self,"do!","then!");Opal.defn(self,"$fail",TMP_Promise_fail_24=function $$fail(){var self=this,$iter=TMP_Promise_fail_24.$$p,block=$iter||nil;if($iter)TMP_Promise_fail_24.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["failure"],{failure:block})))},TMP_Promise_fail_24.$$arity=0);Opal.defn(self,"$fail!",TMP_Promise_fail$B_25=function(){var self=this,$iter=TMP_Promise_fail$B_25.$$p,block=$iter||nil;if($iter)TMP_Promise_fail$B_25.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"fail",[],block.$to_proc())},TMP_Promise_fail$B_25.$$arity=0);Opal.alias(self,"rescue","fail");Opal.alias(self,"catch","fail");Opal.alias(self,"rescue!","fail!");Opal.alias(self,"catch!","fail!");Opal.defn(self,"$always",TMP_Promise_always_26=function $$always(){var self=this,$iter=TMP_Promise_always_26.$$p,block=$iter||nil;if($iter)TMP_Promise_always_26.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Promise").$new($hash2(["always"],{always:block})))},TMP_Promise_always_26.$$arity=0);Opal.defn(self,"$always!",TMP_Promise_always$B_27=function(){var self=this,$iter=TMP_Promise_always$B_27.$$p,block=$iter||nil;if($iter)TMP_Promise_always$B_27.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"always",[],block.$to_proc())},TMP_Promise_always$B_27.$$arity=0);Opal.alias(self,"finally","always");Opal.alias(self,"ensure","always");Opal.alias(self,"finally!","always!");Opal.alias(self,"ensure!","always!");Opal.defn(self,"$trace",TMP_Promise_trace_28=function $$trace(depth){var self=this,$iter=TMP_Promise_trace_28.$$p,block=$iter||nil;if(depth==null){depth=nil}if($iter)TMP_Promise_trace_28.$$p=null;return self["$^"](Opal.const_get_relative($nesting,"Trace").$new(depth,block))},TMP_Promise_trace_28.$$arity=-1);Opal.defn(self,"$trace!",TMP_Promise_trace$B_29=function($a_rest){var self=this,args,$iter=TMP_Promise_trace$B_29.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_Promise_trace$B_29.$$p=null;self["$there_can_be_only_one!"]();return $send(self,"trace",Opal.to_a(args),block.$to_proc())},TMP_Promise_trace$B_29.$$arity=-1);Opal.defn(self,"$there_can_be_only_one!",TMP_Promise_there_can_be_only_one$B_30=function(){var self=this;if($truthy(self.next["$any?"]())){return self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"a promise has already been chained")}else{return nil}},TMP_Promise_there_can_be_only_one$B_30.$$arity=0);Opal.defn(self,"$inspect",TMP_Promise_inspect_31=function $$inspect(){var $a,self=this,result=nil;result=""+"#<"+self.$class()+"("+self.$object_id()+")";if($truthy(self.next["$any?"]())){result=$rb_plus(result,""+" >> "+self.next.$inspect())}if($truthy(self["$realized?"]())){result=$rb_plus(result,""+": "+($truthy($a=self.value)?$a:self.error).$inspect()+">")}else{result=$rb_plus(result,">")}return result},TMP_Promise_inspect_31.$$arity=0);(function($base,$super,$parent_nesting){function $Trace(){}var self=$Trace=$klass($base,$super,"Trace",$Trace);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Trace_it_32,TMP_Trace_initialize_33;Opal.defs(self,"$it",TMP_Trace_it_32=function $$it(promise){var $a,self=this,current=nil,prev=nil;current=[];if($truthy($truthy($a=promise["$act?"]())?$a:promise.$prev()["$nil?"]())){current.$push(promise.$value())}if($truthy(prev=promise.$prev())){return current.$concat(self.$it(prev))}else{return current}},TMP_Trace_it_32.$$arity=1);return(Opal.defn(self,"$initialize",TMP_Trace_initialize_33=function $$initialize(depth,block){var TMP_34,self=this,$iter=TMP_Trace_initialize_33.$$p,$yield=$iter||nil;if($iter)TMP_Trace_initialize_33.$$p=null;self.depth=depth;return $send(self,Opal.find_super_dispatcher(self,"initialize",TMP_Trace_initialize_33,false),[$hash2(["success"],{success:$send(self,"proc",[],(TMP_34=function(){var self=TMP_34.$$s||this,$a,trace=nil;trace=Opal.const_get_relative($nesting,"Trace").$it(self).$reverse();trace.$pop();if($truthy($truthy($a=depth)?$rb_le(depth,trace.$length()):$a)){trace.$shift($rb_minus(trace.$length(),depth))}return $send(block,"call",Opal.to_a(trace))},TMP_34.$$s=self,TMP_34.$$arity=0,TMP_34))})],null)},TMP_Trace_initialize_33.$$arity=2),nil)&&"initialize"})($nesting[0],self,$nesting);return function($base,$super,$parent_nesting){function $When(){}var self=$When=$klass($base,$super,"When",$When);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_When_initialize_35,TMP_When_each_37,TMP_When_collect_39,TMP_When_inject_41,TMP_When_wait_44,TMP_When_$gt$gt_45,TMP_When_try_47;def.wait=nil;Opal.defn(self,"$initialize",TMP_When_initialize_35=function $$initialize(promises){var TMP_36,self=this,$iter=TMP_When_initialize_35.$$p,$yield=$iter||nil;if(promises==null){promises=[]}if($iter)TMP_When_initialize_35.$$p=null;$send(self,Opal.find_super_dispatcher(self,"initialize",TMP_When_initialize_35,false),[],null);self.wait=[];return $send(promises,"each",[],(TMP_36=function(promise){var self=TMP_36.$$s||this;if(promise==null)promise=nil;return self.$wait(promise)},TMP_36.$$s=self,TMP_36.$$arity=1,TMP_36))},TMP_When_initialize_35.$$arity=-1);Opal.defn(self,"$each",TMP_When_each_37=function $$each(){var TMP_38,self=this,$iter=TMP_When_each_37.$$p,block=$iter||nil;if($iter)TMP_When_each_37.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],(TMP_38=function(values){var self=TMP_38.$$s||this;if(values==null)values=nil;return $send(values,"each",[],block.$to_proc())},TMP_38.$$s=self,TMP_38.$$arity=1,TMP_38))},TMP_When_each_37.$$arity=0);Opal.defn(self,"$collect",TMP_When_collect_39=function $$collect(){var TMP_40,self=this,$iter=TMP_When_collect_39.$$p,block=$iter||nil;if($iter)TMP_When_collect_39.$$p=null;if($truthy(block)){}else{self.$raise(Opal.const_get_relative($nesting,"ArgumentError"),"no block given")}return $send(self,"then",[],(TMP_40=function(values){var self=TMP_40.$$s||this;if(values==null)values=nil;return Opal.const_get_relative($nesting,"When").$new($send(values,"map",[],block.$to_proc()))},TMP_40.$$s=self,TMP_40.$$arity=1,TMP_40))},TMP_When_collect_39.$$arity=0);Opal.defn(self,"$inject",TMP_When_inject_41=function $$inject($a_rest){var TMP_42,self=this,args,$iter=TMP_When_inject_41.$$p,block=$iter||nil;var $args_len=arguments.length,$rest_len=$args_len-0;if($rest_len<0){$rest_len=0}args=new Array($rest_len);for(var $arg_idx=0;$arg_idx<$args_len;$arg_idx++){args[$arg_idx-0]=arguments[$arg_idx]}if($iter)TMP_When_inject_41.$$p=null;return $send(self,"then",[],(TMP_42=function(values){var self=TMP_42.$$s||this;if(values==null)values=nil;return $send(values,"reduce",Opal.to_a(args),block.$to_proc())},TMP_42.$$s=self,TMP_42.$$arity=1,TMP_42))},TMP_When_inject_41.$$arity=-1);Opal.alias(self,"map","collect");Opal.alias(self,"reduce","inject");Opal.defn(self,"$wait",TMP_When_wait_44=function $$wait(promise){var TMP_43,self=this;if($truthy(Opal.const_get_relative($nesting,"Promise")["$==="](promise))){}else{promise=Opal.const_get_relative($nesting,"Promise").$value(promise)}if($truthy(promise["$act?"]())){promise=promise.$then()}self.wait["$<<"](promise);$send(promise,"always",[],(TMP_43=function(){var self=TMP_43.$$s||this;if(self.next==null)self.next=nil;if($truthy(self.next["$any?"]())){return self.$try()}else{return nil}},TMP_43.$$s=self,TMP_43.$$arity=0,TMP_43));return self},TMP_When_wait_44.$$arity=1);Opal.alias(self,"and","wait");Opal.defn(self,"$>>",TMP_When_$gt$gt_45=function($a_rest){var TMP_46,self=this,$iter=TMP_When_$gt$gt_45.$$p,$yield=$iter||nil,$zuper=nil,$zuper_i=nil,$zuper_ii=nil;if($iter)TMP_When_$gt$gt_45.$$p=null;for($zuper_i=0,$zuper_ii=arguments.length,$zuper=new Array($zuper_ii);$zuper_i<$zuper_ii;$zuper_i++){$zuper[$zuper_i]=arguments[$zuper_i]}return $send($send(self,Opal.find_super_dispatcher(self,">>",TMP_When_$gt$gt_45,false),$zuper,$iter),"tap",[],(TMP_46=function(){var self=TMP_46.$$s||this;return self.$try()},TMP_46.$$s=self,TMP_46.$$arity=0,TMP_46))},TMP_When_$gt$gt_45.$$arity=-1);return(Opal.defn(self,"$try",TMP_When_try_47=function(){var self=this,promise=nil;if($truthy($send(self.wait,"all?",[],"realized?".$to_proc()))){if($truthy(promise=$send(self.wait,"find",[],"rejected?".$to_proc()))){return self.$reject(promise.$error())}else{return self.$resolve($send(self.wait,"map",[],"value".$to_proc()))}}else{return nil}},TMP_When_try_47.$$arity=0),nil)&&"try"}($nesting[0],self,$nesting)}($nesting[0],null,$nesting)};Opal.modules["time"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$strftime"]);return function($base,$super,$parent_nesting){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_Time_parse_1,TMP_Time_iso8601_2;Opal.defs(self,"$parse",TMP_Time_parse_1=function $$parse(str){var self=this;return new Date(Date.parse(str))},TMP_Time_parse_1.$$arity=1);return(Opal.defn(self,"$iso8601",TMP_Time_iso8601_2=function $$iso8601(){var self=this;return self.$strftime("%FT%T%z")},TMP_Time_iso8601_2.$$arity=0),nil)&&"iso8601"}($nesting[0],null,$nesting)};(function(Opal){function $rb_minus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs-rhs:lhs["$-"](rhs)}function $rb_ge(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs>=rhs:lhs["$>="](rhs)}function $rb_plus(lhs,rhs){return typeof lhs==="number"&&typeof rhs==="number"?lhs+rhs:lhs["$+"](rhs)}var TMP_console_1,TMP_require_remote_2,self=Opal.top,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$module=Opal.module,$truthy=Opal.truthy,$send=Opal.send;Opal.add_stubs(["$require","$eval","$include","$call","$name","$class","$Array","$backtrace","$raise","$new","$[]=","$-","$join","$sort","$keys","$>=","$[]","$inspect","$+"]);self.$require("opal");self.$require("console");Opal.defn(Opal.Object,"$console",TMP_console_1=function $$console(){var self=this;if($gvars.console==null)$gvars.console=nil;return $gvars.console},TMP_console_1.$$arity=0);self.$require("dxopal/constants/colors");self.$require("dxopal/font");self.$require("dxopal/input");self.$require("dxopal/input/key_codes");self.$require("dxopal/image");self.$require("dxopal/sound");self.$require("dxopal/sound_effect");self.$require("dxopal/sprite");self.$require("dxopal/window");self.$require("dxopal/version");self.$require("opal-parser");Opal.defn(Opal.Object,"$require_remote",TMP_require_remote_2=function $$require_remote(url){var self=this;var r=new XMLHttpRequest;r.overrideMimeType("text/plain");r.open("GET",url,false);r.send("");return self.$eval(r.responseText)},TMP_require_remote_2.$$arity=1);self.$require("singleton");self.$require("delegate");self.$require("forwardable");self.$require("pp");self.$require("promise");self.$require("set");self.$require("time");(function($base,$parent_nesting){var $DXOpal,self=$DXOpal=$module($base,"DXOpal");var def=self.$$proto,$nesting=[self].concat($parent_nesting),TMP_DXOpal_dump_error_3,TMP_DXOpal_4,TMP_DXOpal_p__5;self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Constants"),"Colors"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Input"),"KeyCodes"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"Input"),"MouseCodes"));self.$include(Opal.const_get_qualified(Opal.const_get_qualified(Opal.const_get_relative($nesting,"DXOpal"),"SoundEffect"),"WaveTypes"));Opal.defs(self,"$dump_error",TMP_DXOpal_dump_error_3=function $$dump_error(){var self=this,$iter=TMP_DXOpal_dump_error_3.$$p,block=$iter||nil,ex=nil,div=nil;if($iter)TMP_DXOpal_dump_error_3.$$p=null;try{return block.$call()}catch($err){if(Opal.rescue($err,[Opal.const_get_relative($nesting,"Exception")])){ex=$err;try{div=document.getElementById("dxopal-errors");if($truthy(div&&!ex.DXOpalPrinted)){div.textContent="ERROR: "+ex.$class().$name();var ul=document.createElement("ul");self.$Array(ex.$backtrace()).forEach(function(line){var li=document.createElement("li");li.textContent=line;ul.appendChild(li)});div.appendChild(ul);ex.DXOpalPrinted=true}return self.$raise(ex)}finally{Opal.pop_exception()}}else{throw $err}}},TMP_DXOpal_dump_error_3.$$arity=0);Opal.const_set($nesting[0],"P_CT",$send(Opal.const_get_relative($nesting,"Hash"),"new",[],(TMP_DXOpal_4=function(h,k){var self=TMP_DXOpal_4.$$s||this,$writer=nil;if(h==null)h=nil;if(k==null)k=nil;$writer=[k,0];$send(h,"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_DXOpal_4.$$s=self,TMP_DXOpal_4.$$arity=2,TMP_DXOpal_4)));Opal.defn(self,"$p_",TMP_DXOpal_p__5=function $$p_(hash,n){var self=this,key=nil,$writer=nil;if(n==null){n=10}key=hash.$keys().$sort().$join();if($truthy($rb_ge(Opal.const_get_relative($nesting,"P_CT")["$[]"](key),n))){return nil}console.log(hash.$inspect());$writer=[key,$rb_plus(Opal.const_get_relative($nesting,"P_CT")["$[]"](key),1)];$send(Opal.const_get_relative($nesting,"P_CT"),"[]=",Opal.to_a($writer));return $writer[$rb_minus($writer["length"],1)]},TMP_DXOpal_p__5.$$arity=-2)})($nesting[0],$nesting);(function(){var P_CT={};Opal.DXOpal.p_=function(key,obj,n){n=n||10;P_CT[key]=P_CT[key]||0;if(P_CT[key]